這是自己之前在學習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 second,Hz (赫茲)是指頻率的單位,即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嗎?我想應該是不會的,因為規範就是如此!
沒有留言:
張貼留言