2011年6月21日 星期二

DIY - PIC:PIC18F4550 I2C 介面 (八十七)

DIY - PICPIC18F4550 I2C 介面 (十七)

SD 記憶卡中使用了 SPI 串列外設介面,手頭上有一枚 DS1307 的實時時鐘 IC,但介面是用 I ² C 來控,對於這兩種通信串行介面是有不同,串行接口有很多品種,其中3線,2線和單線都比較上普遍,串行外設介面SPI)是屬於 3線,而 I ² C 則屬於 2 線,SPI 的原理已經在之前的文章介紹過,所以都不再化時間了,但主要缺點是 3線接口需要一個單獨的低電平有效 CS 線來控制,3 線接口也沒有提供數據確認已正確傳送或接收。從軟件角度來看,在單獨 (single-master/single-slave) 使用時,3 線接口簡單及更高效過 2 線接口。

I ² C 系統結構圖
Interface
Advantages
Disadvantages
3-Wire :
SPI, QSPI, and MICROWIRE PLUS
1. Speed
2. No pullup resistors required
3. Full-duplex operation
4. Noise immunity

1. Larger number of bus line connections
2. Individual chip-select lines required to communicate with more than one slave at a time
3. No acknowledgment of received data

2-Wire :
I²C and SMBus
1. Fewer bus line connections
2. Multiple devices share the same bus
3. Received data is acknowledged

1. Speed: SMBus limited to 100kHz; I²C limited to 3.4MHz
2. Half-duplex operation
3. Open-drain bus lines require pullup resistors
4. Reduced noise immunity

SPI I ² C  優缺點比較 (資料來源:Maxim)  
I ² C (Inter Integrated Circuit , IIC) 最早的版本是 Philps 公司在 1992 所設計的串列匯流排介面,利用兩條訊號控制線來進行資料傳輸,其中兩條訊號控制線分別為:
  1. SCL (Serial Clock) : 作為資料傳輸時的參考時脈
  2. SDA (Serial Data) : 以串列傳輸(一次一位元)的方式傳送資料
I ² C 線結構
2 線接口,只使用一個數據線(SDASMBDATA)和時鐘線(SCL SMBCLK)。由於接線少,優勢在於設計簡單,特別適合如手機和光纖應用。兩線接口也允許連接多個 Slave 在同一總線上,而無需片選 (Chip Select, CS) 信號。這種設計是可能的,因為每一個 Slave 都有自己唯一的地址。兩線接口也發送一個應答位成功讀取後,已經完成。因為 2 線接口只有一個數據線,他們可以工作在半雙工模式上(在同一週期內數據只能發送或接收一個,但不能同時發送同接收)。2 線接口電平觸發,在嘈雜的環境中,有可能引起的問題,如一個數據位被錯誤地鑑定。

I ² C 完整的資料傳輸
因此,設計是適用於 IC IC 之間的資料溝通,低功率且速度快,而且分為 master slave 裝置,利用 master 裝置發送訊號出去,每一個具有 I ² C 介面的晶片都有一個屬於 I ² C 的識別 ID 碼,因此同樣的 SCL SDA 控制線上可一次並聯 2 n 次方晶片,當 master 裝置發送訊號出去時,並聯的晶片將同時收到訊號,但只有正確對應的 ID 碼晶片才會回送訊息給 master 端,進而執行資料傳輸的動作,特別需要注意到的一點是,I ² C置的 slave 端無法主動傳送或要求訊號,一定要先由 master 端發送訊號後,才能有所回應。

I ² C 典型的 SDA SCL 信號
I ² C 這種方式的傳輸最大可以有 400Kbps 只比 SPI 快三倍多而已,它的腳位是 2(接地不算) ,一個叫 SDA 另一個叫 SCL,這種型態多半是拿來做電路板之內各個IC之間的橫向溝通,因此 400Kbps 的速度其實也是足夠,它的工作方式是以 SCL 來當做觸發準位,平常時都是在 High,一旦遇到要傳輸開始,就會產生一個 Low 電位,然後再去 SDA 取樣(信號端) ,這種方式由於是所有 IC 都共用這兩條線,所以在發送資料之前還必須再多送一個 slave address,以利 IC 辨別現在是在呼叫誰,否則大家同時都收到,卻不知道哪一個要回應會造成錯亂。

I ² C 資料序列內容
2011 06 21 天氣報告 
氣溫:28.0 @ 22:00 
相對濕度:百分之83% 
天氣:大致多雲 
一號戒備信號 ( 2011 06 20 21 35 ) 

相關網頁

沒有留言:

張貼留言