8051單片機的I2C接口并行擴展
3.2 方式控制字
8051向控制寄存器CI0寫控制字,實現對I2C接口的編程控制。CI0的控制字格式如下所示:
A2,A1,A0位:對與8051相連的I2C器件組的片選(器件地址)。對應不同值時選擇不同的器件通信?! ?p>R/W:用來控制8051對I2C器件的讀寫操作。1表示8051對I2C器件讀數據;0表示8051對I2C器件寫數據。
M1M0:當S=1時的4種工作方式:
①I2C總線未連接,要進行寫操作。
②I2C總線未連接,要進行讀操作。
?、跧2C總線已連接,換一個I2C器件或換新地址,要進行寫操作。
?、躀2C總線已連接,換一個I2C器件或換新地址,要進行讀操作。
S:工作控制位。當S=0時,關閉I2C總線,其他情況S=1。
DZS:指明8051對I2C器件讀寫的地址數。具體為:
0:8051對I2C器件內單字節地址讀寫?! ?br />1:8051對I2C器件內雙字節地址讀寫。
3.3 I2C模塊對I2C傳輸協議的實現
根據I2C數據傳輸協議,時鐘為高電平時,數據線由高電平向低電平跳變,啟動I2C數據傳輸。然后每到來一個時鐘脈沖,傳送一位串行數據,第8個脈沖到來后,已完成一個字節的傳輸,第9個脈沖時,發送應答信號。寫數據時,I2C器件收到數據,發送應答信號;讀數據時,8051收到數據,發送應答信號。數據傳送過程中,時鐘為高電平期間,數據線上的內容保持不變。數據傳送完畢,應答結束后,需要用停止信號停止數據傳輸,時鐘高電平時,數據線由低電平向高電 55平跳變來實現此停止信號。
I2C模塊實現I2C數據傳輸協議。start信號為1時,啟動數據傳輸;write信號為1時,向I2C器件寫數據,read信號為1時,向I2C器件讀數據。
讀寫過程中,輸出標志位flag、計數器dcnt,控制en的兩位矢量,從而控制并串轉換寄存器和串并轉換寄存器的并入、移位、保持、清零操作。停止信號為1時,結束數據傳輸。
3.4 接口芯片的工作原理與控制過程
8051向控制寄存器CI0寫控制字,實現對I2C接口的編程控制;向數據寄存器CI1寫數據,實現對I2C接口的數據傳輸。
當bz=1時,8051才對數據寄存器讀寫,而每次讀寫后接口電路自動將bz置0,在接口電路完成有關操作等待8051的讀寫時將bz置1。
(1)I2C總線未連接,要進行寫操作。8051的操作:
①寫控制字W1;②當bz=1時寫器件內地址第1字節;③當bz=1時寫器件內地址第2字節…;④當bz=1時寫第1字節…。
I2C的操作:
當接收到該控制字W1后操作為:①置bz=1,啟動I2C總線;②根據控制字中的器件地址發出第1個字節(器件選擇、寫);③發送器件內地址,置bz=1;④發送數據內容,置bz=1…。
評論