10.09.2020

不負責任的I2C心得!!

這是自己之前在學習I2C時的一些鳥不拉雞的心得,因為一直都都把它們記在筆記本裡,想想乾脆也把它們整理一下放在BLOG上好了。

I2C,標準的全名叫作「Inter-Integrated Circuit」,念法叫作「I-squared-C」;"squared"的意思是指「數學裡的平方」,因為它的文字表達方式:I2C─就像I的2次方

I2C主要是應用在晶片 (Chipset)與晶片之間的溝通,它只需要2根訊號線:SDA (Serial Data Line)CKL (Clock Line),在業界算是非常常用的通訊協定;現在上網Google I2C的規格書,應該會找到2個版本,一個是Philips Semiconductors時期的AN10216-01;另一個則是NXP Semiconductors時期的UM10204

I2C總共分為6種模式:

0. 低速模式 (Low-speed mode, Ls-mode)10 KHz

1. 標準模式 (Standard-mode, Sm)100 KHz

2. 快速模式 (Fast-mode, Fm)400 KHz

3. 高速模式 (High-speed mode, Hs-mode)3.4 MHz

4. 快速模式PLUS (Fast Mode plue, Fm+)1 MHz

5. 超快速模式 (Ultra Fast-mode, UFm)5 MHz

其實當初兩份工作都有接觸到I2C,而且都是使用Fm的400 KHz,當時一直都搞不清楚這400 KHz是什麼意思 (因為自己本身並不是電子電機相關科系),而規格書上又有提到:
快速模式 (Fm)下,SCL的時脈訊號在低準位有效期間 (LOW period of the SCL clock),「至少 (minimum)」要1.3 μs;而在高準位有效期間 (HIGH period of the SCL clock),則是要「至少 (min)」0.6 μs

我當時就是因為搞不懂,所以才有了這乙份無聊的筆記。原來,400 KHz的意思是─400K bit per secondHz (赫茲)是指頻率的單位,即1秒鐘所發生的次數

400 KHz即400,000 bps,1秒鐘可以傳送40萬bits的資料!換句話說,每傳送1 bit的資料,僅需0.0000025秒 (2.5 μs)

規格書提到的SCL高低有效準位期間分別是「至少」1.3 μs和0.6 μs,即SCL的1個週期是1.9 μs;既然如此,我們為了方便運算,把高準位的有效期間提高至1.5 μs,把低準位的有效期間提高至1.0 μs。如此,1.5 μs + 1.0 μs = 2.5 μs,就剛好是Fm 400 KHz所要求的時脈了。

那假如工程師在程式設計上非常地精準,可以控制到高低準位的「至少」要求1.3 μs和0.6 μs,那傳輸速率會大於400 KHz嗎?我想應該是不會的,因為規範就是如此!

沒有留言:

張貼留言