I2C總線接口設計管理論文

時間:2022-06-26 04:36:00

導語:I2C總線接口設計管理論文一文來源于網友上傳,不代表本站觀點,若需要原創文章可咨詢客服老師,歡迎參考。

I2C總線接口設計管理論文

摘要:介紹了一種使用CPLD完成DSP芯片i2c總線接口的設計和實現方案,重點敘述了I2C核的設計思想。

關鍵詞:PWMSG3524控制器

帶有I2C總線接口的器件可以十分方便地將一個或多個單片機及外圍器件組成單片機系統。盡管這種總線結構沒有并行總線那樣大的吞吐能力,但由于連接線和連接引腳少,因此其構成的系統價格低、器件間總線連接簡單、結構緊湊,而且在總線上增加器件不影響系統的正常工作,系統修改和可擴展性好。即使有不同時鐘速度的器件連接到總線上,也能很方便地確定總線的時鐘。

如今,為了提高系統的數據處理精度和處理速度,在家用電器、通訊設備及各類電子產品中已廣泛應用DSP芯片。但大多數的尚未提供I2C總線接口,本文將介紹一種基于CPLD的已實現的高速DSP的I2C總線接口方案。

圖1I2C總線接口電路結構

1I2C通信協議

I2C總線是一種用于IC器件之間的二線制總線。它通過SDA(串行數據線)及SCL(串行同步時鐘線)兩根線在連到總線上的器件之間傳送信息,通過軟件尋址實現片選,減少了器件片選線的連接。CPU不僅能通過指令將某個功能單元電路掛靠或摘離總線,還可對該單元的工作狀況進行檢測,從而實現對硬件系統的擴展與控制。I2C總線接口電路結構如圖1所示,I2C總線時序圖如圖2所示。

I2C總線根據器件的功能通過軟件程序使其可工作于發送(主)或接收(從)方式。總線上主和從(即發送和接收)的關系不是一成不變的,而是取決于數據傳送的方向。SDA和SCL均為雙向I/O線,通過上拉電阻接正電源。當總線空閑時,兩根線都是高電平。連接總線的器件的輸出級必須是集電極或漏極開路的,以具有線“與”功能。I2C總線的數據傳送速率在標準工作方式下為100kbit/s,在快速方式下,最高傳送速率可達400kbit/s。

在數據傳送過程中,必須確認數據傳送的開始和結束信號(也稱啟動和停止信號)。當時鐘線SCL為高電平時,數據線SDA由高電平跳變為低電平則定義為“開始”信號;當SCL為高電平時,SDA由低電平跳變為高電平則定義為“結束”信號。開始和結束信號都由主器件產生。在開始信號以后,總線即被認為處于忙狀態;在結束信號以后的一段時間內,總線被認為是空閑狀態。

在I2C總線開始信號后,依次送出器件地址和數據,I2C總線上每次傳送的數據字節數不限,但每一個字節必須為8位,而且每個傳送的字節后面必須跟一個認可位(第9位),也叫應答位(ACK)。從器件的響應信號結束后,SDA線返回高電平,進入下一個傳送周期。

2設計方案

本文以DSP芯片ADSP21992與時鐘芯片PCF8583的控制接口為例,說明基于CPLD的I2C總線接口設計方案。

ADSP21992是2003年最新推出的160MIPS、帶CAN通信接口的適合于高精度工業控制和信號處理的高性能DSP芯片。它帶有48K片內RAM、SPORT通信接口、SPI通信接口、8通道14位A/D轉換器以及PWM等。

PCF8583是一款帶有256字節靜態CMOSRAM的時鐘/日歷芯片。地址和數據嚴格按照雙向雙線制I2C總線協議傳輸。內置地址寄存器在每次讀/寫后自動遞增。

2.1系統結構設計

系統的基本功能是通過CPLD的I2C總線接口完成ADSP21992(主控芯片)與PCF8583的數據交換。系統框圖如圖3所示。

系統主要由兩個部分組成:一是DSP與CPLD的接口;另一是I2C核。為了能在DSP指定的時刻讀/寫PCF8583的數據,使用DSP的讀寫信號、同步時鐘和最高位地址控制數據的傳輸。最高位地址作為控制信號是因為DSP的I/O口比較少,必須優先供應給其它外設,因此用它來產生DSP提供給I2C核的片選信號。而DSP的地址總線位數較多,最高位一般使用不到,這樣正好可以充分利用資源。

2.2I2C核

I2C核原理示意圖如圖4所示。

整個I2C核由控制模塊和I/O模塊構成。其中,控制模塊包括控制信號發生部分和時鐘開關,I/O模塊包括數據緩存和同步時鐘緩存。

當DSP的最高地址位出現一個有效信號時,便會使I2C核內的觸發器產生一個全局使能信號EN?熏它將會啟動時鐘、計數器和其它控制信號,但數據不會出現交換。如果此時DSP的讀/寫同步產生,則會啟動相應的讀/寫進程,進行數據傳輸。

I2C核的關鍵技術是:

①用計數器和全局使能信號EN配合觸發進程。

由于I2C核的片選信號EN是由觸發產生的,不能象電平信號一樣由DSP的I/O控制,因此只能通過精確的計數器定時和讀/寫使能信號共同判別控制。

讀/寫使能信號WR_EN/RD_EN也象EN那樣由觸發產生,因此也要用同樣的方法判別。

②同步時鐘的產生。

從圖2中可以看到,數據在同步時鐘的高電平脈沖時必須保持穩定,如果此時發生變化將會被視為一個控制信號,而通信也會被中斷。因此,同步時鐘的高電平脈沖一定要在有效數據的中間出現。而所需的控制信號必須在同步時鐘正脈沖的時候出現。

③對數據總線進行三態設置。

因為SDA和DSP_DATA都是雙向數據線,在寫SDA和DSP_DATA的進程中必須設置高阻態,否則會出現數據線狀態“不確定”。

圖5I2C核工作時序圖

2.3DSP與CPLD的接口模塊

根據DSP的時序,DSP與CPLD之間必須根據雙方(ADSP21992和PCF8583)的時序制定一個握手協議。當讀程序時,由于I2C總線協議只能支持最高400kbit/s的傳輸速率,而DSP的同步時鐘可達幾十兆赫。因此,DSP必須等到I2C核把PCF8583的數據讀到CPLD后才能獲得正確的數據(這里可以通過設立一個忙標志來實現)。而當寫程序時,為了節約CPLD的資源(數據緩存特別占用資源),可以設置DSP定時輸出數據給I2C核,讓I2C核的一次只送一個數據。

2.4硬件設計

此I2C核可外掛多個帶有I2C總線接口的芯片,可以通過發送不同的器件地址來選擇。SDA和SCL線必須接上拉電阻。此外,同步時鐘不能太高,否則會影響數據傳輸的穩定性。

2.5時序

(1)I2C核時序

以寫為例,I2C核時序如圖5所示。

(2)PCF8583時序

PCF8583的數據是8bit一個存儲單元,共256個字節,所以只需要8位地址,而且器件本身有兩種尋址方式:一種是從指定地址開始遞增尋址,另一種是從首地址開始遞增尋址。兩種尋址方式的時序是不一樣的,如圖6所示。

圖6PCF8583時序圖

3實現方法

本系統是選用ALTERA公司CPLD7000S系列EPM7128S芯片,并基于MAXPLUSII開發的。I2C核采用VHDL語言編寫,使用SYNPLIFY編譯、綜合,用AHDL繪成圖表,用MAXPLUSII仿真和布局。DSP采用VISUALDSP++2.0編寫。最后分別通過JTAG口下載到芯片并聯機調試成功。

隨著DSP芯片和I2C通信方式的廣泛應用,它們之間的接口問題必須得到解決。本文提出的解決方案具有非常好的可移植性和產品開發能力。本系統既可以作為一個單獨的系統運行,又可以作為一個通信模塊植入一個大系統中,而其中的I2C核又是一個可移植IP核。利用CPLD的邏輯可編程性,還可以在其剩下的資源中再開發所需的邏輯器件,既能降低硬件成本又能大大減小系統主板的面積,使電路的設計更具靈活性。