Freescale公司的MC9328MXL通用I/O接口電路
1. 基本原理
Freescale 公司的MC9328MXL處理器是一款集低功耗、高度集成性、軟件兼容性、智能設(shè)計(jì)技術(shù)等優(yōu)勢(shì)于一體的CPU。處理器內(nèi)置支持LCD/觸摸屏接口、CMOS Sensor接口、SD卡、串口、I2C、I2S等,接口豐富,非常適合應(yīng)用于:手持設(shè)備、可視電話、樓宇的對(duì)講系統(tǒng)、VoIP、IPcamera、數(shù)碼產(chǎn)品、醫(yī)療電子設(shè)備和各種其它移動(dòng)無線應(yīng)用。
MC9328Mxl提供了18個(gè)可編程的I/O端口GPIO,用戶可將每個(gè)端口配置為輸入模式、輸出模式或特殊功能模式,由片內(nèi)的特殊功能寄存器控制。
從圖1l-5中可以看出,通過配置MXl內(nèi)部GI[JS_x相應(yīng)的寄存器就可以將片外引腳連接(邏輯上的)到不同的功能線上。這樣就做到了引腳的復(fù)用。
當(dāng)引腳配置為GPIO后,還需要進(jìn)一步配置該引腳作為輸入引腳還是作為輸出引腳,這將決定在邏輯上該引腳內(nèi)部連接到輸入數(shù)據(jù)寄存器還是輸出數(shù)據(jù)寄存器。如果作為輸入引腳,引腳上的電平狀態(tài)會(huì)即時(shí)被寫入輸入數(shù)據(jù)寄存器。如果作為輸出引腳,寫入輸出數(shù)據(jù)寄存器的內(nèi)容就會(huì)以邏輯電平的形式及時(shí)反映到引腳外部。
為了方便用戶的開發(fā),核心板和擴(kuò)展板都設(shè)置了相應(yīng)的I/O接口,這些接口的設(shè)置極大地方便了用戶的開發(fā)工作,使開發(fā)者能夠比較方便地對(duì)系統(tǒng)進(jìn)行信號(hào)輸入信號(hào)輸出。表10-11列舉了開發(fā)系統(tǒng)中所有的I/O的定義及其相應(yīng)的功能描述。
MC9328MXl各個(gè)GPIO作為輸入時(shí),都可作為獨(dú)立中斷源使用。同時(shí)每個(gè)中斷源獨(dú)立的寄存器設(shè)置以配置相應(yīng)中斷的觸發(fā)方式以及是否屏蔽。系統(tǒng)中使用了14個(gè)外部申請(qǐng):以太網(wǎng)卡中斷申請(qǐng)、A/D模塊中斷申請(qǐng)、鍵盤中斷申請(qǐng)及按鍵組中斷申請(qǐng),如表11-2所示。
2. 硬件接口電路
1.開關(guān)量輸入和LED顯示接口
EMOTION ARM9 Linux開發(fā)系統(tǒng)的開關(guān)量模塊由8個(gè)帶LED指示燈的按鍵組成,如圖11-6所示。K2、K3、K4、K5按鍵為帶自鎖按鍵,K6、K7、K8、K9鍵為不帶
自鎖的按鍵。觸發(fā)K2、K3、K4、K5鍵后處于鎖定狀態(tài),輸出3.3V電平,LED處于點(diǎn)亮狀態(tài)。再次觸發(fā):K2、K3、K4、K5鍵,輸出低電平同時(shí)L,ED熄滅。觸發(fā)K6、K7、K8、K9鍵后輸出3.3V電平同時(shí)相應(yīng)LED點(diǎn)亮,釋放按鍵后輸出低電平,同時(shí)LED熄滅。
KEY2~KEY9按下的時(shí)候會(huì)在與之連接的MXl對(duì)應(yīng)的GPIO引腳上產(chǎn)生低電平,KEY2~KEY9抬起的時(shí)候會(huì)在與之連接的MXl對(duì)應(yīng)的GPIO引腳上產(chǎn)生高電平(見表1l-3)。經(jīng)過軟件配置后,MXl可以根據(jù)這個(gè)電平變化產(chǎn)生中斷。當(dāng)中斷產(chǎn)生后,軟件可以查詢是哪個(gè)引腳產(chǎn)生的中斷,并且驅(qū)動(dòng)與LED相連的GPIO輸出高電平,點(diǎn)亮對(duì)應(yīng)的LED燈。我們將POART’A11~14,POARTC22~24,POARTC26這8個(gè)引腳配置為GPIO輸出引腳,用來控制IED的狀態(tài)。POART3~POART。A lO這8個(gè)引腳配置為GPIO輸入功能,并配置為低電平觸發(fā)中斷。當(dāng)這8個(gè)引腳的任意一個(gè)產(chǎn)生低電平都會(huì)產(chǎn)生一個(gè)中斷并進(jìn)入中斷服務(wù)程序,在中斷服務(wù)程序中根據(jù)中斷狀態(tài)寄存器ISR,可以判斷是哪個(gè)引腳產(chǎn)生的中斷。然后我們向?qū)?yīng)的輸出引腳的DR寄存器寫入1,控制該輸出引腳輸出低電平,從而點(diǎn)亮對(duì)應(yīng)的LED。
實(shí)驗(yàn)系統(tǒng)提供了8個(gè)GPIO端口??捎蛇@8個(gè)GPIO進(jìn)行鍵盤掃描,根據(jù)獲得的GPIO端口狀態(tài)來判斷哪個(gè)鍵被觸發(fā)。最大掃描陣列為4x4。以MC9328MXl的PAl5、PAl6、PCI6、PCI7作為列輸出驅(qū)動(dòng)COL-3,用MC9328MXl的PCI4、PCI5、PA0、PCI3作為行掃描線ROW0-3。鍵盤跳線兒l的短路子安裝應(yīng)跳在電源側(cè),如圖ll一7所示,就相當(dāng)于在KEYCOL0~KEYCOI。3上分別加了上拉電阻,則KEYROW0~KEYROW3在有鍵盤鍵按下時(shí),會(huì)有相應(yīng)的電壓變化。靜態(tài)測(cè)試也可以,用萬用表的歐姆擋測(cè)量,一般按鍵按下時(shí)會(huì)有相應(yīng)的電壓變化。靜態(tài)測(cè)試也可以,用萬用表的歐姆擋測(cè)量,一般按鍵按下時(shí)會(huì)有幾Ω到幾百Ω的電阻,和鍵盤的材料有關(guān)。下面給出對(duì)應(yīng)測(cè)量KEYCOI。0~KEYCOI。3和KEYROW0~KEYROW3時(shí),對(duì)應(yīng)按下鍵值:
例如鍵“1”按下,用萬用表測(cè)量KEYCOI_,0和KEYROW0之間電阻為O~幾百Q(mào)之間為正常,其他依此類推。
鍵盤引腳與MC9328MXl引腳的對(duì)應(yīng)如表l 1.5所示,4x4鍵盤接口電路如圖11.8所示。