關(guān)鍵字:DM642 I2C總線
1 I2C總線控制器的初始化
I2C總線是一種由PHILIPS公司開發(fā)的兩線式串行總線,,用于連接微控制器及其外圍設(shè)備。I2C總線產(chǎn)生于在80年代,,最初為音頻和視頻設(shè)備開發(fā),,如今主要在服務(wù)器管理中使用,其中包括單個(gè)組件狀態(tài)的通信,。例如管理員可對(duì)各個(gè)組件進(jìn)行查詢,,以管理系統(tǒng)的配置或掌握組件的功能狀態(tài),如電源和系統(tǒng)風(fēng)扇,??呻S時(shí)監(jiān)控內(nèi)存、硬盤,、網(wǎng)絡(luò),、系統(tǒng)溫度等多個(gè)參數(shù),增加了系統(tǒng)的安全性,,方便了管理,。
為了正確使用DM642內(nèi)置的I2C模塊,首先需要正確的初始化,。
1.1 解鎖DM642中的I2C模塊
在DM642的I2C應(yīng)用中,,容易遇到不能使用初始化I2C模塊的問題,原因在于沒有先解鎖并使能I2C模塊,。在DM642的數(shù)據(jù)手冊(cè)中可以看到,,復(fù)位后I2C模塊是處于鎖定禁止?fàn)顟B(tài)的。也就是說,,在硬件配置寄存器PERCFG中的I2CoEN位為0,,所以在初始化前要在配置I2C模塊控制寄存器之前,使能I2C模塊,。但是,,如果要修改PERCFG中的內(nèi)容,就要先向PCFGLOCK中寫入0x10C0010C,,對(duì)PERCFG解鎖,。通討加下程序使能I2C模塊:
1.2 I2C模塊的時(shí)鐘選擇
I2C總線最主要的優(yōu)點(diǎn)是其簡單性和有效性。由于接口直接在組件之上,,因此I2C總線占用的空間非常小,,減少了電路板的空間和芯片管腳的數(shù)量,降低了互聯(lián)成本,??偩€的長度可高達(dá)25英尺,并且能夠以10Kbps的最大傳輸速率支持40個(gè)組件,。I2C總線的另一個(gè)優(yōu)點(diǎn)是,,它支持多主控(multimaSTering), 其中任何能夠進(jìn)行發(fā)送和接收的設(shè)備都可以成為主總線,。一個(gè)主控能夠控制信號(hào)的傳輸和時(shí)鐘頻率,。當(dāng)然,在任何時(shí)間點(diǎn)上只能有一個(gè)主控,。
在使能I2C模塊后,,就可以對(duì)其控制寄存器進(jìn)行初始化了。CPU時(shí)鐘頻率為600 MHz,,I2C模塊規(guī)定模塊時(shí)鐘頻率必須在7~12 MHz中選值,,所以設(shè)定I2C模塊時(shí)鐘頻率為10 MHz。由圖1中的計(jì)算公式可得:IPSC為OEh,。由于DM642和SAA7115都支持I2C總線的400 kbps快速模式,,根據(jù)IPSC的取值,由圖1可知d=5,。由此可以設(shè)定:ICCL=7,,ICCH=8。
1.3 設(shè)置從地址時(shí)容易遇到的問題
需要注意的是,,在DM642的I2C應(yīng)用中經(jīng)常會(huì)遇到不能正確讀/寫從設(shè)備的問題,。這是因?yàn)镈M642對(duì)I2C模塊的從地址寄存器設(shè)置不同于其他芯片的I2C應(yīng)用。在標(biāo)準(zhǔn)I2C協(xié)議中,,器件的7位地址格式要將地址和讀/寫方向位一同送入從地址寄存器,。但是,,DM642的I2C的應(yīng)用中只需要向從地址寄存器中送入7位器件地址,讀/寫方向位由DM642自動(dòng)生成,。例如,,SAA7115的標(biāo)準(zhǔn)I2C寫從地址為40H,如圖2所示,。
標(biāo)準(zhǔn)I2C協(xié)議中包括21H的地址信息和最后1位(讀/寫方向位),,DM642只需將21H送入從地址寄存器。如果送入40H,,將會(huì)導(dǎo)致讀/寫錯(cuò)誤,。
2 I2C讀/寫軟件設(shè)計(jì)
2.1 配置模式寄存器I2CMDR
對(duì)SAA7115的每個(gè)子地址操作后,其地址指針會(huì)自動(dòng)增加,,但是它的可配置寄存器的自地址并不是連續(xù)分布的,。所以將I2C工作模式寄存器(I2CMDR)配置為計(jì)數(shù)模式。每次執(zhí)行I2C_write()只傳送一次數(shù)據(jù),,通過多次調(diào)用I2C_write()來完成SAA7115的初始化,。先向I2CMDR寫入4620H,當(dāng)讀取SAA7115的寄存器時(shí),,設(shè)置為無重復(fù)主接收模式,,并向I2CMDR寫入4420H。
2.2 配置從地址寄存器I2CDXR
DM642對(duì)SAA7115的配置是通過尋址來實(shí)現(xiàn)的,。當(dāng)DM642向解碼芯片SAA7115寫數(shù)據(jù)時(shí),,通過I2C總線發(fā)送尋址指令,將右移位后的SAA7115的7位從地址寫入I2CDXR寄存器,。以下是初始化程序:
2.3 I2C對(duì)SAA7115的讀/寫程序設(shè)計(jì)
綜上所述,,圖3和圖4為DM642對(duì)SAA7115的讀/寫程序流程。
3 結(jié) 語
本文設(shè)計(jì)的程序經(jīng)過運(yùn)行證明,,通過I2C總線控制寄存器的配置,,DM642對(duì)視頻解碼芯片SAA7115讀/寫正確,完成了對(duì)視頻信號(hào)輸入制式,、視頻信號(hào)通道選擇,、視頻數(shù)據(jù)輸出格式、同步信號(hào)插入位置,、亮度色度及對(duì)比度設(shè)定,、同步信號(hào)輸入開關(guān)、視頻采集量化啟動(dòng)和關(guān)閉等內(nèi)部寄存器的設(shè)置,。