I2C總線串行輸入輸出結構

IIC總線的串行輸入輸出結構保證了IIC總線的數據寄存器中能保存總線上的最新數據。SDAT和ACK組成一個9為的移位寄存器,它組成一個環狀結構。串行輸出的同時不斷采入總線上的數據。ACK標志位由總線控制,并可以由CPU存取(存入1對應的是非應答,存入0對應的應答)。在SCL線上的時鐘脈沖的上升沿,串行數據通過ACK標志位存入SDAT,串行數據在SCL時鐘脈沖下降沿沿BSD7移出當一個字節數據移入SADT后,SDAT中的數據有效,控制邏輯在第9個時鐘脈沖周期送出應答位。
為什么IIC總線進行數據發送時,時鐘信號為高電平期間,數據線上的數據必須保持數據穩定???這是因為會在高電平期間采集總線上的數據,如果此時總線上的數據不穩定,會導致采集的數據和發送的數據不一致,從而關閉發送(類似仲裁失敗)。協議規定只有在時鐘信號為低電平期間,數據線上的高電平或低電平才允許變化,這是因為BSD7中的數據是在時鐘下降沿發出的,且不會在時鐘脈沖低電平期間采集總線上的數據。
在CPU對SDAT寫入時,SDAT7裝入BSD7,這是向SDA線上發送的第一位數據,9個時鐘脈沖后SADT中的8位數據發送到SAD線上,應答位出現在ACK中,這樣發送到總線上的數據又返回到SDAT中。
SDA寄存器,包含個待發送的數據或一個剛收到的數據字節,發送時,數據總是從右向左移位。數據移出時,總線上的數據同時移入,移位寄存器的這種結構保證了總線競爭失敗時數據不會丟失。它以并行的方式與內部總線相連,以串行方式與SDA相連。發送數據時,由內部總線裝入到SDAT中,發送時,數據以串行從串行通道返回SDAT中。接收時,裝入新接收的SDA線上的數據。

評論