新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > SPI、IIC、UART、can區(qū)別

SPI、IIC、UART、can區(qū)別

作者: 時(shí)間:2016-11-28 來(lái)源:網(wǎng)絡(luò) 收藏

響應(yīng)

數(shù)據(jù)傳輸必須帶響應(yīng)。相關(guān)的響應(yīng)時(shí)鐘脈沖由主機(jī)產(chǎn)生,當(dāng)主器件發(fā)送完一字節(jié)的數(shù)據(jù)后,接著發(fā)出對(duì)應(yīng)于SCL線上的一個(gè)時(shí)鐘(ACK)認(rèn)可位,此時(shí)鐘內(nèi)主器件釋放SDA線,一字節(jié)傳送結(jié)束,而從器件的響應(yīng)信號(hào)將SDA線拉成低電平,使SDA在該時(shí)鐘的高電平期間為穩(wěn)定的低電平。從器件的響應(yīng)信號(hào)結(jié)束后,SDA線返回高電平,進(jìn)入下一個(gè)傳送周期。

通常被尋址的接收器在接收到的每個(gè)字節(jié)后必須產(chǎn)生一個(gè)響應(yīng)。當(dāng)從機(jī)不能響應(yīng)從機(jī)地址時(shí),從機(jī)必須使數(shù)據(jù)線保持高電平,主機(jī)然后產(chǎn)生一個(gè)停止條件終止傳輸或者產(chǎn)生重復(fù)起始條件開(kāi)始新的傳輸。如果從機(jī)接收器響應(yīng)了從機(jī)地址但是在傳輸了一段時(shí)間后不能接收更多數(shù)據(jù)字節(jié),主機(jī)必須再一次終止傳輸。這個(gè)情況用從機(jī)在第一個(gè)字節(jié)后沒(méi)有產(chǎn)生響應(yīng)來(lái)表示。從機(jī)使數(shù)據(jù)線保持高電平主機(jī)產(chǎn)生一個(gè)停止或重復(fù)起始條件。完整的數(shù)據(jù)傳送過(guò)程如圖5所示。

圖5 完整的數(shù)據(jù)傳送過(guò)程

I2C總線還具有廣播呼叫地址用于尋址總線上所有器件的功能。若一個(gè)器件不需要廣播呼叫尋址中所提供的任何數(shù)據(jù),則可以忽咯該地址不作響應(yīng)。如果該器件需要廣播呼叫尋址中按需提供的數(shù)據(jù),則應(yīng)對(duì)地址作出響應(yīng),其表現(xiàn)為一個(gè)接收器。

3 總線基本操作
I2C規(guī)程運(yùn)用主/從雙向通訊。器件發(fā)送數(shù)據(jù)到總線上,則定義為發(fā)送器,器件接收數(shù)據(jù)則定義為接收器。主器件和從器件都可以工作于接收和發(fā)送狀態(tài)。 總線必須由主器件(通常為微控制器)控制,主器件產(chǎn)生串行時(shí)鐘(SCL)控制總線的傳輸方向,并產(chǎn)生起始和停止條件。SDA線上的數(shù)據(jù)狀態(tài)僅在SCL為低電平的期間才能改變,SCL為高電平的期間,SDA狀態(tài)的改變被用來(lái)表示起始和停止條件。參見(jiàn)圖1。

圖1 串行總線上的數(shù)據(jù)傳送順序


3.1 控制字節(jié)
在起始條件之后,必須是器件的控制字節(jié),其中高四位為器件類型識(shí)別符(不同的芯片類型有不同的定義,EEPROM一般應(yīng)為1010),接著三位為片選,最后一位為讀寫(xiě)位,當(dāng)為1時(shí)為讀操作,為0時(shí)為寫(xiě)操作。如圖2所示。

圖2 控制字節(jié)配置

3.2 寫(xiě)操作 寫(xiě)操作分為字節(jié)寫(xiě)和頁(yè)面寫(xiě)兩種操作,對(duì)于頁(yè)面寫(xiě)根據(jù)芯片的一次裝載的字節(jié)不同有所不同。關(guān)于頁(yè)面寫(xiě)的地址、應(yīng)答和數(shù)據(jù)傳送的時(shí)序參見(jiàn)圖3。

圖3 頁(yè)面寫(xiě)

3.3 讀操作讀操作有三種基本操作:當(dāng)前地址讀、隨機(jī)讀和順序讀。圖4給出的是順序讀的時(shí)序圖。應(yīng)當(dāng)注意的是:最后一個(gè)讀操作的第9個(gè)時(shí)鐘周期不是“不關(guān)心”。為了結(jié)束讀操作,主機(jī)必須在第9個(gè)周期間發(fā)出停止條件或者在第9個(gè)時(shí)鐘周期內(nèi)保持SDA為高電平、然后發(fā)出停止條件。

圖4 順序讀

4 實(shí)例:X24C04與MCS-51單片機(jī)軟硬件的實(shí)現(xiàn)X24C04是XICOR公司的CMOS 4096位串行EEPROM,內(nèi)部組織成512×8位。16字節(jié)頁(yè)面寫(xiě)。與MCS-51單片機(jī)接口如圖5所示。由于SDA是漏極開(kāi)路輸出,且可以與任何數(shù)目的漏極開(kāi)路或集電極 開(kāi)路輸出“線或”(wire-Ored)連接。上拉電阻的選擇可參考X24C04的數(shù)據(jù)手冊(cè)。下面是通過(guò)I2C接口對(duì)X24C04進(jìn)行單字節(jié)寫(xiě)操作的例程。流程圖及源程序如下:

圖5 X24C04與51單片機(jī)接口

;名稱:BSENT
;描述:寫(xiě)字節(jié)
;功能:寫(xiě)一個(gè)字節(jié)
;調(diào)用程序:無(wú)
;輸入?yún)?shù):A
;輸出參數(shù):無(wú)
BSEND: MOV R2,#08H ;1字節(jié)8位

SENDA: CLR P3.2
RLC A ;左移一位
MOV P3.3,C;寫(xiě)一位

SETB P3.2
DJNZ R2,SENDA;寫(xiě)完8個(gè)字節(jié)?
CLR P3.2;應(yīng)答信號(hào)
SETB P3.3
SETB P3.2
RET

圖6 流程圖

5結(jié)束語(yǔ)

在I2C總線的應(yīng)用中應(yīng)注意的事項(xiàng)總結(jié)為以下幾點(diǎn):
1) 嚴(yán)格按照時(shí)序圖的要求進(jìn)行操作,
2) 若與口線上帶內(nèi)部上拉電阻的單片機(jī)接口連接,可以不外加上拉電阻。
3) 程序中為配合相應(yīng)的傳輸速率,在對(duì)口線操作的指令后可用NOP指令加一定的延時(shí)。
4) 為了減少意外的干擾信號(hào)將EEPROM內(nèi)的數(shù)據(jù)改寫(xiě)可用外部寫(xiě)保護(hù)引腳(如果有),或者在EEPROM內(nèi)部沒(méi)有用的空間寫(xiě)入標(biāo)志字,每次上電時(shí)或復(fù)位時(shí)做一次檢測(cè),判斷EEPROM是否被意外改寫(xiě)。

關(guān)于IIC總線的操作注意事項(xiàng)

1、對(duì)IIC總線的一次操作完之后,需要等待一段時(shí)間才能進(jìn)行第二次操作。否則是啟動(dòng)不了總線的:)
2、在時(shí)鐘線(SCL)為高電平的時(shí)候,一定不能動(dòng)數(shù)據(jù)線(SDA)狀態(tài),除非是啟動(dòng)或者結(jié)束總線

CAN總線
 

現(xiàn)場(chǎng)總線是當(dāng)今自動(dòng)化領(lǐng)域技術(shù)發(fā)展的熱點(diǎn)之一,被譽(yù)為自動(dòng)化領(lǐng)域的計(jì)算機(jī)局域網(wǎng)。它的出現(xiàn)為分布式控制系統(tǒng)實(shí)現(xiàn)各節(jié)點(diǎn)之間實(shí)時(shí)、可靠的數(shù)據(jù)通信提供了強(qiáng)有力的技術(shù)支持。CAN(Controller Area Network)屬于現(xiàn)場(chǎng)總線的范疇,它是一種有效支持分布式控制或?qū)崟r(shí)控制的串行通信網(wǎng)絡(luò)。較之目前許多RS-485基于R線構(gòu)建的分布式控制系統(tǒng)而言, 基于CAN總線的分布式控制系統(tǒng)在以下方面具有明顯的優(yōu)越性:
首先,CAN控制器工作于多主方式,網(wǎng)絡(luò)中的各節(jié)點(diǎn)都可根據(jù)總線訪問(wèn)優(yōu)先權(quán)(取決于報(bào)文標(biāo)識(shí)符)采用無(wú)損結(jié)構(gòu)的逐位仲裁的方式競(jìng)爭(zhēng)向總線發(fā)送數(shù)據(jù),且CAN協(xié)議廢除了站地址編碼,而代之以對(duì)通信數(shù)據(jù)進(jìn)行編碼,這可使不同的節(jié)點(diǎn)同時(shí)接收到相同的數(shù)據(jù),這些特點(diǎn)使得CAN總線構(gòu)成的網(wǎng)絡(luò)各節(jié)點(diǎn)之間的數(shù)據(jù)通信實(shí)時(shí)性強(qiáng),并且容易構(gòu)成冗余結(jié)構(gòu),提高系統(tǒng)的可靠性和系統(tǒng)的靈活性。而利用RS-485只能構(gòu)成主從式結(jié)構(gòu)系統(tǒng),通信方式也只能以主站輪詢的方式進(jìn)行,系統(tǒng)的實(shí)時(shí)性、可靠性較差;
其次,CAN總線通過(guò)CAN控制器接口芯片82C250的兩個(gè)輸出端CANH和CANL與物理總線相連,而CANH端的狀態(tài)只能是高電平或懸浮狀態(tài),CANL端只能是低電平或懸浮狀態(tài)。這就保證不會(huì)出現(xiàn)象在RS-485網(wǎng)絡(luò)中,當(dāng)系統(tǒng)有錯(cuò)誤,出現(xiàn)多節(jié)點(diǎn)同時(shí)向總線發(fā)送數(shù)據(jù)時(shí),導(dǎo)致總線呈現(xiàn)短路,從而損壞某些節(jié)點(diǎn)的現(xiàn)象。而且CAN節(jié)點(diǎn)在錯(cuò)誤嚴(yán)重的情況下具有自動(dòng)關(guān)閉輸出功能,以使總線上其他節(jié)點(diǎn)的操作不受影響,從而保證不會(huì)出現(xiàn)象在網(wǎng)絡(luò)中,因個(gè)別節(jié)點(diǎn)出現(xiàn)問(wèn)題,使得總線處于“死鎖”狀態(tài)。
而且,CAN具有的完善的通信協(xié)議可由CAN控制器芯片及其接口芯片來(lái)實(shí)現(xiàn),從而大大降低系統(tǒng)開(kāi)發(fā)難度,縮短了開(kāi)發(fā)周期,這些是只僅僅有電氣協(xié)議的RS-485所無(wú)法比擬的。另外,與其它現(xiàn)場(chǎng)總線比較而言,CAN總線是具有通信速率高、容易實(shí)現(xiàn)、且性價(jià)比高等諸多特點(diǎn)的一種已形成國(guó)際標(biāo)準(zhǔn)的現(xiàn)場(chǎng)總線。這些也是目前 CAN總線應(yīng)用于眾多領(lǐng)域,具有強(qiáng)勁的市場(chǎng)競(jìng)爭(zhēng)力的重要原因。
CAN (Controller Area Network)即控制器局域網(wǎng)絡(luò),屬于工業(yè)現(xiàn)場(chǎng)總線的范疇。與一般的通信總線相比,CAN總線的數(shù)據(jù)通信具有突出的可靠性、實(shí)時(shí)性和靈活性。由于其良好的性能及獨(dú)特的設(shè)計(jì),CAN總線越來(lái)越受到人們的重視。它在汽車領(lǐng)域上的應(yīng)用是最廣泛的,世界上一些著名的汽車制造廠商,如BENZ(奔馳)、BMW(寶馬)、PORSCHE(保時(shí)捷)、ROLLS-ROYCE(勞斯萊斯)和JAGUAR(美洲豹)等都采用了CAN總線來(lái)實(shí)現(xiàn)汽車內(nèi)部控制系統(tǒng)與各檢測(cè)和執(zhí)行機(jī)構(gòu)間的數(shù)據(jù)通信。同時(shí),由于CAN總線本身的特點(diǎn),其應(yīng)用范圍目前已不再局限于汽車行業(yè),而向自動(dòng)控制、航空航天、航海、過(guò)程工業(yè)、機(jī)械工業(yè)、紡織機(jī)械、農(nóng)用機(jī)械、機(jī)器人、數(shù)控機(jī)床、醫(yī)療器械及傳感器等領(lǐng)域發(fā)展。CAN已經(jīng)形成國(guó)際標(biāo)準(zhǔn),并已被公認(rèn)為幾種最有前途的現(xiàn)場(chǎng)總線之一。其典型的應(yīng)用協(xié)議有: SAE J1939/ISO11783、CANOpen、CANaerospace、DeviceNet、NMEA 2000等。

什么是CAN總線?
CAN意為Controller Area Network的縮寫(xiě),意為控制區(qū)域網(wǎng)絡(luò)。是國(guó)際上流行的現(xiàn)場(chǎng)總線中的一種。是一種特別適合于組建互連的設(shè)備網(wǎng)絡(luò)系統(tǒng)或子系統(tǒng)。
2. CAN總線特點(diǎn)?
l CAN是到目前為止為數(shù)不多的有國(guó)際標(biāo)準(zhǔn)的現(xiàn)場(chǎng)總線
l CAN通訊距離最大是10公里(設(shè)速率為5Kbps),或最大通信速率為1Mbps(設(shè)通信距離為40米)。

CAN總線上的節(jié)點(diǎn)數(shù)可達(dá)110個(gè)。通信介質(zhì)可在雙絞線,同軸電纜,光纖中選擇。

CAN采用非破壞性的總線仲裁技術(shù),當(dāng)多個(gè)節(jié)點(diǎn)同時(shí)發(fā)送數(shù)據(jù)時(shí),優(yōu)先級(jí)低的節(jié)點(diǎn)會(huì)主動(dòng)退出發(fā)送,高優(yōu)先級(jí)的節(jié)點(diǎn)可繼續(xù)發(fā)送,節(jié)省總線仲裁時(shí)間。
CAN是多主方式工作,網(wǎng)上的任一節(jié)點(diǎn)均可在任意時(shí)刻主動(dòng)地向網(wǎng)絡(luò)上其他節(jié)點(diǎn)發(fā)送信息。

CAN采用報(bào)文識(shí)別符識(shí)別網(wǎng)絡(luò)上的節(jié)點(diǎn),從而把節(jié)點(diǎn)分成不同的優(yōu)先級(jí),高優(yōu)先級(jí)的節(jié)點(diǎn)享有傳送報(bào)文的優(yōu)先權(quán)。

報(bào)文是短幀結(jié)構(gòu),短的傳送時(shí)間使其受干擾概率低,CAN有很好的效驗(yàn)機(jī)制,這些都保證了CAN通信的可靠性。

3. CAN總線應(yīng)用領(lǐng)域

CAN總線最初是德國(guó)BOSCH為汽車行業(yè)的監(jiān)測(cè),控制而設(shè)計(jì)的?,F(xiàn)已應(yīng)用到鐵路、交通、國(guó)防、工程、工業(yè)機(jī)械、紡織、農(nóng)用機(jī)械、數(shù)控、醫(yī)療器械機(jī)器人、樓宇、安防等方面。

I2C(Inter-Integrated Circuit)總線

I2C(Inter-Integrated Circuit)總線是一種由PHILIPS公司開(kāi)發(fā)的兩線式串行總線,用于連接微控制器及其外圍設(shè)備。I2C總線產(chǎn)生于在80年代,最初為音頻和視頻設(shè)備開(kāi)發(fā),如今主要在服務(wù)器管理中使用,其中包括單個(gè)組件狀態(tài)的通信。例如管理員可對(duì)各個(gè)組件進(jìn)行查詢,以管理系統(tǒng)的配置或掌握組件的功能狀態(tài),如電源和系統(tǒng)風(fēng)扇??呻S時(shí)監(jiān)控內(nèi)存、硬盤(pán)、網(wǎng)絡(luò)、系統(tǒng)溫度等多個(gè)參數(shù),增加了系統(tǒng)的安全性,方便了管理。



上一頁(yè) 1 2 3 4 下一頁(yè)

關(guān)鍵詞: SPIIICUARTca

評(píng)論


技術(shù)專區(qū)

關(guān)閉