a天堂国产 I 久久图片 I 91精品高清 I 亚洲人人玩人人添人人 I 婷婷伊人五月色噜噜精品一区 I 亚洲第一页夜 I 91日韩精品视频 I 无码人妻在线一区二区三区免费 I www.五月婷婷.com I 国产精品久久久久亚洲影视 I 91久久精品一二三 I 国产ts一区 I 91精品乱码久久蜜桃 I 成人免费观看高清 I 久久久久久国产精品免费无码 I 久久免费少妇高潮99精品 I 国产探花在线免费观看 I 亚洲精品少妇 I 亚洲综合成人亚洲 I 欧美区一区二区 I 手机福利视频 I 亚洲欧美综合另类自拍 I 久久精品视频免费播放 I 亚洲精品久久 I av免费在线免费观看 I 亚洲热综合 I 中文字幕无码专区人妻制服 I 午夜免费一区二区 I 在线亚洲精品国产一区麻豆 I 久久精品免费在线观看 I 全国最大成人网 I 亚洲欧美经典视频 I 手机av在线看 I 偷拍视频一区二区三区 I 吃奶摸下激烈视频学生软件

Rss & SiteMap

曙海教育集團(tuán)論壇 http://www.bjzhda.cn

曙海教育集團(tuán)論壇
共1 條記錄, 每頁(yè)顯示 10 條, 頁(yè)簽: [1]
[瀏覽完整版]

標(biāo)題:OMAP3530 WINCE GPIO驅(qū)動(dòng)開(kāi)發(fā)過(guò)程

1樓
wangxinxin 發(fā)表于:2010-11-26 10:58:35
一開(kāi)始上來(lái)整TI的OMAP3530,直接碰的就是系統(tǒng)移植和GPIO驅(qū)動(dòng)。看了TI的DATASHEET和產(chǎn)品的性能介紹,說(shuō)實(shí)話真的是一分錢一分貨,與曾經(jīng)的三星的相比,三星產(chǎn)品的本地化(中國(guó))做得比較好,首先價(jià)格較同類便宜,第二由于第一點(diǎn)造就了用的人多,人多英文的變成中文的手冊(cè)多,例子多,書(shū)多,源碼多。天下源碼一大抄嗎,所以一般而言,三星的就更受歡迎了,但是回過(guò)頭來(lái),TI的產(chǎn)品真讓你心服口服。他的支持之多,超過(guò)了三星,只是多是英文的,起點(diǎn)高,所以。。。
    言歸正傳,OMAP3530的GPIO(General-purpose Interface)按照分組的原則,共有6組,每組的控制類寄存器是32bit的,代表了32個(gè)GPIO,所以總共有192個(gè)GPIO,這些是屬于MPU控制的,超過(guò)192編號(hào)的GPIO是屬于IVA2.2(DSP)控制的。結(jié)構(gòu)框圖如下:
    WINCE GPIO驅(qū)動(dòng)開(kāi)發(fā)過(guò)程" height=274 alt="OMAP3530 WINCE GPIO驅(qū)動(dòng)開(kāi)發(fā)過(guò)程" src="http://static12.photo.sina.com.cn/middle/68e59675x8ab48e529b6b&690" width=653 real_src="http://static12.photo.sina.com.cn/middle/68e59675x8ab48e529b6b&690">
OMAP3530的GPIO具有以下功能:
1)數(shù)據(jù)輸入(捕獲)/輸出(驅(qū)動(dòng))
2) 帶有防抖功能的鍵盤接口
3)外部事件檢測(cè)(電平中斷、邊沿中斷)
4) 在空閑模式下通過(guò)外部事件的睡眠喚醒功能
相關(guān)的配置需要仔細(xì)參照技術(shù)手冊(cè)
    接下來(lái)是WINCE下的GPIO驅(qū)動(dòng),跳過(guò)流驅(qū)動(dòng)的標(biāo)準(zhǔn)框架以及MDD層框架和PDD層的與硬件相關(guān)的寄存器設(shè)置。這些和三星ARM的GPIO驅(qū)動(dòng)大同小異。
    著重介紹可能遇到的問(wèn)題,忽略的地方:
我在編寫(xiě)完OMAP3530的GPIO驅(qū)動(dòng)后,發(fā)現(xiàn)有的GPIO能夠控制輸入輸出,有的則不能。經(jīng)過(guò)同學(xué)提醒,重新看了技術(shù)手冊(cè),原來(lái)在技術(shù)手冊(cè)的第7章System Control Module(SCM)中明確介紹了core modul(內(nèi)核模塊)和wake-up module(喚醒模塊)。
    SCM主要負(fù)責(zé)以下功能
1)I/O端口功能復(fù)用、多工選擇
2) Pad塊配置(端口上拉/下拉)
3) 設(shè)備狀態(tài)
4) MPU和DSP(IVA2.2)的外圍擴(kuò)展設(shè)備特性
5) 靜態(tài)設(shè)備配置
6)調(diào)試和觀測(cè)功能IO復(fù)用
7) 存儲(chǔ)pad塊的配置
pad塊配置寄存器如下:
WINCE GPIO驅(qū)動(dòng)開(kāi)發(fā)過(guò)程" height=273 alt="OMAP3530 WINCE GPIO驅(qū)動(dòng)開(kāi)發(fā)過(guò)程" src="http://static2.photo.sina.com.cn/middle/68e59675x8ab4e91d0761&690" width=690 real_src="http://static2.photo.sina.com.cn/middle/68e59675x8ab4e91d0761&690">

其中pad塊的配置中有一項(xiàng)就是端口的MODE(3bits),由于一個(gè)GPIO可能有多個(gè)功能,他們是互斥的,只能選擇一個(gè),就涉及到端口功能的選擇,總共有MODE0到MODE7八個(gè)模式,默認(rèn)是MODE0,MODE7是安全模式。比如GPIO143總共有實(shí)實(shí)在在的5個(gè)模式:mcbsp3_fsx/uart2_rx/gpio143/hsusb3_till_data7/safemode。所以在配置GPIO的時(shí)候需要選擇成GPIO模式,不然操作GPIO就沒(méi)有效果,這是問(wèn)題1.
   另外,上面的配置只能解決端口的輸出控制,當(dāng)端口配置成輸入時(shí),就不一定能讀取端口電平。問(wèn)題出在哪里呢,繼續(xù)仔細(xì)參照技術(shù)手冊(cè)的SCM模塊。pad塊中還有兩項(xiàng)是GPIO的上拉/下拉選項(xiàng)、輸入使能選項(xiàng)。針對(duì)當(dāng)GPIO端口配置為輸入時(shí)不能讀取正確的引腳電平的問(wèn)題,主要原因是由于GPIO端口的輸入使能被關(guān)閉了。
   輸入使能(INPUTENABLE)(1bits)的描述如下:
1)INPUTENABLE = 0,關(guān)閉引腳輸入,引腳只能夠作為輸出。
2) INPUTENABLE = 1,使能引腳輸入,引腳具有雙向端口功能,即輸入/輸出。
所以我們應(yīng)該使能SCM中,pad塊的這項(xiàng)功能。
   具體到相關(guān)的WINCE文件有
GPIO驅(qū)動(dòng):
   1) $\WINCE600\PLATFORM\TI_EVM_3530\SRC\DRIVERS\GPIO\gpio.cpp
   2)$\WINCE600\PLATFORM\COMMON\SRC\SOC\OMAP35XX_TPS659XX_TI_V1\omap35xx\GPIO\omap35xx_gpio.cpp
啟動(dòng)時(shí)安裝配置成GPIO的文件:
   1)$\WINCE600\PLATFORM\TI_EVM_3530\SRC\BOOT\XLDR\platform.c
比如:
   VOID GpioSetup()函數(shù)下的GPIO模式和端口方向定制:
 OUTREG16(&pConfig->CONTROL_PADCONF_SDRC_D0, (INPUT_ENABLE | PULL_INACTIVE | MUX_MODE_0));  
    OUTREG16(&pConfig->CONTROL_PADCONF_SDRC_D1, (INPUT_ENABLE | PULL_INACTIVE | MUX_MODE_0));  
    OUTREG16(&pConfig->CONTROL_PADCONF_SDRC_D2, (INPUT_ENABLE | PULL_INACTIVE | MUX_MODE_0));  
    OUTREG16(&pConfig->CONTROL_PADCONF_SDRC_D3, (INPUT_ENABLE | PULL_INACTIVE | MUX_MODE_0));  
    OUTREG16(&pConfig->CONTROL_PADCONF_SDRC_D4, (INPUT_ENABLE | PULL_INACTIVE | MUX_MODE_0));  
    OUTREG16(&pConfig->CONTROL_PADCONF_SDRC_D5, (INPUT_ENABLE | PULL_INACTIVE | MUX_MODE_0));  
    OUTREG16(&pConfig->CONTROL_PADCONF_SDRC_D6, (INPUT_ENABLE | PULL_INACTIVE | MUX_MODE_0));  
    OUTREG16(&pConfig->CONTROL_PADCONF_SDRC_D7, (INPUT_ENABLE | PULL_INACTIVE | MUX_MODE_0));  
    OUTREG16(&pConfig->CONTROL_PADCONF_SDRC_D8, (INPUT_ENABLE | PULL_INACTIVE | MUX_MODE_0));  
 
   綜上所述:SCM模塊決定了端口的功能,而GPIO模塊控制了端口的GPIO功能;GPIO只是端口功能的一個(gè)子集。
共1 條記錄, 每頁(yè)顯示 10 條, 頁(yè)簽: [1]

Copyright © 2000 - 2009 曙海教育集團(tuán)
Powered By 曙海教育集團(tuán) Version 2.2
Processed in .01563 s, 2 queries.