從《單片機原理及應用》抄錄的筆記
1、IIC總線架構
IIC總線只有兩根連線:
- 一根數據線SDA
- 一根時鍾線SCL
所有連接線IIC總線上的器件其數據線都連接到SDA線上,其時鍾線都連接到SCL上。
IIC總線的基本架構如圖所示(Rp約5.1kΩ):
2、IIC總線的特點
1)采用2線制
2)傳輸速率高
標准模式傳輸速率為100kbps,快速模式為400kbps,高速模式為3.4Mbps。
# bps的解釋
- 是bits per second的縮寫,即比特率、比特/秒、位/秒、每秒傳送二進制位數,是數據傳輸速率的常用單位,通常用來衡量帶寬的單位。
- 另外軟件上顯示的速度則是指每秒傳輸的字節數(Byte),通常用B(大寫)表示。
- 數據傳輸(如上面的bps)的衡量單位K是十進制含義,數據存儲(如下面的內存換算)的K是2進制的含義。
1MB=1024KB=1024*1024B,1B(字節)=8b(位)
1M帶寬即指1Mbps=1000kbps=1000/8 kBps = 125kBps——注意大小寫b:前兩個是小寫b,后兩個是大寫B
也就是說生活中的100M寬帶,理論傳輸速率應該是12.5MBps(最直觀的就是手機上面顯示的實時網速),但是因為各種原因,實際的傳輸速率一般不會達到12.5MBps。
3)支持多主和主/從兩種工作方式
各主方式時,要求各主單片機配備IIC總線標准接口。(80C5單片機沒有IIC總線標准接口,只能工作於主/從方式)
3、IIC總線的數據傳輸
在IIC總線上,每一位數據位的傳輸都與時鍾脈沖相對應。
邏輯0和邏輯1的信號電平取決於相應的電源電壓,使不同的半導體制造工藝,如CMOS、NMOS等類型的電路都可以接入總線。對於數據傳輸,IIC總線協議規定了如下信號時序:
1)起始和停止信號
起始和停止信號如圖所示:
- SCL為高電平期間,SDA由高電平向低電平的變化表示起始信號
- SCL為高電平期間,SDA由低電平向高電平的變化表示停止信號。
起始和終止信號如下圖所示。
總線空閑時,SCL和SDA兩條線都是高電平。
SDA線的起始信號和停止信號由主機發出。
在起始信號后,總線處於被占用的狀態;在停止信號后,總線處於空閑狀態。
2)字節格式
傳輸字節數沒有限制,但每個字節必須是8位長度。
先傳最高位(MSB),每個被傳輸字節后面都要跟隨應答位(即一幀共有9位)。
字節傳送時序如圖所示:
從器件接收數據時,在第9個時鍾脈沖要發出應答脈沖,但在數據傳輸一段時間后無法繼續接收更多的數據時,從器件可以采用“非應答”通知主機,主機在第9個時鍾脈沖檢測到SDA線無有效應答負脈沖(即非應答)則會發出停止信號以結束數據傳輸。
與主機發送數據相似,主機在接收數據時,它收到最后一個數據字節后,必須向從器件發出一個結束傳輸的“非應答”信號。然后從器件釋放SDA線,以允許主機產生停止信號。
( ——將單片機稱作主機,擴展的器件稱為從器件)
3)數據傳輸時序
對於數據傳輸,IIC總線協議規定:
-
SCL由主機控制,從器件在自己忙時拉低SCL線以表示自己處於“忙狀態”。
-
字節數據由發送器發出,響應位由接收器發出。
-
SCL高電平期間,SDA線數據要穩定,SCL低電平期間,SDA線數據允許更新(看下面的圖,SDA每次改變高低電平都是在SCL為低電平期間)。
數據傳輸時序圖如下圖所示:
4)尋址字節
主機發出起始信號要先傳送1個尋址字節:7位從器件地址,1位傳輸方向控制位(用“0”表示主機發送數據,“1”表示主機接收數據)。
格式為:
D7~D1位組成從器件的地址。D0位是數據傳送方向位。
主機發送地址時,總線上的每個從器件都將這7位地址碼與自己的地址進行比較。如果相同,則認為自己正在被主機尋址。
器件地址由固定部分和可編程兩部分組成。