三防平板電腦控制器局域網(wǎng)(Controller Area Network,CAN)總線(xiàn)是一種用于實(shí)時(shí)場(chǎng)合的串行通信協(xié)議,可用雙絞線(xiàn)來(lái)傳輸信號(hào)。該協(xié)議由德國(guó)的Bosch公司開(kāi)發(fā),用于汽車(chē)中各種不同電子元件之間的通信,以此取代配電線(xiàn)束。例如,三防平板電腦發(fā)動(dòng)機(jī)管理系統(tǒng)、變速箱控制器、儀表裝置和電子主干系統(tǒng)中均嵌入CAN總線(xiàn)控制裝置。CAN總線(xiàn)協(xié)議的特性包括高完整性的串行數(shù)據(jù)通信、提供實(shí)時(shí)支持、傳輸速率高達(dá)1 Mbps,同時(shí)具有11位的尋址以及檢錯(cuò)能力。
三防平板電腦CAN總線(xiàn)控制系統(tǒng)強(qiáng)調(diào)集成、規(guī)?;墓ぷ鞣绞?,具有抗干擾能力強(qiáng)、實(shí)時(shí)性好、系統(tǒng)錯(cuò)誤檢測(cè)和隔離能力強(qiáng)的優(yōu)點(diǎn)。由于 CAN 總線(xiàn)優(yōu)點(diǎn)突出,其應(yīng)用范圍目前已不再局限于汽車(chē)行業(yè),也廣泛應(yīng)用在航空航天、航海、機(jī)械工業(yè)、農(nóng)用工業(yè)、機(jī)器人、數(shù)控機(jī)床、醫(yī)療器械及傳感器等領(lǐng)域。
1.CAN總線(xiàn)工作原理
CAN總線(xiàn)屬于現(xiàn)場(chǎng)總線(xiàn)之一,也是一種多主方式的串行通信總線(xiàn)。總線(xiàn)使用串行數(shù)據(jù)傳輸方式,可以1 Mbps的傳輸速度在40 m雙絞線(xiàn)上運(yùn)行,也可以使用光纜連接,而且這種協(xié)議支持多主控器。CAN與I2C總線(xiàn)的許多細(xì)節(jié)很類(lèi)似,但也有一些明顯的區(qū)別。
三防平板電腦在CAN總線(xiàn)中,每一個(gè)節(jié)點(diǎn)都是以AND方式連接到總線(xiàn)的驅(qū)動(dòng)器和接收器上的。CAN總線(xiàn)使用差分電壓傳送信號(hào),兩條信號(hào)線(xiàn)分別為CAN_H和CAN_L,靜態(tài)時(shí)均是2.5 V,此時(shí)狀態(tài)被稱(chēng)為邏輯1,也被稱(chēng)為隱性。用CAN_H比CAN_L高表示邏輯0,稱(chēng)為顯性,此時(shí)CAN_H的電壓為3.5 V,CAN_L的電壓為1.5 V。當(dāng)所有節(jié)點(diǎn)都傳送1時(shí),總線(xiàn)被稱(chēng)為隱性狀態(tài);當(dāng)一個(gè)節(jié)點(diǎn)傳送0時(shí),總線(xiàn)處于顯性狀態(tài)。數(shù)據(jù)以數(shù)據(jù)幀的形式在網(wǎng)絡(luò)上傳送。
CAN總線(xiàn)是一種同步總線(xiàn),所有的發(fā)送器必須同時(shí)發(fā)送,節(jié)點(diǎn)通過(guò)監(jiān)聽(tīng)總線(xiàn)上位傳輸?shù)姆绞绞棺约号c總線(xiàn)保持同步,數(shù)據(jù)幀的第一位提供了幀中的第一個(gè)同步機(jī)會(huì)。數(shù)據(jù)幀以1個(gè)“1”開(kāi)始,以7個(gè)“0”結(jié)束(在2個(gè)數(shù)據(jù)幀之間至少有3個(gè)位的域)。分組中的第一個(gè)域包含目標(biāo)地址,該域被稱(chēng)為仲裁域,目標(biāo)標(biāo)識(shí)符長(zhǎng)度是11位。如果數(shù)據(jù)幀用來(lái)從標(biāo)識(shí)符指定的設(shè)備請(qǐng)求數(shù)據(jù)時(shí),后面的遠(yuǎn)程傳輸請(qǐng)求(RTR)位被設(shè)置為0,當(dāng)RTR=1時(shí),分組被用來(lái)向目標(biāo)標(biāo)識(shí)符寫(xiě)入數(shù)據(jù)。三防平板電腦控制域提供一個(gè)標(biāo)識(shí)符擴(kuò)展和4位的數(shù)據(jù)域長(zhǎng)度,但在它們之間要有1個(gè)“1”。數(shù)據(jù)域的范圍是0~64 B,這取決于控制域中給定的值。數(shù)據(jù)域后發(fā)送一個(gè)循環(huán)冗余校驗(yàn)(CRC)用于錯(cuò)誤檢測(cè)。確認(rèn)域用于發(fā)出一個(gè)是否幀被正確接收的標(biāo)識(shí)信號(hào),發(fā)送端把一個(gè)隱性位(1)放到確認(rèn)域的ACK中,如果接收端檢測(cè)到了錯(cuò)誤,它強(qiáng)制該位變?yōu)轱@性的0值。如果發(fā)送端在ACK中發(fā)現(xiàn)了一個(gè)0在總線(xiàn)上,就必須重發(fā)。CAN總線(xiàn)的標(biāo)準(zhǔn)數(shù)據(jù)幀結(jié)構(gòu)如圖6-30所示。
圖1 CAN總線(xiàn)的標(biāo)準(zhǔn)數(shù)據(jù)幀結(jié)構(gòu)
2.CAN總線(xiàn)特點(diǎn)及組成結(jié)構(gòu)
三防平板電腦CAN總線(xiàn)具有傳送速度快、網(wǎng)絡(luò)帶寬利用率高、糾錯(cuò)能力強(qiáng)、低成本、傳輸距離遠(yuǎn)(長(zhǎng)達(dá)10 km)、數(shù)據(jù)傳輸速率高(高達(dá)1 Mbps)等特點(diǎn),還具有可以根據(jù)報(bào)文的ID決定接收或屏蔽該報(bào)文、可靠的錯(cuò)誤處理和檢錯(cuò)機(jī)制、發(fā)送的信息遭到破壞后可自動(dòng)重發(fā)、節(jié)點(diǎn)在錯(cuò)誤嚴(yán)重的情況下具有自動(dòng)退出總線(xiàn)的功能。由于 CAN 總線(xiàn)協(xié)議執(zhí)行非集中化總線(xiàn)控制,所有信息傳輸在系統(tǒng)中分幾次完成,從而實(shí)現(xiàn)高可靠性通信。
三防平板電腦CAN總線(xiàn)也存在時(shí)延不確定的現(xiàn)象,由于每一幀信息包括0~8 B的有效數(shù)據(jù),只有在具有最高優(yōu)先權(quán)傳輸幀的延時(shí)是確定的,其他幀只能根據(jù)一定的模型估算。另外,由于CAN總線(xiàn)的數(shù)據(jù)傳輸方式單一,限制了它的功能。例如,CAN總線(xiàn)通過(guò)網(wǎng)上下載程序就比較困難。CAN總線(xiàn)的網(wǎng)絡(luò)規(guī)模一般是在50個(gè)節(jié)點(diǎn)以下。CAN總線(xiàn)控制器體系結(jié)構(gòu)如圖6-31所示。
圖2 CAN總線(xiàn)控制器的體系結(jié)構(gòu)
3.CAN總線(xiàn)接口的設(shè)計(jì)
三防平板電腦無(wú)論是在微處理器中內(nèi)嵌CAN總線(xiàn)控制器(如LPC2294微處理器),還是在系統(tǒng)中采用獨(dú)立的CAN總線(xiàn)控制器,都需要通過(guò)CAN總線(xiàn)收發(fā)器(CAN驅(qū)動(dòng)器)連接到CAN物理總線(xiàn)。國(guó)內(nèi)常用的CAN總線(xiàn)收發(fā)器是82C250(全稱(chēng)為PCA82C250),它是Philips公司的CAN總線(xiàn)收發(fā)器產(chǎn)品,其作用是增加通信距離、提高系統(tǒng)的瞬間抗干擾能力、保護(hù)總線(xiàn)、降低射頻干擾和實(shí)現(xiàn)熱防護(hù),該收發(fā)器至少可掛接110個(gè)節(jié)點(diǎn)。另外還有TJA1050、TJA1040可以替代 PCA82C250產(chǎn)品,而且它們的電磁輻射更低,無(wú)待機(jī)模式。為了進(jìn)一步提高系統(tǒng)的抗干擾能力,往往還會(huì)在CAN總線(xiàn)控制器和CAN總線(xiàn)收發(fā)器之間增加一個(gè)光電隔離器件。
在實(shí)際應(yīng)用中,三防平板電腦也可以使用由Philips公司生產(chǎn)的CAN總線(xiàn)控制器芯片SJA1000T替代PCA82C250。ARM微處理器和SJA1000T以總線(xiàn)方式連接,其中,SJA1000T的復(fù)用總線(xiàn)和ARM微處理器的數(shù)據(jù)總線(xiàn)連接。SJA1000T的片選、讀寫(xiě)信號(hào)均采用ARM微處理器總線(xiàn)信號(hào),地址鎖存ALE信號(hào)由讀寫(xiě)信號(hào)和地址信號(hào)通過(guò)GAL產(chǎn)生。在寫(xiě)SJA1000T寄存器時(shí),首先往總線(xiàn)的一個(gè)地址寫(xiě)數(shù)據(jù),此時(shí)讀寫(xiě)信號(hào)無(wú)效,ALE變化產(chǎn)生鎖存信號(hào)。然后寫(xiě)另一個(gè)數(shù)據(jù),讀寫(xiě)信號(hào)有效??刂?CAN 總線(xiàn)時(shí),首先初始化各寄存器;發(fā)送數(shù)據(jù)時(shí),首先置位命令寄存器,然后寫(xiě)發(fā)送緩沖區(qū),最后置位請(qǐng)求發(fā)送。接收端通過(guò)查詢(xún)狀態(tài)寄存器,讀取接收緩沖區(qū)可獲得信息。
CAN總線(xiàn)每次可以發(fā)送10 B的信息(CAN2.0A)。發(fā)送的第1字節(jié)和第2字節(jié)的前3位為ID號(hào),第4位為遠(yuǎn)程幀標(biāo)記,后4位為有效字節(jié)長(zhǎng)度。軟件設(shè)置時(shí)可以根據(jù)ID號(hào)選擇是否屏蔽上述信息,也可以通過(guò)設(shè)置硬件產(chǎn)生自動(dòng)驗(yàn)收濾波器。8個(gè)有效字節(jié)代表什么參數(shù),可以自行定義內(nèi)部標(biāo)準(zhǔn),也可以參照DeviceNet等應(yīng)用層協(xié)議。
CAN總線(xiàn)主要用于汽車(chē)電子領(lǐng)域,特別適合汽車(chē)環(huán)境中的微控制器通信,在車(chē)載的各個(gè)電子裝置之間交換信息,形成汽車(chē)電子控制網(wǎng)絡(luò)。圖6-32給出了在一輛小型汽車(chē)內(nèi)的基于CAN總線(xiàn)的汽車(chē)電子應(yīng)用系統(tǒng)架構(gòu)示意圖,圖2中含有4條CAN總線(xiàn),并且含有4種MPU與CAN總線(xiàn)控制器的配置方法。