<strike id="kiyse"></strike>
  • <tr id="kiyse"></tr>
  • <strike id="kiyse"></strike><samp id="kiyse"><tbody id="kiyse"></tbody></samp>
    <strike id="kiyse"><s id="kiyse"></s></strike>
    <tr id="kiyse"></tr>
    <noframes id="kiyse"><code id="kiyse"></code></noframes>
    <th id="kiyse"></th>
    <samp id="kiyse"></samp>
  • <th id="kiyse"><s id="kiyse"></s></th>
  • 工控主板EM9360的GPIO的各種使用方法

     2009-9-14              

            英創(chuàng)公司的ARM9工控主板產(chǎn)品 EM9360是一款預(yù)裝WinCE操作系統(tǒng),以多種通訊接口、支持各種擴(kuò)展為其技術(shù)特色。EM9360的板載的3路以太網(wǎng)接口、6路串口以及1路CAN接口,均帶有標(biāo)準(zhǔn)的WinCE驅(qū)動(dòng)程序,支持應(yīng)用程序通過(guò)WinCE相應(yīng)的API函數(shù)來(lái)操作各路網(wǎng)絡(luò)接口。此外EM9360還與英創(chuàng)公司其他ARM9主板一樣,帶有精簡(jiǎn)ISA擴(kuò)展總線以及12位通用GPIO,精簡(jiǎn)ISA總線的基本使用方法可參考英創(chuàng)網(wǎng)站的相關(guān)信息,而本文則主要介紹EM9360主板中12位GPIO的各種使用方法。

            EM9360的12位通用數(shù)字IO的各種使用方法列表如下:


    數(shù)字IO

    高位地址

    時(shí)間同步

    外部中斷

    RS485

    矩陣鍵盤(pán)

    GPIO0

     

    PPS_IN#

     

     

     

    GPIO1

     

    PPS_OUT#

     

     

     

    GPIO2

     

     

    IRQ2

     

     

    GPIO3

     

     

    IRQ3

     

     

    GPIO4

    ISA_SA5

     

     

     

    4X4矩陣鍵盤(pán)

    GPIO5

    ISA_SA6

     

     

     

    GPIO6

    ISA_SA7

     

     

    COM2_RST#

    GPIO7

    ISA_SA8

     

     

    COM3_RST#

    GPIO8

    ISA_SA9

     

     

    COM4_RST#

    GPIO9

    ISA_SA10

     

     

    COM5_RST#

    GPIO10

    ISA_SA11

     

     

    COM6_RST#

    GPIO11

    ISA_SA12

     

     

    COM7_RST#


     

    通用GPIO
            EM9360上電后的各位IO均處于數(shù)字輸入狀態(tài),通過(guò)相應(yīng)的API函數(shù)(定義在em9360_isa_dio.h文件中)這12位GPIO可獨(dú)立設(shè)置為輸入或輸出,輸出電平也可獨(dú)立設(shè)置。

    精簡(jiǎn)ISA總線的高位地址線
            基本的精簡(jiǎn)ISA總線只包含低5為地址總線SA0 – SA4,對(duì)大多數(shù)IO類(lèi)型的擴(kuò)展,5位地址線已足夠使用。為了支持存儲(chǔ)器類(lèi)型的擴(kuò)展,EM9360提供對(duì)高位地址總線的支持,其中的SA5 – SA12與GPIO4 – GPIO11復(fù)用管腳。為了激活高位地址總線,應(yīng)用程序需在程序初始化階段,通用調(diào)用API函數(shù)

            int ISA_ReadUchar( int nSeg, UINT nOffset, UCHAR* pRdValue );

            進(jìn)行一次“啞讀”即可。具體需要激活的高位地址還可通過(guò)偏移量nOffset的輸入值來(lái)選擇,但至少需要激活SA5和SA6這2位地址總線。舉例說(shuō)明如下:
            1、激活SA5和SA6,而其他的還是保持為GPIO,則nOffset = 0x007F;
            2、激活SA5–SA7,而其他的還是保持為GPIO,則nOffset = 0x00FF;
            3、激活SA5–SA12,最大訪問(wèn)8KB空間,則nOffset = 0x1FFF;

            在使用高位地址擴(kuò)展時(shí),需要注意以下事宜:
            ·精簡(jiǎn)ISA總線有2個(gè)片選輸出,其中CS1#只支持最大1KB的訪問(wèn)空間,而CS0#則可支持最大8KB的訪問(wèn)空間,所以通常用CS0#作為存儲(chǔ)器單元的片選控制。
            ·若客戶應(yīng)用還需要訪問(wèn)更大空間,EM9360還可引出SA13 – SA15信號(hào),使CS0#的訪問(wèn)空間達(dá)到64KB。
    精簡(jiǎn)ISA總線擴(kuò)展的存儲(chǔ)器單元一般只能用作數(shù)據(jù)存儲(chǔ),不能作為程序運(yùn)行空間。
            ·激活的地址線應(yīng)當(dāng)是由小至大,連續(xù)地址空間。

     

    時(shí)間同步功能
            EM9360支持時(shí)間同步功能,基本的使用方法是應(yīng)用程序打開(kāi)“PPS1:”設(shè)備驅(qū)動(dòng)程序,此時(shí)GPIO0將自動(dòng)轉(zhuǎn)為同步脈沖輸入PPS_IN#(低電平有效)。PPS驅(qū)動(dòng)程序被PPS_IN#脈沖觸發(fā)后,將立即發(fā)送時(shí)間同步事件,供上層應(yīng)用線程做必要處理。根據(jù)用戶設(shè)置,PPS驅(qū)動(dòng)程序還可在GPIO1上輸出同步脈沖PPS_OUT#(同樣是低電平有效),以及自動(dòng)對(duì)當(dāng)前時(shí)間進(jìn)行整秒調(diào)整。

     

    更多的外部中斷
            基本的精簡(jiǎn)ISA總線只提供1條外部硬件中斷輸入IRQ1,上升沿有效。若客戶應(yīng)用需要擴(kuò)展更多的通訊接口,如增加第二路CAN接口、增加8路串口等等,這時(shí)僅僅一條外部中斷就不夠了,需要更多的外部中斷支持,GPIO2和GPIO3則可用于外部中斷輸入。事實(shí)上EM9360的驅(qū)動(dòng)已可支持類(lèi)似這樣的擴(kuò)展,感興趣的客戶可與英創(chuàng)公司聯(lián)系了解進(jìn)一步的使用方法。

     

    作為RS485接口的RST#
          GPIO6–GPIO11還可分別作為COM2 – COM7的RTS#控制信號(hào),低電平有效。對(duì)RS485接口,若需要使用RTS方向控制方案,則在設(shè)置串口參數(shù)時(shí),需要特別地把RTS控制段設(shè)置為RTS_CONTROL_TOGGLE,相關(guān)的代碼如下所示:

          DCB dcb;            // 定義參數(shù)控制塊

          GetCommState( m_hSer, &dcb );     // 讀取當(dāng)前參數(shù)塊
          dcb.fRtsControl = RTS_CONTROL_TOGGLE;  // 設(shè)置RTS方向控制
          SetCommState(m_hSer, &dcb);     // 重設(shè)串口參數(shù)

            上述代碼中m_hSer為打開(kāi)串口文件“COMx:”的文件句柄。

            在使用RS485通訊時(shí),一般把RTS#有效(低電平)作為發(fā)送狀態(tài),RTS#無(wú)效(高電平)為接收狀態(tài)。從發(fā)送狀態(tài)切換回接收狀態(tài),作為方向控制信號(hào)的RTS#,可能會(huì)有最長(zhǎng)1ms的延時(shí),因此為了防止系統(tǒng)出現(xiàn)收發(fā)狀態(tài)沖突的情況,RS485的波特率最好不超過(guò)9600bps。

     

    矩陣鍵盤(pán)
            EM9360支持由GPIO驅(qū)動(dòng)的4×4矩陣鍵盤(pán),具體配置如下:


    虛擬鍵碼

    GPIO5 - KIN0

    GPIO7 - KIN1

    GPIO8 - KIN2

    GPIO10 - KIN3

    GPIO4 - KOUT0

    VK_ESCAPE

    VK_0

    VK_DECIMAL

    VK_BACK

    GPIO6 - KOUT1

    VK_CAPITAL

    VK_1

    VK_2

    VK_3

    GPIO8 - KOUT2

    VK_SPACE

    VK_4

    VK_5

    VK_6

    GPIO10 - KOUT3

    VK_RETURN

    VK_7

    VK_8

    VK_9


     

            EM9360已內(nèi)置了基于GPIO的矩陣鍵盤(pán)驅(qū)動(dòng)程序,加載方法是在應(yīng)用程序中調(diào)用:

            HANDLE  hDevice = NULL;
            hDevice = ActivateDevice( TEXT('Drivers\\gpio_keypad'), 0);

     

            注意在應(yīng)用程序退出時(shí),應(yīng)卸載該驅(qū)動(dòng)程序,以避免矩陣鍵盤(pán)驅(qū)動(dòng)程序被反復(fù)加載。

     

            我們會(huì)根據(jù)客戶的應(yīng)用需求,對(duì)EM9360的GPIO賦予更多的功能,但無(wú)論GPIO有多少功能,在面向具體應(yīng)用時(shí),每位GPIO只能選擇一種應(yīng)用。對(duì)此,客戶在進(jìn)行GPIO功能配置時(shí)需特別小心,避免在一個(gè)管腳選擇多種功能,造成運(yùn)行結(jié)果異常,長(zhǎng)期處于這種異常狀態(tài)還可能導(dǎo)致主板硬件損壞。

            已購(gòu)買(mǎi)EM9360的客戶,若需要使用本文所介紹的新增功能,如RS485 RTS#方向控制等,一般需要更新內(nèi)核和SDK。可以把主板寄回由我們免費(fèi)更新內(nèi)核,并從英創(chuàng)公司網(wǎng)站上下載新的SDK,就可使用本文所介紹的全部功能了。

    亚洲精品中文字幕麻豆| 国产精品久久久久久福利| 91精品成人免费国产| 国产精品无码专区AV在线播放 | 精品久久久久久国产潘金莲| 国产三级精品久久| 日本精品αv中文字幕| 久久精品国产99国产精品亚洲| 国产成人精品无码免费看| 国产伦精品一区二区三区视频猫咪| 天堂精品高清1区2区3区| 精品乱码久久久久久久| 久热这里只有精品12| 亚洲一区爱区精品无码 | 久久久999久久久精品| 久久久不卡国产精品一区二区| 国产精品自在在线午夜出白浆| 免费精品国偷自产在线在线| 51视频精品全部免费最新| 久久国产乱子免费精品| 国产亚洲精品资源在线26u| 91麻豆精品国产| 国产乱码伦精品一区二区三区麻豆| 国产精品9999久久久久仙踪林| 成人区人妻精品一区二区三区| 四虎必出精品亚洲高清| 国产在视频线精品视频2021| 99re6这里有精品热视频在线 | 久9热视频这里只精品18| 亚洲精品动漫在线| 99re6这里只有精品| 久久精品99久久香蕉国产色戒| 日韩精品区一区二区三VR| 亚洲第一精品在线视频| 久久精品视频一区二区三区| 国产精品igao视频网网址| 九九99精品久久久久久| 亚洲αv在线精品糸列| 久久在精品线影院精品国产| 久久国产乱子伦精品免费不卡| 久久夜色精品国产尤物|