CAN控制器與收發(fā)器的工作原理及分類(lèi)
控制器局域網(wǎng)總線(CAN,Controller Area Network)是一種用于實(shí)時(shí)應(yīng)用的串行通訊協(xié)議總線,它可以使用雙絞線來(lái)傳輸信號(hào),是世界上應(yīng)用最廣泛的現(xiàn)場(chǎng)總線之一。CAN協(xié)議用于汽車(chē)中各種不同元件之間的通信,以此取代昂貴而笨重的配電線束。該協(xié)議的健壯性使其用途延伸到其他自動(dòng)化和工業(yè)應(yīng)用。CAN協(xié)議的特性包括完整性的串行數(shù)據(jù)通訊、提供實(shí)時(shí)支持、傳輸速率高達(dá)1Mb/s、同時(shí)具有11位的尋址以及檢錯(cuò)能力??刂破骶钟蚓W(wǎng)CAN( Controller Area Network)屬于現(xiàn)場(chǎng)總線的范疇,是一種有效支持分布式控制系統(tǒng)的串行通信網(wǎng)絡(luò)。是由德國(guó)博世公司在20世紀(jì)80年代專(zhuān)門(mén)為汽車(chē)行業(yè)開(kāi)發(fā)的一種串行通信總線。由于其高性能、高可靠性以及獨(dú)特的設(shè)計(jì)而越來(lái)越受到人們的重視,被廣泛應(yīng)用于諸多領(lǐng)域。而且能夠檢測(cè)出產(chǎn)生的任何錯(cuò)誤。當(dāng)信號(hào)傳輸距離達(dá)到10km時(shí),CAN仍可提供高達(dá)50kbit/s的數(shù)據(jù)傳輸速率。由于CAN總線具有很高的實(shí)時(shí)性能和應(yīng)用范圍,從位速率最高可達(dá)1Mbps的高速網(wǎng)絡(luò)到低成本多線路的50Kbps網(wǎng)絡(luò)都可以任意搭配。因此,CAN己經(jīng)在汽車(chē)業(yè)、航空業(yè)、工業(yè)控制、安全防護(hù)等領(lǐng)域中得到了廣泛應(yīng)用。
CAN是一種廣泛應(yīng)用于汽車(chē)和工業(yè)領(lǐng)域的通信協(xié)議。它的工作原理基于串行通信和差分信號(hào)傳輸。
CAN協(xié)議使用了分布式的通信方式,其中包括多個(gè)節(jié)點(diǎn)和一個(gè)總線。每個(gè)節(jié)點(diǎn)都可以發(fā)送和接收消息,而總線負(fù)責(zé)將消息傳輸?shù)剿羞B接的節(jié)點(diǎn)上。
CAN協(xié)議使用一種稱(chēng)為"非破壞性位定時(shí)"的機(jī)制來(lái)解決沖突。每個(gè)節(jié)點(diǎn)在發(fā)送消息之前會(huì)監(jiān)測(cè)總線上的電平狀態(tài),并根據(jù)電平狀態(tài)來(lái)確定是否有其他節(jié)點(diǎn)正在發(fā)送消息。如果有沖突發(fā)生,節(jié)點(diǎn)會(huì)停止發(fā)送消息并等待一個(gè)隨機(jī)的時(shí)間后再次嘗試發(fā)送。
CAN協(xié)議使用兩根線進(jìn)行數(shù)據(jù)傳輸,分別為CAN_H和CAN_L。CAN_H和CAN_L之間的電壓差表示數(shù)據(jù)的邏輯值,通過(guò)差分信號(hào)傳輸可以有效抵抗電磁干擾。
在CAN網(wǎng)絡(luò)中,每個(gè)節(jié)點(diǎn)都有一個(gè)唯一的標(biāo)識(shí)符(ID),用于識(shí)別消息的發(fā)送者和接收者。當(dāng)一個(gè)節(jié)點(diǎn)想要發(fā)送消息時(shí),它首先檢查總線上是否有其他節(jié)點(diǎn)正在發(fā)送消息。如果沒(méi)有沖突,該節(jié)點(diǎn)就可以發(fā)送消息。
接收消息的節(jié)點(diǎn)會(huì)監(jiān)聽(tīng)總線上的數(shù)據(jù),并根據(jù)消息的標(biāo)識(shí)符判斷是否需要接收該消息。如果節(jié)點(diǎn)需要接收消息,則會(huì)將其存儲(chǔ)在接收緩沖區(qū)中供處理器讀取。
本設(shè)計(jì)分別將協(xié)議控制器通過(guò)串行數(shù)據(jù)輸出線TX和串行數(shù)據(jù)輸入線RX連接到光電隔離器TLP2631的3管腳和7管腳,實(shí)現(xiàn)了光電隔離。利用CAN收發(fā)器。PCA82C250將從光電隔離器TLP2631輸出的差動(dòng)的總線信號(hào)轉(zhuǎn)換成邏輯信號(hào)電平并在RxD輸出,接收到的串行數(shù)據(jù)通過(guò)與總線電纜相連的差動(dòng)發(fā)送和接收總線終端CANH和CANL將數(shù)據(jù)送到總線協(xié)議控制器譯碼,完成了普通電平到顯、隱性電平的傳輸。CAN總線獲取顯、隱性電平后,再經(jīng)過(guò)PCA82C250和光電耦合器TLP2631將數(shù)據(jù)傳輸給送經(jīng)驅(qū)動(dòng)器、卷取驅(qū)動(dòng)器的CAN接收端口,從而實(shí)現(xiàn)了基于CAN總線的數(shù)據(jù)傳輸。信號(hào)數(shù)據(jù)傳輸過(guò)程中,存在著擾動(dòng),為此本設(shè)計(jì)采取以下措施來(lái)克服干擾的影響:
1)為了滿(mǎn)足光電隔離的要求,本設(shè)計(jì)在協(xié)議控制器和CAN收發(fā)器之間加入了TLP2631光電隔離器,有效地抑制了傳輸線中由于耦合電容、電感造成的干擾,實(shí)現(xiàn)了不同電平的轉(zhuǎn)換。
2)為了匹配數(shù)據(jù)總線的阻抗和提高數(shù)據(jù)傳輸?shù)目垢蓴_能力,在CAN總線終端的兩端加有兩個(gè)120 Ω總線阻抗匹配電阻。若不接這兩個(gè)電阻,有時(shí)甚至無(wú)法通信。采用屏蔽雙絞線以減少現(xiàn)場(chǎng)環(huán)境對(duì)結(jié)點(diǎn)的干擾。
送經(jīng)卷取系統(tǒng)的軟件設(shè)計(jì)是實(shí)現(xiàn)數(shù)據(jù)高效通信的關(guān)鍵,本文的軟件部分主要由數(shù)據(jù)采集程序和CAN總線通信程序設(shè)計(jì)兩部分組成。其中數(shù)據(jù)采集程序可參考文獻(xiàn),本文重點(diǎn)論述CAN通訊程序的設(shè)計(jì)。軟件開(kāi)發(fā)環(huán)境,選用ADS1.2集成開(kāi)發(fā)環(huán)境,ADS是ARM微控制器集成開(kāi)發(fā)工具。ADS1.2支持ARM10之前所有ARM系列,支持軟件調(diào)試及JTAG硬件仿真調(diào)試,支持匯編語(yǔ)言、C/C++源程序;具有編譯效率高、系統(tǒng)庫(kù)功能強(qiáng)等特點(diǎn);可以在WINDOWS 98、WINDOWS XP、WINDOWS 2000上運(yùn)行。
控制器局域網(wǎng)總線(CAN,Controller Area Network)是一種用于實(shí)時(shí)應(yīng)用的串行通訊協(xié)議總線,它可以使用雙絞線來(lái)傳輸信號(hào),是世界上應(yīng)用最廣泛的現(xiàn)場(chǎng)總線之一。CAN協(xié)議用于汽車(chē)中各種不同元件之間的通信,以此取代昂貴而笨重的配電線束。該協(xié)議的健壯性使其用途延伸到其他自動(dòng)化和工業(yè)應(yīng)用。CAN協(xié)議的特性包括完整性的串行數(shù)據(jù)通訊、提供實(shí)時(shí)支持、傳輸速率高達(dá)1Mb/s、同時(shí)具有11位的尋址以及檢錯(cuò)能力。
隨著CAN總線在各個(gè)行業(yè)和領(lǐng)域的廣泛應(yīng)用,對(duì)其的通信格式標(biāo)準(zhǔn)化也提出了更嚴(yán)格的要求。1991年CAN總線技術(shù)規(guī)范(Version2.0)制定并發(fā)布。該技術(shù)規(guī)范共包括A和B兩個(gè)部分。其中2.0A給出了CAN報(bào)文標(biāo)準(zhǔn)格式,而2.0B給出了標(biāo)準(zhǔn)的和擴(kuò)展的兩種格式。美國(guó)的汽車(chē)工程學(xué)會(huì)SAE在2000年提出了J1939協(xié)議,此后該協(xié)議成為了貨車(chē)和客車(chē)中控制器局域網(wǎng)的通用標(biāo)準(zhǔn)。CAN總線技術(shù)也在不斷發(fā)展。傳統(tǒng)的CAN是基于事件觸發(fā)的,信息傳輸時(shí)間的不確定性和優(yōu)先級(jí)反轉(zhuǎn)是它固有的缺陷。當(dāng)總線上傳輸消息密度較小時(shí),這些缺陷對(duì)系統(tǒng)的實(shí)時(shí)性影響較小;但隨著在總線上傳輸消息密度的增加,系統(tǒng)實(shí)時(shí)性能會(huì)急劇下降。為了滿(mǎn)足汽車(chē)控制對(duì)實(shí)時(shí)性和傳輸消息密度不斷增長(zhǎng)的需要,改善CAN總線的實(shí)時(shí)性能非常必要。于是,傳統(tǒng)CAN與時(shí)間觸發(fā)機(jī)制相結(jié)合產(chǎn)生了TTCAN(Time-Triggered CAN),ISO11898-4己包含了TTCAN。 TTCAN總線和傳統(tǒng)CAN總線系統(tǒng)的區(qū)別是:總線上不同的消息定義了不同的時(shí)間槽(Timer Slot)。
CAN總線,作為一種分布式的控制總線,其結(jié)構(gòu)相對(duì)簡(jiǎn)潔。在總線上,每個(gè)節(jié)點(diǎn)都配備MCU控制器,負(fù)責(zé)處理CAN總線數(shù)據(jù)并執(zhí)行特定功能。僅需兩根線纜(CAN_H和CAN_L)即可將各節(jié)點(diǎn)連接起來(lái),這種設(shè)計(jì)不僅節(jié)省了線纜資源,還大大提高了系統(tǒng)的可靠性。
遵循ISO11898標(biāo)準(zhǔn),CAN總線的拓?fù)浣Y(jié)構(gòu)采用干線和支線相結(jié)合的方式。干線兩端均配備了120歐姆的終端電阻,以確保信號(hào)的穩(wěn)定傳輸。節(jié)點(diǎn)則通過(guò)無(wú)端接的支線與總線相連,這種設(shè)計(jì)使得節(jié)點(diǎn)能夠靈活地加入或退出總線網(wǎng)絡(luò)。同時(shí),標(biāo)準(zhǔn)還對(duì)干線和支線的各項(xiàng)參數(shù)進(jìn)行了詳細(xì)說(shuō)明,為系統(tǒng)的設(shè)計(jì)和優(yōu)化提供了有力支持。
在CAN總線的拓?fù)浣Y(jié)構(gòu)中,線性網(wǎng)絡(luò)占據(jù)著重要地位。通過(guò)干線和支線的巧妙結(jié)合,總線網(wǎng)絡(luò)得以靈活構(gòu)建。為了確保信號(hào)的穩(wěn)定傳輸,干線兩端均配備了120歐姆的終端電阻。同時(shí),標(biāo)準(zhǔn)化的設(shè)計(jì)使得每個(gè)節(jié)點(diǎn)都能輕松地加入或退出總線網(wǎng)絡(luò),為系統(tǒng)的擴(kuò)展性提供了有力保障。此外,表1還詳細(xì)列出了干線與支線的網(wǎng)絡(luò)長(zhǎng)度參數(shù),為系統(tǒng)的設(shè)計(jì)和優(yōu)化提供了詳盡的參考依據(jù)。
在實(shí)際應(yīng)用中,CAN控制器和收發(fā)器常通過(guò)CAN中繼器將分支網(wǎng)絡(luò)與干線網(wǎng)絡(luò)相連。每條分支網(wǎng)絡(luò)均遵循ISO11898標(biāo)準(zhǔn),從而有效擴(kuò)展了CAN總線的通信距離,并增加了節(jié)點(diǎn)數(shù)量。