stm32-IIC讀寫EEPROM—時序說明


I2C 通訊協議:(Inter-Integrated Circuit)是由Phiilps 公司開發的,由於它引腳少,硬件實現簡單,可擴展性強,不需要USART、CAN  等通訊協議的外部收發設備,現在被廣泛地使用在系統內多個集成電路(IC)間的通訊,其常用的連接方式如下:

 

 物理層:

(1) 它是一個支持設備的總線。“總線”指多個設備共用的信號線。在一個I2C 通訊總線中,可連接多個I2C 通訊設備,支持多個通訊主機及多個通訊從機。

(2) 一個I2C 總線只使用兩條總線線路,一條雙向串行數據線(SDA) ,一條串行時鍾線(SCL)。數據線即用來表示數據,時鍾線用於數據收發同步。

(3) 每個連接到總線的設備都有一個獨立的地址,主機可以利用這個地址進行不同設備之間的訪問。

(4) 總線通過上拉電阻接到電源。當I2C 設備空閑時,會輸出高阻態,而當所有設備都空閑,都輸出高阻態時,由上拉電阻把總線拉成高電平。

(5) 多個主機同時使用總線時,為了防止數據沖突,會利用仲裁方式決定由哪個設備占用總線。

(6) 具有三種傳輸模式:標准模式傳輸速率為100kbit/s ,快速模式為400kbit/s ,高速模式下可達3.4Mbit/s,但目前大多I C 設備尚不支持高速模式。

(7) 連接到相同總線的IC 數量受到總線的最大電容400pF 限制

 

 

協議層:

  1. 起始信號:由主機的IIC接口產生的傳輸起始信號,這時連接到總線上的所有從機都會收到這個信號;
  2. 地址廣播:起始信號產生后,所有從機都會開始等待主機接下來廣播的從機地址信號,以選中從機設備,沒有被選中的將會忽略之后的數據信號;
  3. 傳輸方向:0表示主機向從機寫數據,1表示主機向從機讀數據;
  4. 應答信號:從機接收到匹配的地址之后,從機或主機會返回一個應答(ACK)或非應答(NACK)信號,只有接收到信號,主機才能繼續發送或接受數據;
  5. 寫數據/讀數據:主機每發送完一個數據包之后。都要重新等待從機的應答信號,並重復這個步驟;/從機每發送玩一個數據包之后,都會重新等待主機的應答信號,並重復這個步驟;
  6. 停止信號:數據傳輸完成后(得到NACK信號后),主機向從機發送一個停止傳輸信號,表示不再傳輸。/當主機希望停止接受數據時,就會返回一個NACK信號給從機,從機就會自動停止數據傳輸;

 

除了基本的讀寫,I2C通訊更常用的是復合格式,即第三幅圖的情況,該傳輸過程有兩次起始信號(S)。一般在第一次傳輸中,主機通過SLAVE_ADDRESS  尋找到從設備后,發送一段“數據”,這段數據通常用於表示從設備內部的寄存器或存儲器地址(注意區分它與 SLAVE_ADDRESS  的區別);在第二次的傳輸中,對該地址的內容進行讀或寫。也就是說,第一次通訊是告訴從機讀寫地址,第二次則是讀寫的實際內容。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM