色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

英創(chuàng)信息技術(shù)工控主板快速GPIO操作介紹

英創(chuàng)信息技術(shù) ? 來源:英創(chuàng)信息技術(shù) ? 作者:英創(chuàng)信息技術(shù) ? 2020-01-17 09:56 ? 次閱讀

英創(chuàng)公司EM928x系列和EM335x系列的工控主板均有32位GPIO0 – GPIO31并且為可獨(dú)立方向可設(shè)置的通用數(shù)字IO,所有GPIO的上電初始狀態(tài)均為輸入狀態(tài)帶上拉電阻。所以在初始化狀態(tài)下,每位GPIO管腳所呈現(xiàn)的電平均為高電平。面對豐富的GPIO資源,許多客戶希望將GPIO利用起來做一下其他的應(yīng)用,比如模擬SPI接口,I2C接口,以及一些總線時(shí)序等,下面就來看看GPIO的操作。

常規(guī)的GPIO操作在英創(chuàng)公司的主板使用手冊中已經(jīng)有了較為詳細(xì)的介紹,下面將主要的步驟例舉出來:

首先需要打開GPIO的設(shè)備文件:
fd = open('/dev/em335x_gpio', O_RDWR);

然后根據(jù)英創(chuàng)公司提供的接口即可實(shí)現(xiàn)對GPIO的操作:
rc = GPIO_OutEnable(fd, 0xffffffff); //使能GPIO
if(rc < 0)
{
printf('GPIO_OutEnable::failed %d\n', rc);
return rc;
}
rc = GPIO_OutClear(fd, GPIO0); //拉低GPIO
if(rc < 0)
{
printf('GPIO_OutClear::failed %d\n', rc);
return rc;
}

這樣通過調(diào)用驅(qū)動(dòng),實(shí)現(xiàn)了對GPIO的控制,但是調(diào)用驅(qū)動(dòng)就存在用戶空間和內(nèi)核空間的數(shù)據(jù)傳輸,還會涉及到系統(tǒng)調(diào)度的問題,所以當(dāng)我們執(zhí)行一次置低置高的操作,經(jīng)測試,大概會用掉2.5μs,波形如下圖:

通過驅(qū)動(dòng)程序操作GPIO的波形

對于一般的應(yīng)用來說,通過驅(qū)動(dòng)來操作GPIO已經(jīng)能夠滿足需求,直接使用英創(chuàng)公司封裝好的接口函數(shù),即可實(shí)現(xiàn)對應(yīng)用程序的開發(fā)。但是當(dāng)需要用GPIO做實(shí)時(shí)性要求較高的應(yīng)用時(shí),簡單的通過驅(qū)動(dòng)來控制GPIO可能就無法實(shí)現(xiàn),比如需要用GPIO來模擬某種時(shí)序,調(diào)用驅(qū)動(dòng)來操作可能就會讓時(shí)序的一個(gè)周期過長,無法滿足時(shí)序的要求。

針對這種情況,英創(chuàng)公司為客戶提供了一種更快速的GPIO 操作方法,即通過內(nèi)存映射的方法來操作GPIO,使用mmap()函數(shù)將GPIO的硬件地址映射到進(jìn)程地址空間,實(shí)現(xiàn)對內(nèi)存物理地址的讀寫,直接控制GPIO的寄存器,這是一種直接操作硬件的方式,避免了用戶進(jìn)程和內(nèi)核進(jìn)程的數(shù)據(jù)交換,極大地提升了效率。

首先將/dev/mem/設(shè)備文件中GPIO的地址映射到用戶進(jìn)程空間的代碼:
void *GPIO_MMAP::gpio_em335x_pin_config(unsigned int BASE)
{
int mem_fd;
void *base;
mem_fd = open('/dev/mem', O_RDWR|O_SYNC);
printf('mem_fd is %d\n', mem_fd);
/* mmap GPIO */
base = mmap(
NULL,//起始地址
GPIO_DEV_SIZE, //映射的文件內(nèi)容的大小
PROT_READ|PROT_WRITE,// 映射區(qū)域可讀可寫
MAP_SHARED,//映射區(qū)域的寫入數(shù)據(jù)會寫回到原來的文件
mem_fd,
BASE//被映射的硬件地址
);
close(mem_fd);
return base;
}

成功執(zhí)行時(shí),mmap()函數(shù)返回被映射區(qū)的指針。普通文件被映射到進(jìn)程地址空間后,進(jìn)程可以像訪問普通內(nèi)存一樣對文件進(jìn)行訪問,不必再調(diào)用read(),write()等操作。只需要使用返回的地址指針在對應(yīng)的寄存器的偏移地址賦值,就可以完成操作。在例程中已經(jīng)將函數(shù)接口引出(詳細(xì)的代碼請參考例程):
GPIO.GPIO_OutEnable(GPIO0);//輸出使能
GPIO.GPIO_OutClear(GPIO0);//置為低電平
GPIO.GPIO_OutSet(GPIO0);//置為高電平

通過這樣的方式實(shí)現(xiàn)GPIO操作,時(shí)序圖如下:

用過內(nèi)存映射操作的GPIO時(shí)序

可以看到,置低置高的操作只用了220ns左右,相比調(diào)用驅(qū)動(dòng)程序所需要的2.5μs,大大的提升了效率,也已經(jīng)達(dá)到了實(shí)時(shí)操作的要求。下面來看一個(gè)實(shí)際的例子,使用GPIO模擬HPI接口的寫時(shí)序,HPI是一個(gè)與主機(jī)通信的并行接口,主要用于DSP與其他總線或CPU進(jìn)行通信,在工業(yè)控制中,HPI接口是很常用的,所以我們就用HPI接口的時(shí)序作為例子,下面這個(gè)HPI時(shí)序有16位數(shù)據(jù)線和12位地址線:

HPI寫時(shí)序圖

時(shí)序要求

我們使用30位GPIO來模擬這個(gè)時(shí)序,將GPIO0~GPIO15作為16為數(shù)據(jù)線,GPIO16~GPIO28作為12為地址線,而GPIO28作為片選,GPIO29作為讀寫控制信號。基本的思路流程為:
①將片選,讀寫信號和地址線置為輸出,并且為高電平。數(shù)據(jù)線置為輸入。
②將數(shù)據(jù)線的寄存器置為需要的值。
③將數(shù)據(jù)線置為輸出。
④拉低讀寫信號線,再拉低片選。
⑤這里可以根據(jù)時(shí)序要求做一點(diǎn)延時(shí),拉高片選,拉高讀寫信號,再將數(shù)據(jù)線置為輸入。

按照這樣操作就基本完成了一次要求的寫時(shí)序,實(shí)現(xiàn)的程序代碼

int GPIO_Write(unsigned int AddrBits, unsigned int DataBits)
{
unsigned int DSetBits,DClearBits;
unsigned int ASetBits,AClearBits;
ASetBits= (AddrBits << 16) & 0x0fff0000 ;  // 地址位為1的位
AClearBits= ~ASetBits ^ 0xf000ffff ;//地址位為0的位
printf('0x0%x\n',AClearBits);
GPIO.GPIO_OutSet(ASetBits);
GPIO.GPIO_OutClear(AClearBits);
DSetBits= DataBits & 0x0000ffff ;//數(shù)據(jù)位為1的位
DClearBits= ~DSetBits ^ 0xffff0000 ;//數(shù)據(jù)位為0的位

GPIO.GPIO_OutSet(DSetBits);
GPIO.GPIO_OutClear(DClearBits);
GPIO.GPIO_OutEnable(0x0000ffff);//設(shè)置數(shù)據(jù)線為輸出

GPIO.GPIO_OutClear(GPIO29);//讀寫信號
GPIO.GPIO_OutClear(GPIO28);//將片選拉低

GPIO.GPIO_OutSet(GPIO28);//將片選拉高
GPIO.GPIO_OutSet(GPIO29);//讀寫信號

GPIO.GPIO_OutDisable(0x0000ffff);//設(shè)置數(shù)據(jù)線為輸入

return 1;
}

執(zhí)行程序,可以看到片選和讀寫信號的時(shí)序?yàn)椋?/p>

片選和讀寫信號的時(shí)序

可以看到一次寫操作的時(shí)間大約在1.25μs,如果是調(diào)用驅(qū)動(dòng)程序控制GPIO來實(shí)現(xiàn)這個(gè)時(shí)序的模擬,那效率就會變低,詳細(xì)的代碼請參考例程。

注意事項(xiàng):我們推薦客戶直接使用例程中引出的接口進(jìn)行操作,不推薦客戶對硬件訪問這一部分代碼進(jìn)行修改,以免在操作的時(shí)候出現(xiàn)無法預(yù)估的錯(cuò)誤。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式主板
    +關(guān)注

    關(guān)注

    7

    文章

    6085

    瀏覽量

    35296
收藏 人收藏

    評論

    相關(guān)推薦

    國產(chǎn)工控主板有什么優(yōu)勢、特點(diǎn)?

    隨著國產(chǎn)工控主板的發(fā)展,國內(nèi)企業(yè)也在不斷開發(fā)新的工控主板,為了滿足國內(nèi)企業(yè)的發(fā)展需求,一些國產(chǎn)工控主板
    的頭像 發(fā)表于 11-15 10:11 ?121次閱讀

    ?什么是國產(chǎn)工控主板,國產(chǎn)工控主板的特點(diǎn)有哪些?

    什么是國產(chǎn)工控主板呢?國產(chǎn)工控主板是工業(yè)計(jì)算機(jī)的主板,是一種計(jì)算機(jī)系統(tǒng)的硬件設(shè)備,是專門為工業(yè)控制場景設(shè)計(jì)和生產(chǎn)的電路板。它在國內(nèi)的研發(fā)和制
    的頭像 發(fā)表于 11-07 10:29 ?171次閱讀

    國產(chǎn)工控主板,信創(chuàng)產(chǎn)業(yè)發(fā)展新引擎

    在當(dāng)今科技飛速發(fā)展的時(shí)代,信創(chuàng)產(chǎn)業(yè)正成為國家戰(zhàn)略的重要支撐。而我們的國產(chǎn)工控主板,以其卓越的性能和可靠的品質(zhì),為信創(chuàng)產(chǎn)業(yè)的發(fā)展注入強(qiáng)大動(dòng)力。國產(chǎn)工控
    的頭像 發(fā)表于 11-06 10:29 ?207次閱讀

    SOC GPIO操作

    GPIO_INTERRUPT_LOW_ENABLE 0x2c 原文標(biāo)題:SOC GPIO操作
    的頭像 發(fā)表于 11-01 11:06 ?139次閱讀

    中科創(chuàng)達(dá)榮獲2024年軟件和信息技術(shù)服務(wù)優(yōu)秀企業(yè)

    及前百家企業(yè)”名單。中科創(chuàng)達(dá)憑借非凡的技術(shù)實(shí)力與持續(xù)的創(chuàng)新能力,成功入選“2024年度軟件和信息技術(shù)服務(wù)競爭力百強(qiáng)企業(yè)”以及“2024年軟件和信息技術(shù)服務(wù)優(yōu)秀企業(yè)”。
    的頭像 發(fā)表于 10-30 11:44 ?462次閱讀

    工控主板有哪些特點(diǎn)?

    ?工控主板是用于工業(yè)控制領(lǐng)域的專用主板,具有以下特點(diǎn): 穩(wěn)定性:工控主板通常經(jīng)過嚴(yán)格的測試和優(yōu)化,具有較高的穩(wěn)定性和可靠性,能夠在惡劣的工業(yè)
    的頭像 發(fā)表于 10-10 08:55 ?291次閱讀

    創(chuàng)國產(chǎn)化背景下的工控主板發(fā)展現(xiàn)狀

    創(chuàng),是信息技術(shù)應(yīng)用創(chuàng)新產(chǎn)業(yè)的簡稱,于2016年“信創(chuàng)工委會”(信息技術(shù)應(yīng)用創(chuàng)新工作委員會)提出,目的就是要推動(dòng)我們國內(nèi)軟硬件關(guān)鍵技術(shù)的研發(fā)
    的頭像 發(fā)表于 09-21 16:15 ?380次閱讀

    工控主板在環(huán)保智能設(shè)備中的應(yīng)用

    工控主板在環(huán)保智能設(shè)備中的應(yīng)用,對于環(huán)境監(jiān)測、資源管理、污染控制等方面起到了至關(guān)重要的作用。以下是工控主板在環(huán)保智能設(shè)備中的一些具體應(yīng)用:
    的頭像 發(fā)表于 07-17 15:54 ?316次閱讀
    <b class='flag-5'>工控</b><b class='flag-5'>主板</b>在環(huán)保智能設(shè)備中的應(yīng)用

    淺析安卓工控主板的優(yōu)勢

    安卓工控主板作為專為工業(yè)控制領(lǐng)域設(shè)計(jì)的硬件平臺,相較于普通商用主板,擁有諸多優(yōu)勢,以滿足工業(yè)環(huán)境對穩(wěn)定、可靠、長期運(yùn)行的嚴(yán)格要求。以下是安卓工控主板
    的頭像 發(fā)表于 06-27 14:50 ?324次閱讀

    使用工控主板時(shí)該注意哪些事項(xiàng)?

    最近大家都在頻繁問一個(gè)問題就是工控主板在什么人為情況下容易出現(xiàn)故障,從而造成工控主板的損壞,那今天小編就來講講,我們在使用工控
    的頭像 發(fā)表于 06-05 16:01 ?402次閱讀
    使用<b class='flag-5'>工控</b><b class='flag-5'>主板</b>時(shí)該注意哪些事項(xiàng)?

    工控主板容易出現(xiàn)故障的原因有哪些?

    最近大家都在頻繁問一個(gè)問題就是工控主板在什么人為情況下容易出現(xiàn)故障,從而造成工控主板的損壞,那今天小編就來講講,我們在使用工控
    的頭像 發(fā)表于 05-17 10:57 ?370次閱讀

    工控主板的性能指標(biāo)有哪些?

    工控主板是工業(yè)控制領(lǐng)域中的關(guān)鍵組成部分,它承載著工控系統(tǒng)的核心功能。因此,工控主板的性能指標(biāo)是評估其質(zhì)量和性能的重要標(biāo)準(zhǔn)。本文將
    的頭像 發(fā)表于 05-10 16:27 ?900次閱讀
    <b class='flag-5'>工控</b><b class='flag-5'>主板</b>的性能指標(biāo)有哪些?

    工控主板和普通主板的區(qū)別有哪些

    工控主板和普通主板是兩種在計(jì)算機(jī)硬件領(lǐng)域中常見的主板類型,它們在設(shè)計(jì)、功能和用途上有著明顯的區(qū)別。工控
    的頭像 發(fā)表于 04-25 16:54 ?1269次閱讀
    <b class='flag-5'>工控</b><b class='flag-5'>主板</b>和普通<b class='flag-5'>主板</b>的區(qū)別有哪些

    購買工控主板的三大誤區(qū)

    最近有很多人問我什么樣的工控主板算好的,有沒有一個(gè)統(tǒng)一的標(biāo)準(zhǔn)。工控主板作為整機(jī)的核心組成部分,在性能穩(wěn)定上有著至關(guān)重要的作用,那今天小編就來給大家講解一下在購買
    的頭像 發(fā)表于 04-16 16:40 ?337次閱讀
    主站蜘蛛池模板: 国产精品嫩草影院| 好色女博士| 黄色xxxxxx| 捏奶动态图吃奶动态图q| 深夜释放自己在线观看| 一品探花论坛| 俄罗斯15一16处交| 久久麻豆国产国产AV| 日韩在线av免费视久久| 亚洲在线国产日韩欧美| 糙汉顶弄抽插HHHH| 久久国产精品免费网站| 色综合伊人色综合网站中国| 野花高清在线观看免费3中文| 啊…嗯啊好深男男小黄文| 九九热在线免费观看| 色怕怕| 26uuu老色哥| 国产人妻系列无码专区97SS| 欧美激情社区| 亚洲午夜AV久久久精品影院色戒| 暗卫受被肉到失禁各种PLAY| 久久www免费人成_看片高清| 视频专区亚洲欧美日韩| 97人妻在线公开视频在线观看| 国产在线播放KKK| 日韩欧美 亚洲视频| 18美女腿打开无遮软件| 国产在线不卡| 色尼姑久久超碰在线| 97国产精品人妻无码免费| 黄得让人湿的片段| 四虎影视永久无码精品| 99麻豆精品国产人妻无码| 久久电影精品| 性盈盈剧场| 丰满的美女射精动态图| 男人桶女人j的视频在线观看 | 嗯啊…跟校草在教室里做h| 亚洲免费国产在线日韩| 国产传媒18精品A片在线观看|