|
最近在學(xué)習(xí)嵌入式處理器的過程之中,發(fā)現(xiàn)嵌入式系統(tǒng)的學(xué)習(xí)方法不過是先從芯片本身入手,掌握它最基本的系統(tǒng)架構(gòu),了解它開發(fā)的一般特點(diǎn)、開發(fā)流程、調(diào)試方法和板級(jí)支持包等功能。然后就是對(duì)每一個(gè)模塊的學(xué)習(xí),特別是體系結(jié)構(gòu)和編程模型。提醒大家一句,不要小視匯編語言的學(xué)習(xí),特別是要理解每代芯片的底層架構(gòu),存儲(chǔ)器的映射,中斷機(jī)制,指令集系統(tǒng)等等。對(duì)于硬件學(xué)習(xí)來說,嵌入式系統(tǒng)的學(xué)習(xí)還有一大塊內(nèi)容就是對(duì)它外圍器件和基本輸入輸出設(shè)備的學(xué)習(xí),通俗點(diǎn)說,就是要了解它能干什么?怎么讓它干的問題。
最近,為了準(zhǔn)備導(dǎo)師規(guī)定做的一次學(xué)術(shù)報(bào)告,給其他同學(xué)們講述ARM Cortex M3的一個(gè)基本硬件模塊,做一下I2C總線知識(shí)的基本梳理,同時(shí)好好體會(huì)一下作為未來立志于從事IT工程師這種角色應(yīng)當(dāng)怎樣去寫技術(shù)筆記。
I2C總線是NXP公司推出的一種芯片間串行傳輸總線,能夠傳輸?shù)木嚯x雖然不太遠(yuǎn),只有7.6m,但對(duì)于芯片間傳輸,可靠性非常好,因此得到了很廣泛的應(yīng)用,而且結(jié)構(gòu)簡(jiǎn)單,便于推廣。它采用兩線制,由串行時(shí)鐘線SCL和串行數(shù)據(jù)線SDA構(gòu)成,只需要兩根線就能實(shí)現(xiàn)總線上各個(gè)期間的全雙工同步數(shù)據(jù)傳送,可以很方便的構(gòu)成多級(jí)系統(tǒng)和外圍器件擴(kuò)展系統(tǒng)。
注意這么幾點(diǎn):
所有掛接在I2C總線上的器件和接口電路都應(yīng)具有I2C總線接口,且所有的SDA/SCL同名端相連?偩上所有器件要依靠SDA發(fā)送的地址信號(hào)尋址,不需要片選線。
特點(diǎn):組成系統(tǒng)結(jié)構(gòu)簡(jiǎn)單,占用空間小,芯片管腳的數(shù)量少,無需片選信號(hào),價(jià)格低。允許若干兼容器件共享總線,應(yīng)用比較廣泛?偩的長(zhǎng)度可達(dá)7.6m,傳送速度可達(dá)400kbps,標(biāo)準(zhǔn)速率為100kbps。支持多個(gè)組件。支持多主控器件(某時(shí)刻只能有一個(gè)主控器件)。I2C總線上所有設(shè)備的SDA, SCL引腳必須外接上拉電阻。
通信規(guī)則:
1、 數(shù)據(jù)有效性:
在SCL高電平期間,SDA線上的數(shù)據(jù)必須保持穩(wěn)定。SDA上的電平高低表示需要傳輸?shù)臄?shù)據(jù),數(shù)據(jù)線SDA僅可在時(shí)鐘SCL為低時(shí)才能改變。
2、 起始格式:
起始信號(hào)用于開始I2C總線通信。其中,起始信號(hào)是在時(shí)鐘線SCL為高電平期間,數(shù)據(jù)SDA上高電平向低電平變化的下降沿信號(hào)。起始信號(hào)出現(xiàn)以后,才可以進(jìn)行后續(xù)的I2C總線尋址或數(shù)據(jù)傳輸?shù)?br />
這里,注意到:SDA產(chǎn)生高電平的時(shí)間要大于4.7us,而且SDA由高電平向低電平跳變后,持續(xù)時(shí)間要大于4us以上,然后SCL才被拉低為0。
3、 停止格式
終止信號(hào)用于終止I2C總線通信。其中,終止信號(hào)是在時(shí)鐘線SCL為高電平期間,數(shù)據(jù)線SDA上低電平到高電平變化的上升沿信號(hào)。終止信號(hào)一出現(xiàn),所有I2C總線操作都結(jié)束,并釋放總線控制權(quán)。
和起始信號(hào)類似,終止信號(hào)也必須滿足在SCL高電平期間,SDA產(chǎn)生一個(gè)持續(xù)時(shí)間大于4.7us的上升沿跳變,才能觸發(fā)。
4、 應(yīng)答信號(hào)
應(yīng)答信號(hào)用于表明I2C總線數(shù)據(jù)傳輸?shù)慕Y(jié)束。 I2C總線數(shù)據(jù)傳送時(shí),一個(gè)字節(jié)數(shù)據(jù)傳送完畢后都必須由主器件產(chǎn)生應(yīng)答信號(hào)。主器件在第9個(gè)時(shí)鐘位上釋放數(shù)據(jù)總線SDA,使其處于高電平狀態(tài),此時(shí)從器件輸出低電平拉低數(shù)據(jù)總線SDA為應(yīng)答信號(hào)。應(yīng)答信號(hào)的時(shí)序,如圖所示。
5、 字節(jié)格式
SDA線上的每個(gè)字節(jié)必須為8位長(zhǎng),不限制每次傳輸?shù)淖止?jié)個(gè)數(shù)。且每個(gè)字節(jié)后面必須有一個(gè)應(yīng)答位,當(dāng)接收器不能接收另一個(gè)完整的字節(jié)時(shí),可以保持時(shí)鐘線SCL為低電平并強(qiáng)制發(fā)送器進(jìn)入等待狀態(tài)。當(dāng)接收器釋放時(shí)鐘線SCL(即將SCL置為高電平),數(shù)據(jù)傳輸繼續(xù)進(jìn)行。
6、 帶7位地址的數(shù)據(jù)格式(MSB)
從機(jī)地址必須在起始信號(hào)之后發(fā)送,MSB的格式為前7位為地址,最后一位為數(shù)據(jù)方向位R/S,R表示接收(receive=1),S表示發(fā)送(send=0)。首字節(jié)的R/S位如果為0,表示主機(jī)將向從機(jī)發(fā)送(寫)信息,如果為1,則反之。
7、 總線仲裁
只有在總線空閑時(shí),主機(jī)才可以啟動(dòng)傳輸過程。如果在起始條件最少保持時(shí)間內(nèi),兩個(gè)或兩個(gè)以上的主機(jī)都有可能產(chǎn)生起始條件。則當(dāng)SCL為高電平時(shí)在SDA上發(fā)生仲裁。此時(shí),發(fā)送SDA高電平的主機(jī)將要關(guān)閉其數(shù)據(jù)輸入狀態(tài),將總線交給SDA正在發(fā)送低電平的主機(jī)
|
|