I3C 總線協議詳細解析

目前隨着手機等移動設備包含的sensor越來越多,傳統應用在sensor上的I2C/SPI接口的侷限性也越來越明顯,典型的缺陷如下:

     1、sensor等設備的增加,對控制總線的速度和功耗提出了更加嚴苛的要求;

     2、雖然I2C是一種2線接口,但是往往此類device需要額外增加一條中斷INT信號線;

     處於解決上述問題的原因,推出了I3C的接口總線和協議,下面一起來看下I3C總線的特性。

一、I3C的應用場景

從上圖中我們可以看到:

      1、I3C總線可以應用在各種sensor中;

      2、可以使用在任何傳統的I2C/SPI/UART等接口的設備中。

二、什麼是I3C

I3C吸納了I2C和SPI的關鍵特性,並將其統一起來,同時在I2C的基礎上,保留了2線的串行接口結構,這樣工程師就可以在單個設備中連接大量的傳感器。

       從上圖中我們可以將特性具體一下:

       1、I3C總線可以支持multi-master即多主設備

       2、I3C總線與傳統的I2C設備仍然是兼容的

       3、可以支持軟中斷

      4、相比較於I2C總線的功耗更低

      5、速度更快,可以支持到12.5MHZ

      從下圖中可以看到在傳統的I2C接口設備中包含了太多的I/0口了(碎片式的接口),將之(I2C/SPI)替換成I3C之後可以節省很大部分的信號線(省去了中斷信號的一根線EINT,若取代SPI,可以省的更多)的開銷,在佈局佈線時也更方便.

按照目前MIPI聯盟的規劃,I3C總線在將來除了應用sensor之外,還有如下的應用領域:camera、TP等

三、I3C接口協議

     

從上圖就可以很清楚的看到I3C總線的應用了,I3C總線中支持多主設備,同時兼容I2C。

其中支持設備的具體類型有:

1、I3C主設備

     -----SDR-only master

2、I3C secondary MASTER

     -----SDR-only secondary master(注意是slave of main master,即相比較主設備而言仍然時從設備)

3、I3C 從設備

    -----SDR only slave

 4、I2C slave

 

 上圖爲I3C的串行clk和data傳輸的波形,注意下方的標註:SDA的接口爲開漏結構,而SCL的接口爲推輓結構!

四、I3C特性詳細介紹

1、SDR動態地址分配

---I3C可以爲所有的I3C從設備動態的分配7-bit address(注:在I3C從設備中會有兩個standardized characteristics register和內部的48-bit的臨時ID去協助此過程,具體咋協助俺還不知道)

---仍然支持I2C的靜態地址

2、SDR的帶內中斷

---在“bus available(總線空閒)”的狀態下,從設備可以發出“START"請求信號;

---當主設備接收到請求信號後,主設備發出時鐘信號並將分配的地址驅動到總線上,然後從設備響應地址(爲防止理解問題,英文描述如下)

---如果此時有多個從設備響應中斷,那麼分配的地址中最低的一個設備將會贏得仲裁

---數據載荷(即強制數據位)可以和帶內中斷一起使用(???未明白,後面填坑)

3、error detection  and recovery methodology(錯誤檢測和恢復方法)

 ---主要針對master 和slave產生的錯誤(9種錯誤類型:奇偶性、循環冗餘校驗CRC5)

4、common command codes(公共命令碼)

  

5、對I2C總線的支持

---支持I2C的fast mode/fast mode+(note:fast speed 1Mbit/s,high speed 3.4Mbit/s)

---對於the velocity of i3c clk 12.5MHZ需要50ns的spike filters(tsp)尖峯濾波器

---I3C不支持clock stretching(時鐘拉伸,不瞭解的童鞋可以查查I2C的協議)

---不使用open-drain驅動器

---不支持10-bit的I2C擴展地址

6、I3C的HDR-DDR 模式

 

7、I3C的拓撲

 

  附:相關知識點

1、clk stretching(時鐘拉伸/延展)

       照例附上I2C協議中關於I2C stretching的介紹,其主要的作用就是在I2C總線進行通信是,其速度是由主設備決定的,與RS232不同,I2C總線會根據預先設定好的波特率在主設備和從設備之間提供一個嚴格精確的時鐘信號,然而在某些時候,I2C的從設備並沒有準備好進行通信(翻譯很簡略,詳細見下文),需要慢一點兒,那麼實現這一功能的機制就是clock stretching,當slave需要進行clock stetcing的時候,就需要將clk信號拉低以減小總線的速度,同時,作爲master而言,需要等待clk被拉高才能繼續傳輸(主設備需要不斷的回讀);

     

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章