《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于CAN總線智能節(jié)點(diǎn)的設(shè)計(jì)與實(shí)現(xiàn)
基于CAN總線智能節(jié)點(diǎn)的設(shè)計(jì)與實(shí)現(xiàn)
來源:微型機(jī)與應(yīng)用2012年第2期
紀(jì)文志1,陳國(guó)忠1,唐加山2
(1.南京郵電大學(xué) 通信與信息工程學(xué)院,江蘇 南京210003; 2.南京郵電大學(xué) 理學(xué)院,江蘇 南
摘要: 根據(jù)CAN總線技術(shù)特點(diǎn),利用ARM STM32F107芯片和通用CAN收發(fā)器CTM8251T,給出了基于CAN總線智能節(jié)點(diǎn)的硬件和軟件設(shè)計(jì)方法,并實(shí)現(xiàn)了智能節(jié)點(diǎn)之間的通信。實(shí)際應(yīng)用表明,該智能節(jié)點(diǎn)工作穩(wěn)定可靠,具有較強(qiáng)的抗干擾能力。
Abstract:
Key words :

摘  要: 根據(jù)CAN總線技術(shù)特點(diǎn),利用ARM STM32F107芯片和通用CAN收發(fā)器CTM8251T,給出了基于CAN總線智能節(jié)點(diǎn)的硬件和軟件設(shè)計(jì)方法,并實(shí)現(xiàn)了智能節(jié)點(diǎn)之間的通信。實(shí)際應(yīng)用表明,該智能節(jié)點(diǎn)工作穩(wěn)定可靠,具有較強(qiáng)的抗干擾能力。
關(guān)鍵詞: CAN總線;CAN收發(fā)器;智能節(jié)點(diǎn)

1 CAN總線技術(shù)特點(diǎn)
    CAN(Controller Area Network)控制器局域網(wǎng)絡(luò)是在20世紀(jì)80年代初由德國(guó)Bosch公司為解決現(xiàn)代汽車中眾多的測(cè)控儀器之間的數(shù)據(jù)交換而設(shè)計(jì)的一種有效支持分布式實(shí)時(shí)控制的串行數(shù)據(jù)通信網(wǎng)絡(luò)[1]。1993年11月ISO正式頒布了CAN國(guó)際標(biāo)準(zhǔn)(ISO 11898),它以半雙工方式工作,采用基于數(shù)據(jù)的傳輸機(jī)制,通信介質(zhì)可以是雙絞線、同軸電纜, 其通信速率可達(dá)1 Mb/s,最大傳輸距離可達(dá)10 km(速率在5 kb/s以下)。CAN總線的主要特點(diǎn)[2]為:
    (1)多主技術(shù)。網(wǎng)絡(luò)上任一節(jié)點(diǎn)均可在任意時(shí)刻主動(dòng)地且不分主從地向網(wǎng)絡(luò)上其他節(jié)點(diǎn)發(fā)送信息,同時(shí)將節(jié)點(diǎn)信息分不同的優(yōu)先級(jí),可滿足不同的實(shí)時(shí)需求。
    (2)可靠性高。節(jié)點(diǎn)在錯(cuò)誤嚴(yán)重的情況下,具有自動(dòng)關(guān)閉輸出功能,切斷自身與總線的聯(lián)系,使總線上其他節(jié)點(diǎn)的操作不受影響。
    (3)完善的錯(cuò)誤監(jiān)測(cè)機(jī)制。采用短幀結(jié)構(gòu),傳輸時(shí)延短,受干擾概率低,每幀信息都進(jìn)行16 bit的CRC 校驗(yàn)及其他校驗(yàn)措施,使數(shù)據(jù)出錯(cuò)率極低。
    這些優(yōu)良的特性使CAN總線在汽車工業(yè)、機(jī)械工業(yè)、醫(yī)療器械及傳感器等領(lǐng)域得以廣泛應(yīng)用。CAN總線被公認(rèn)為極具發(fā)展前途的現(xiàn)場(chǎng)總線之一。
2 CAN總線智能節(jié)點(diǎn)設(shè)計(jì)
2.1 CAN總線智能節(jié)點(diǎn)硬件電路設(shè)計(jì)

    本文中的CAN總線智能節(jié)點(diǎn)通信模塊采用ARM STM32F107芯片作為CAN節(jié)點(diǎn)的微處理器,在CAN總線通信接口中,采用一款帶隔離的通用CAN收發(fā)器芯片CTM8251T。本著智能節(jié)點(diǎn)結(jié)構(gòu)簡(jiǎn)單、易于擴(kuò)展以及能穩(wěn)定可靠地進(jìn)行通信的設(shè)計(jì)目標(biāo),設(shè)計(jì)了CAN總線智能節(jié)點(diǎn)硬件電路原理圖,如圖1所示。從圖中可以看出,電路主要由兩部分構(gòu)成:ARM微控制器STM32F107和通用CAN收發(fā)器CTM8251T[3]。

    STM32F107芯片是意法半導(dǎo)體公司推出的一款STM32互連型系列、內(nèi)核為ARM Cortex-M3的32位高性能微控制器。通用CAN收發(fā)器CTM8251T是用于CAN控制器和CAN總線之間的接口芯片,波特率是自適應(yīng)的,其內(nèi)部集成了所有通信必需的CAN隔離及CAN收發(fā)器件。此外,該芯片還具有自動(dòng)熱關(guān)斷保護(hù)、未上電節(jié)點(diǎn)或者處于欠壓狀態(tài)的節(jié)點(diǎn)不會(huì)影響CAN總線、高壓瞬態(tài)保護(hù)等特點(diǎn)。
2.2 CAN總線智能節(jié)點(diǎn)通信軟件設(shè)計(jì)
    CAN總線智能節(jié)點(diǎn)軟件設(shè)計(jì)的核心部分包括CAN智能節(jié)點(diǎn)初始化、CAN報(bào)文發(fā)送和CAN報(bào)文接收。根據(jù)STM32F107內(nèi)部的PeliCAN的具體結(jié)構(gòu),需要對(duì)STM32F107芯片進(jìn)行正確的初始化、報(bào)文發(fā)送和接收等操作[4]。
    (1)CAN智能節(jié)點(diǎn)初始化
    下面分別給出波特率和報(bào)文接收濾波器的設(shè)置方法。
    ①波特率的設(shè)置。波特率是CAN總線傳輸?shù)囊粋€(gè)重要參數(shù),在應(yīng)用中選擇的波特率為250 kb/s。位時(shí)間特性邏輯通過采樣來監(jiān)視串行數(shù)據(jù)通信的CAN總線,并且通過與幀起始位的邊沿進(jìn)行同步,即通過與后面的邊沿進(jìn)行重新同步來調(diào)整其采樣點(diǎn)。簡(jiǎn)單地說就是把名義上的每位時(shí)間分為三段,包括同步段(SYN_SEG)、時(shí)間段1(BS1)、時(shí)間段2(BS2)。位時(shí)間特性原理結(jié)構(gòu)如圖2所示。

 

 

    由位時(shí)間特性原理結(jié)構(gòu)可知,CAN網(wǎng)波特率BaudRate=1/NominalBitTime,其中名義上的位時(shí)間NominalBitTime=1×tq+tBS1+tBS2,時(shí)間段1:tBS1=tq×(TS1[3:0]+1),時(shí)間段2:tBS2=tq×(TS2[2:0]+1),時(shí)間片tq=(BRP[9:0]+1)×tPCLK,tPCLK=1/36 MHz為APB的時(shí)鐘周期,時(shí)間段1(TS1[3:0])可通過位時(shí)間特性寄存器CAN_BTR[19:16]位來設(shè)置,時(shí)間段2(TS2[2:0])可通過位時(shí)間特性寄存器CAN_BTR[22:20]位來設(shè)置,波特率分頻器(BRP[9:0])可通過CAN_BTR[9:0]位來設(shè)置。
    由于選擇的通信波特率為250 kb/s,為了計(jì)算方便,可以按如下方式進(jìn)行設(shè)置:TS1[3:0]=0x08,TS2[2:0]=0x05,BRP[9:0]=0x09,則時(shí)間片tq=0.25μs,名義上的位時(shí)間NominalBitTime=16tq=4 μs,BaudRate=1/NominalBitTime=250 kb/s。
    ②接收濾波器的設(shè)置。STM32F107芯片共有14組過濾器,每組過濾器的位寬都可以獨(dú)立配置,以滿足應(yīng)用程序的不同需求。此外過濾器可配置為屏蔽位模式和標(biāo)識(shí)符列表模式,在屏蔽位模式下,標(biāo)識(shí)符寄存器和屏蔽寄存器一起,指定報(bào)文標(biāo)識(shí)符的任何一位,應(yīng)該按照“必須匹配”(相應(yīng)屏蔽位置為1)或“不用關(guān)心”(相應(yīng)屏蔽位置為0)處理。本文采取的是屏蔽位模式,標(biāo)識(shí)符寄存器中對(duì)應(yīng)目的地址的1個(gè)字節(jié)位設(shè)置為本節(jié)點(diǎn)地址,屏蔽寄存器中對(duì)應(yīng)目的地址的位全部置為1,剩余位置為0,則每個(gè)CAN節(jié)點(diǎn)都會(huì)收到目的地址為本節(jié)點(diǎn)地址的CAN報(bào)文,丟棄目的地址不是本節(jié)點(diǎn)地址的CAN報(bào)文。
    (2)CAN智能節(jié)點(diǎn)的報(bào)文發(fā)送過程
    STM32F107芯片提供一個(gè)專用的SRAM存儲(chǔ)器用于CAN報(bào)文的發(fā)送和接收,其中有3個(gè)郵箱供軟件來發(fā)送CAN報(bào)文,發(fā)送調(diào)度器根據(jù)優(yōu)先級(jí)決定優(yōu)先發(fā)送報(bào)文的郵箱。發(fā)送子程序主要負(fù)責(zé)CAN智能節(jié)點(diǎn)報(bào)文的發(fā)送。此發(fā)送子程序采用查詢發(fā)送方式,發(fā)送時(shí)只需要將待發(fā)送的數(shù)據(jù)按照表1所示的幀格式(擴(kuò)展幀)組合成一幀CAN報(bào)文,送入CAN報(bào)文發(fā)送緩沖區(qū),然后判斷發(fā)送緩沖區(qū)是否有空郵箱。若有空郵箱,則發(fā)送;否則等待直到有空郵箱然后發(fā)送。

    (3)CAN智能節(jié)點(diǎn)的報(bào)文接收過程
    STM32F107芯片提供2個(gè)接收緩沖區(qū)FIFO,每個(gè)FIFO都可以存放3個(gè)完整的CAN報(bào)文,它們完全由硬件來管理。接收子程序主要負(fù)責(zé)CAN智能節(jié)點(diǎn)報(bào)文的接收及其他情況處理。此接收子程序采用中斷接收方式和設(shè)置使用接收緩沖區(qū)FIFO_0存放接收到的CAN報(bào)文,在接收到一個(gè)CAN報(bào)文后,就可以通過訪問FIFO_0來讀取它,一旦報(bào)文被處理,接收緩沖區(qū)FIFO_0就會(huì)被釋放,以便為后面收到的報(bào)文留出足夠的存儲(chǔ)空間。
    (4)程序流程圖
    CAN智能節(jié)點(diǎn)初始化流程如圖3所示;CAN智能節(jié)點(diǎn)的報(bào)文發(fā)送流程如圖4所示;CAN智能節(jié)點(diǎn)的報(bào)文接收流程如圖5所示。

3 CAN總線智能節(jié)點(diǎn)間通信的實(shí)現(xiàn)
   根據(jù)本文第二部分設(shè)計(jì)的CAN智能節(jié)點(diǎn)很容易實(shí)現(xiàn)節(jié)點(diǎn)之間的通信。為方便起見,本文構(gòu)建了一個(gè)簡(jiǎn)單的CAN網(wǎng)絡(luò),包括兩個(gè)CAN智能節(jié)點(diǎn)Node1和Node2、兩個(gè)120 ?贅的端接電阻、兩根20 m的屏蔽雙絞線、一塊CAN適配器卡和一臺(tái)PC機(jī)。CAN總線智能節(jié)點(diǎn)間通信的原理框圖如圖6所示。

    假設(shè)節(jié)點(diǎn)Node1為管理節(jié)點(diǎn),控制數(shù)據(jù)優(yōu)先級(jí)設(shè)置為2,節(jié)點(diǎn)地址置為0x66;節(jié)點(diǎn)Node2為從設(shè)備節(jié)點(diǎn),查詢應(yīng)答優(yōu)先級(jí)設(shè)置為3,節(jié)點(diǎn)地址為0x88;若數(shù)據(jù)長(zhǎng)度小于或等于8 B,則不需要分段,其分段傳輸標(biāo)志置為0,采用無組播發(fā)送,其組播碼置為0000B,應(yīng)答位Ack均置為0。依據(jù)表1中規(guī)定的CAN報(bào)文標(biāo)識(shí)符和數(shù)據(jù)幀格式定義,定義了如下4種CAN報(bào)文: CAN網(wǎng)工作狀態(tài)查詢命令、CAN網(wǎng)工作狀態(tài)應(yīng)答命令、設(shè)備復(fù)位命令和設(shè)備復(fù)位報(bào)告命令。
      (1)CAN網(wǎng)工作狀態(tài)查詢命令幀標(biāo)識(shí)符定義為0x408866a0,其報(bào)文數(shù)據(jù)部分設(shè)置如表2所示。

      (2)CAN網(wǎng)工作狀態(tài)應(yīng)答命令幀標(biāo)識(shí)符定義為0x60668810,其報(bào)文數(shù)據(jù)部分設(shè)置如表3所示。
      (3)設(shè)備復(fù)位命令幀標(biāo)識(shí)符定義為0x40-886600,其報(bào)文數(shù)據(jù)部分設(shè)置如表4所示。

      (4)設(shè)備復(fù)位報(bào)告命令幀標(biāo)識(shí)符定義為0x446688f0,其報(bào)文數(shù)據(jù)部分設(shè)置如表5所示。
    現(xiàn)在讓管理節(jié)點(diǎn)Node1與從設(shè)備節(jié)點(diǎn)Node2進(jìn)行通信,用上位機(jī)軟件來監(jiān)視節(jié)點(diǎn)Node1與節(jié)點(diǎn)Node2通信過程中發(fā)送的CAN報(bào)文數(shù)據(jù),實(shí)驗(yàn)結(jié)果如圖7所示。

    分析圖7的實(shí)驗(yàn)結(jié)果:4個(gè)在第0路CAN上傳輸?shù)腃AN報(bào)文的幀格式均為數(shù)據(jù)幀,幀類型為擴(kuò)展幀;由第0條CAN報(bào)文幀標(biāo)識(shí)符0x408866a0可知,報(bào)文優(yōu)先級(jí)為2,目的地址為0x88,源地址為0x66,說明該報(bào)文是管理節(jié)點(diǎn)Node1發(fā)向從設(shè)備節(jié)點(diǎn)Node2的CAN網(wǎng)工作狀態(tài)查詢命令;由第1條CAN報(bào)文幀標(biāo)識(shí)符0x60668810可知,報(bào)文優(yōu)先級(jí)為3,目的地址為0x66,源地址為0x88,說明該報(bào)文是從設(shè)備節(jié)點(diǎn)Node2發(fā)向管理節(jié)點(diǎn)Node1的對(duì)CAN網(wǎng)工作狀態(tài)查詢命令的應(yīng)答命令,此外由DATA4=0x00,DATA5=0x00可知,CAN錯(cuò)誤狀態(tài)寄存器接收計(jì)數(shù)器和發(fā)送計(jì)數(shù)器值均為0,說明CAN網(wǎng)是穩(wěn)定可靠的;由第2條CAN報(bào)文幀標(biāo)識(shí)符0x40886600可知,報(bào)文優(yōu)先級(jí)為2,目的地址為0x88,源地址為0x66,說明該報(bào)文是管理節(jié)點(diǎn)Node1發(fā)向從設(shè)備節(jié)點(diǎn)Node2的設(shè)備復(fù)位命令;由第3條CAN報(bào)文幀標(biāo)識(shí)符0x406688f0可知,報(bào)文優(yōu)先級(jí)為2,目的地址為0x66,源地址為0x88,說明該報(bào)文是從設(shè)備節(jié)點(diǎn)Node2發(fā)向管理節(jié)點(diǎn)Node1的設(shè)備復(fù)位報(bào)告命令,即對(duì)設(shè)備復(fù)位命令的回應(yīng)報(bào)文。
    本文設(shè)計(jì)的CAN總線智能節(jié)點(diǎn)已應(yīng)用于車載控制系統(tǒng)中。應(yīng)用結(jié)果表明,利用ARM STM32F107芯片和通用CAN收發(fā)器CTM8251T芯片設(shè)計(jì)的CAN總線智能節(jié)點(diǎn)具有結(jié)構(gòu)簡(jiǎn)單、節(jié)點(diǎn)易于擴(kuò)展、系統(tǒng)運(yùn)行穩(wěn)定可靠、實(shí)時(shí)性好、抗干擾能力強(qiáng)等特點(diǎn),具有良好的應(yīng)用前景。
參考文獻(xiàn)
[1] 吳文珍,韓玉祥,司光宇,等.基于CAN總線智能檢測(cè)儀的設(shè)計(jì)[J].大慶石油學(xué)院學(xué)報(bào),2009,29(5):85-87.
[2] 饒運(yùn)濤,鄒繼軍,王進(jìn)宏,等.現(xiàn)場(chǎng)總線CAN原理與應(yīng)用技術(shù)[M].北京:北京航空航天大學(xué)出版社,2010.
[3] 王月嬌,朱家駒.CAN總線智能測(cè)控節(jié)點(diǎn)的設(shè)計(jì)[J].湖北大學(xué)學(xué)報(bào),2005,27(2):133-136.
[4] 徐愛鈞.IAR EMARM V5嵌入式系統(tǒng)應(yīng)用編程與開發(fā)[M]. 北京:北京航空航天大學(xué)出版社,2009.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
主站蜘蛛池模板: 久草中文视频 | 午夜毛片在线观看 | 国产精品一区在线麻豆 | 欧美一级特黄啪啪片免费看 | 欧美在线播放成人a | 欧美在线精品一区二区在线观看 | 最新中文字幕在线视频 | 青青青久热国产精品视频 | 精品91自产拍在线观看一区 | 一边脱一边摸一边揉免费 | 在线a人片免费观看国产 | 在线一级视频 | 国产日韩欧美精品一区 | 欧美国产亚洲一区 | 亚洲欧美日韩国产精品 | 久久秋霞理伦片 | 99精品在线观看 | 久久天天躁狠狠躁夜夜2020一 | 老司机在线永久免费视频观看 | 一级片网址 | 国产精品免费入口视频 | 天天摸天天揉天天碰天天弄 | 亚洲欧美日韩在线不卡 | 麻豆国产精品入口免费观看 | 国产人成亚洲第一网站在线播放 | 午夜在线 | 黄色片视频在线免费观看 | 天堂资源| 日韩免费一区 | 国产无遮挡裸体免费视频在线观看 | 9久热这里只有精品视频在线观看 | 国产在线精品成人一区二区三区 | 国产全黄一级毛片 | 精品91自产拍在线观看99re | 韩日毛片| 日韩中文字幕高清在线专区 | 欧美小视频在线观看 | 521a成v视频网站在线入口 | 69日本人xxxx16-18 | 亚洲欧美强伦一区二区另类 | 天天色天天拍 |