一些中檔增強型內(nèi)核 PIC16 單片機器件具有主同步串行端口(Master Synchronous Serial Port,MSSP)。MSSP 模塊可用于實現(xiàn) I2CTM 或 SPI 通信協(xié)議。在本應用筆記中,將介紹 I2C 從協(xié)議的基礎知識。然后讀者應該更好地了解 MSSP 模塊以及它如何用于 I2C 總線上的從機通信。還將提供代碼示例以幫助讀者將模塊實現(xiàn)到他們自己的設計中。
I2C 總線規(guī)范
內(nèi)部集成電路 (I2C) 總線是由 Philips? Inc. 開發(fā)的廣泛使用的行業(yè)標準,用于在集成電路(例如串行 EEPROM 或其他微控制器)之間傳輸數(shù)據(jù)。設備在主/從環(huán)境中通信,其中主設備始終發(fā)起通信,從設備通過尋址進行控制。I2C 總線可以有一個或多個主設備和一個或多個從設備。主設備是在總線上發(fā)起數(shù)據(jù)傳輸?shù)脑O備,負責生成總線上使用的串行時鐘。任何尋址的設備都被視為從設備。I2C 協(xié)議支持 7 位或 10 位尋址模式。從 MSb 開始,一次執(zhí)行 8 位數(shù)據(jù)傳輸。
總線的物理接口由兩條雙向開漏線組成,一條線用于串行時鐘(SCL),另一條線用于串行數(shù)據(jù)(SDA)。每條線路都需要一個上拉電阻來為線路提供電壓。將線拉到地面被認為是邏輯低點,而讓線浮動被認為是邏輯高點。當總線空閑時,SDA 和 SCL 均為邏輯高電平。數(shù)據(jù)傳輸速率在標準模式下高達 100 kbits/s,在快速模式下高達 400 kbits/s,在快速模式 Plus 下高達 1 Mbits/s,或在高速模式下高達 3.4 Mbits/s模式。在時鐘的高電平期間,SDA 線上的數(shù)據(jù)必須是穩(wěn)定的。SDA 線上的任何變化只能在 SCL 線上的時鐘信號為低電平時發(fā)生。為每個傳輸?shù)臄?shù)據(jù)位生成一個時鐘脈沖。
I2C 規(guī)范將啟動條件定義為 SDA 線從高電平變?yōu)榈碗娖綘顟B(tài),而 SCL 線為高電平。啟動條件始終由主機生成,表示總線從空閑狀態(tài)轉換為活動狀態(tài)。I2C 規(guī)范規(guī)定在開始時不會發(fā)生總線沖突;但是,如果 MSSP 模塊在將 SDA 線置為低電平之前對其進行采樣,則可能會發(fā)生總線沖突。
停止條件是 SDA 線從低到高狀態(tài)的轉換,而 SCL 線為高。在停止有效之前,必須至少出現(xiàn)一個 SCL 低電平時間。因此,如果 SDA 線變?yōu)榈碗娖?,然后再次變?yōu)楦唠娖?,?SCL 線保持高電平,則僅檢測到啟動條件。

圖 1 I2C 啟動和停止條件
只要停止有效,重新啟動或重復啟動就有效。如果主機希望在終止當前傳輸后保持總線,它可以發(fā)出重新啟動。Restart 對從機具有與 Start 相同的效果,重置所有從機邏輯并準備它在地址中計時。主站可能想要尋址同一個或另一個從站。這對于許多 I2C 外設很有用,例如非易失性 EEPROM 存儲器,其中 I2C 寫操作和讀操作連續(xù)完成。在這種情況下,寫操作指定要讀取的地址,讀操作獲取數(shù)據(jù)字節(jié)。由于主設備在將內(nèi)存地址寫入設備后并沒有釋放總線,因此執(zhí)行一個Restart序列來讀取內(nèi)存地址的內(nèi)容。

圖 2 I2C 重啟條件
在 10 位尋址從機模式下,主機需要重啟才能將數(shù)據(jù)從尋址的從機中取出。一旦從設備被完全尋址,匹配高地址字節(jié)和低地址字節(jié),主設備就可以發(fā)出重啟并發(fā)送設置了 R/W 位的高地址字節(jié)。然后從邏輯將保持時鐘并準備輸出數(shù)據(jù)。在 10 位模式下與 R/W 清除完全匹配后,設置并保持先前??匹配標志。在停止條件之前,具有 R/W 清除或高地址匹配的高地址失敗。
編輯:hfy
-
單片機
+關注
關注
6076文章
45495瀏覽量
670355 -
I2C
+關注
關注
28文章
1556瀏覽量
131235 -
PIC16
+關注
關注
2文章
152瀏覽量
35722
發(fā)布評論請先 登錄
PIC18F I2C總線電容MSSP與Bit-Banging通信錯誤
選擇PIC18F45 50的MSSP模塊作為I2C或SPI的困難
I2C Master到Master通信可能嗎?
pic16和gestic之間的I2c通信是否有可用的樣本代碼?
使用MSSP的I2C通信LCD屏幕不工作
PIC單片機之I2C(從模式)詳解
使用C18編譯器和MSSP模塊進行I2C?串行EEPROM與PIC18單片機的接口設計
使用MSSP模塊進行Microwire串行行EEPROM與PIC16器件的接口設計
使用MSSP模塊進行I2C串行EEPROM與PIC16器件的接口設計說明
如何使用PIC16 MSSP模塊進行從機 I2C 通信
評論