王芬芬,馮海英,丁 柯
(中科芯集成電路股份有限公司,江蘇無錫 214072)
I2C總線[1]是Philips公司開發的一種簡單、雙向二線制同步串行總線[1]。通過串行時鐘線SCL和串行數據線SDA即可在連接于總線上的器件之間傳送信息,因而廣泛應用于微控制器、EEPROM、A/D轉換器及電子通信領域[2]。
SMBus 2.0協議是在I2C協議基礎上研發出來的系統管理總線協議[3],它基于I2C操作原理,繼承了I2C總線的特點和優點,起初是為智能電池、充電電池和與其他系統通信的微控制器之間的通信鏈路而定義的,后來也被用來連接各種設備,包括電源相關設備、系統傳感器、EEPROM通信設備等,目前已成為在智能電池及低速率管理設備上被廣泛采用的協議標準[4]。
實現I2C總線協議時主要有兩種方法:第一種是利用SOC芯片的兩個引腳去模擬SDA和SCL,并利用軟件模擬控制器的接口功能,這種方法通用可行但移植性差,占用資源多,軟件規模大,不易于維護;第二種方法是利用I2C總線控制器IP,在SOC芯片中嵌入I2C總線接口,利用硬件設計I2C總線控制器,然后集成到SOC系統中,這種方法移植性好,但要求I2C總線控制器功能完善且占用較低的硬件資源。
王炳文等[5]基于可編程邏輯設計了一種I2C總線主機控制器,通過FPGA狀態機的組合擴展出I2C總線,相比完全用軟件模擬I2C時序的方法減小了軟件的工作量,但擴展出的I2C總線僅支持部分傳輸方式。張文梅等[6]設計了一種功能可擴展的I2C控制器,但該控制器只能作為從機控制器,且只能進行寫操作,不可進行讀操作。……