基于DSP與CPLD的I2C總線接口的設(shè)計(jì)與實(shí)現(xiàn)
如今,為了提高系統(tǒng)的數(shù)據(jù)處理精度和處理速度,在家用電器、通訊設(shè)備及各類電子產(chǎn)品中已廣泛應(yīng)用DSP芯片。但大多數(shù)的尚未提供I2C總線接口,本文將介紹一種基于CPLD的已實(shí)現(xiàn)的高速DSP的I2C總線接口方案。
1 I2C通信協(xié)議
I2C總線是一種用于IC器件之間的二線制總線。它通過(guò)SDA(串行數(shù)據(jù)線)及SCL(串行同步時(shí)鐘線)兩根線在連到總線上的器件之間傳送信息,通過(guò)軟件尋址實(shí)現(xiàn)片選,減少了器件片選線的連接。CPU不僅能通過(guò)指令將某個(gè)功能單元電路掛靠或摘離總線,還可對(duì)該單元的工作狀況進(jìn)行檢測(cè),從而實(shí)現(xiàn)對(duì)硬件系統(tǒng)的擴(kuò)展與控制。I2C總線接口電路結(jié)構(gòu)如圖1所示,I2C總線時(shí)序圖如圖2所示。
I2C總線根據(jù)器件的功能通過(guò)軟件程序使其可工作于發(fā)送主或接收從方式??偩€上主和從即發(fā)送和接收的關(guān)系不是一成不變的,而是取決于數(shù)據(jù)傳送的方向。SDA和SCL均為雙向I/O線,通過(guò)上拉電阻接正電源。當(dāng)總線空閑時(shí),兩根線都是高電平。連接總線的器件的輸出級(jí)必須是集電極或漏極開(kāi)路的,以具有?quot;與"功能。I2C總線的數(shù)據(jù)傳送速率在標(biāo)準(zhǔn)工作方式下為100kbit/s,在快速方式下,最高傳送速率可達(dá)400kbit/s。
在數(shù)據(jù)傳送過(guò)程中,必須確認(rèn)數(shù)據(jù)傳送的開(kāi)始和結(jié)束信號(hào)(也稱啟動(dòng)和停止信號(hào))。當(dāng)時(shí)鐘線SCL為高電平時(shí),數(shù)據(jù)線SDA由高電平跳變?yōu)榈碗娖絼t定義為"開(kāi)始"信號(hào);當(dāng)SCL為高電平時(shí),SDA由低電平跳變?yōu)楦唠娖絼t定義為"結(jié)束"信號(hào)。開(kāi)始和結(jié)束信號(hào)都由主器件產(chǎn)生。在開(kāi)始信號(hào)以后, 總線即被認(rèn)為處于忙狀態(tài);在結(jié)束信號(hào)以后的一段時(shí)間內(nèi),總線被認(rèn)為是空閑狀態(tài)。
在I2C總線開(kāi)始信號(hào)后,依次送出器件地址和數(shù)據(jù),I2C總線上每次傳送的數(shù)據(jù)字節(jié)數(shù)不限,但每一個(gè)字節(jié)必須為8位,而且每個(gè)傳送的字節(jié)后面必須跟一個(gè)認(rèn)可位(第9位),也叫應(yīng)答位(ACK)。從器件的響應(yīng)信號(hào)結(jié)束后,SDA線返回高電平,進(jìn)入下一個(gè)傳送周期。關(guān)于I2C總線協(xié)議的詳細(xì)說(shuō)明請(qǐng)參看參考文獻(xiàn)。
2 設(shè)計(jì)方案
本文以DSP芯片ADSP21992與時(shí)鐘芯片PCF8583的控制接口為例,說(shuō)明基于CPLD的I2C總線接口設(shè)計(jì)方案。
ADSP21992是2003年最新推出的160MIPS、帶CAN通信接口的適合于高精度工業(yè)控制和信號(hào)處理的高性能DSP芯片。它帶有48K片內(nèi)RAM、SPORT通信接口、SPI通信接口、8通道14位A/D轉(zhuǎn)換器以及PWM等。關(guān)于ADSP21992的詳細(xì)說(shuō)明請(qǐng)參看參考文獻(xiàn)。
評(píng)論