隨著(zhù)國民經(jīng)濟的快速發(fā)展,數字圖像處理廣泛應用于社會(huì )生活的各個(gè)領(lǐng)域。DM642作為高性能的視頻處理芯片,被廣泛應用到視頻處理的很多領(lǐng)域,但是DM642的I2C應用容易遇到I2C、VP等死鎖,以及SAA7115的從地址不能正確設置的問(wèn)題。本文主要介紹的就是基于DM642的視頻采集處理系統中I2C模塊的正確初始化,以及通過(guò)I2C總線(xiàn)正確地對視頻解碼芯片SAA7115的寄存器讀/寫(xiě)程序。 1 I2C總線(xiàn)控制器的初始化 為了正確使用DM642內置的I2C模塊,首先需要正確的初始化。 1.1 解鎖DM642中的I2C模塊 在DM642的I2C應用中,容易遇到不能使用初始化I2C模塊的問(wèn)題,原因在于沒(méi)有先解鎖并使能I2C模塊。在DM642的數據手冊中可以看到,復位后I2C模塊是處于鎖定禁止狀態(tài)的。也就是說(shuō),在硬件配置寄存器PERCFG中的I2CoEN位為0,所以在初始化前要在配置I2C模塊控制寄存器之前,使能I2C模塊。但是,如果要修改PERCFG中的內容,就要先向PCFGLOCK中寫(xiě)入0x10C0010C,對PERCFG解鎖。通討加下程序使能I2C模塊: 1.2 I2C模塊的時(shí)鐘選擇 在使能I2C模塊后,就可以對其控制寄存器進(jìn)行初始化了。CPU時(shí)鐘頻率為600 MHz,I2C模塊規定模塊時(shí)鐘頻率必須在7~12 MHz中選值,所以設定I2C模塊時(shí)鐘頻率為10 MHz。由圖1中的計算公式可得:IPSC為OEh。由于DM642和SAA7115都支持I2C總線(xiàn)的 400 kbps快速模式,根據IPSC的取值,由圖1可知d=5。由此可以設定:ICCL=7,ICCH=8。 1.3 設置從地址時(shí)容易遇到的問(wèn)題 需要注意的是,在DM642的I2C應用中經(jīng)常會(huì )遇到不能正確讀/寫(xiě)從設備的問(wèn)題。這是因為DM642對I2C模塊的從地址寄存器設置不同于其他芯片的I2C應用。在標準I2C協(xié)議中,器件的7位地址格式要將地址和讀/寫(xiě)方向位一同送入從地址寄存器。但是,DM642的I2C的應用中只需要向從地址寄存器中送入7位器件地址,讀/寫(xiě)方向位由DM642自動(dòng)生成。例如,SAA7115的標準I2C寫(xiě)從地址為40H,如圖2所示。 標準I2C協(xié)議中包括21H的地址信息和最后1位(讀/寫(xiě)方向位),DM642只需將21H送入從地址寄存器。如果送入40H,將會(huì )導致讀/寫(xiě)錯誤。 2 I2C讀/寫(xiě)軟件設計 2.1 配置模式寄存器I2CMDR 對SAA7115的每個(gè)子地址操作后,其地址指針會(huì )自動(dòng)增加,但是它的可配置寄存器的自地址并不是連續分布的。所以將I2C工作模式寄存器(I2CMDR)配置為計數模式。每次執行I2C_write()只傳送一次數據,通過(guò)多次調用I2C_write()來(lái)完成SAA7115的初始化。先向I2CMDR寫(xiě)入4620H,當讀取SAA7115的寄存器時(shí),設置為無(wú)重復主接收模式,并向I2CMDR寫(xiě)入4420H。 2.2 配置從地址寄存器I2CDXR DM642對SAA7115的配置是通過(guò)尋址來(lái)實(shí)現的。當DM642向解碼芯片SAA7115寫(xiě)數據時(shí),通過(guò)I2C總線(xiàn)發(fā)送尋址指令,將右移位后的SAA7115的7位從地址寫(xiě)入I2CDXR寄存器。以下是初始化程序: 2.3 I2C對SAA7115的讀/寫(xiě)程序設計 綜上所述,圖3和圖4為DM642對SAA7115的讀/寫(xiě)程序流程。 結 語(yǔ) 本文設計的程序經(jīng)過(guò)運行證明,通過(guò)I2C總線(xiàn)控制寄存器的配置,DM642對視頻解碼芯片SAA7115讀/寫(xiě)正確,完成了對視頻信號輸入制式、視頻信號通道選擇、視頻數據輸出格式、同步信號插入位置、亮度色度及對比度設定、同步信號輸入開(kāi)關(guān)、視頻采集量化啟動(dòng)和關(guān)閉等內部寄存器的設置。 |