閆鵬
【摘要】 本文提出一種STM32F103系列RAM微控制器和CAN總線驅(qū)動(dòng)器SN65HVD230為核心來(lái)搭建CAN節(jié)點(diǎn)。給出了CAN節(jié)點(diǎn)硬件架構(gòu)的實(shí)現(xiàn),分析了軟件開(kāi)發(fā)流程,實(shí)現(xiàn)了數(shù)據(jù)穩(wěn)定可靠的傳輸。
【關(guān)鍵詞】 STM32F103 CAN總線 SN65HVD230
CAN總線以其較高的通訊速率、良好的抗電磁干擾能力可實(shí)現(xiàn)高可靠性串行通信,因而在工業(yè)現(xiàn)場(chǎng)、汽車、智能家居得到廣泛的運(yùn)用,是當(dāng)前最具前景的現(xiàn)場(chǎng)總線之一。
一、CAN節(jié)點(diǎn)硬件架構(gòu)
1.1 硬件模塊介紹
SN65HVD230是德州儀器公司生產(chǎn)的CAN總線收發(fā)器。該收發(fā)器具有差分收發(fā)能力,最高速率可達(dá)1Mb/s。具有高速、斜率和等待3種不同的工作模式。其工作模式控制可通過(guò)Rs控制引腳來(lái)實(shí)現(xiàn)。在高速模式下,收發(fā)器的通信速率達(dá)到最高.此時(shí)沒(méi)有內(nèi)部輸出上升斜率和下降斜率的限制。該方式下,最大速率的限制與電纜的長(zhǎng)度有關(guān)。為了減少因電平快速上升而引起的電磁干擾,引入了斜率控制方式。待機(jī)狀態(tài),系統(tǒng)只“聽(tīng)”發(fā)送過(guò)來(lái)的消息。在“聽(tīng)”狀態(tài)下,收發(fā)器的發(fā)送功能處于關(guān)斷狀態(tài),接收功能仍處于有效狀態(tài)。
1.2 電路設(shè)計(jì)實(shí)現(xiàn)
由于STM32F103單片機(jī)自帶一路CAN控制器,所以只需外設(shè)一片CAN收發(fā)器芯片。RAM單片機(jī)的CAN信號(hào)接收引腳RX和發(fā)送引腳TX直接連接到CAN收發(fā)器T的RXD和TXD端。CANH與CANL之間接一個(gè)120歐姆的終端電阻,主要用于遠(yuǎn)距離傳輸時(shí)的阻抗匹配和增強(qiáng)電磁兼容性能。如圖1 CAN節(jié)點(diǎn)電路設(shè)計(jì)所示。
二、軟件設(shè)計(jì)
2.1 SN65HVD230初始化配置
在程序初始化中對(duì)CAN控制器的一些內(nèi)部寄存器進(jìn)行設(shè)置,位定時(shí)器BCR1、BCR2的內(nèi)容確定系統(tǒng)的通信波特率和同步跳轉(zhuǎn)寬度,兩個(gè)寄存器的設(shè)置必須使本節(jié)點(diǎn)和其他節(jié)點(diǎn)有相同的通信波特率,否則通信無(wú)法完成。CAN控制器對(duì)總線的通信管理有發(fā)送數(shù)據(jù)和接收數(shù)據(jù)。當(dāng)本節(jié)點(diǎn)需要向其他節(jié)點(diǎn)傳送數(shù)據(jù)時(shí),CAN控制器將發(fā)送郵箱中的數(shù)據(jù)按規(guī)定的格式發(fā)送到CAN總線上,總線上其他節(jié)點(diǎn)根據(jù)設(shè)計(jì)好的驗(yàn)收碼和驗(yàn)收屏蔽碼來(lái)判斷是否接收該數(shù)據(jù)。其他節(jié)點(diǎn)發(fā)送到CAN總線上的數(shù)據(jù),如果其描述符不能通過(guò)本節(jié)點(diǎn)的驗(yàn)收濾波器,CAN控制器不對(duì)該數(shù)據(jù)驗(yàn)收;如果描述符通過(guò)本節(jié)點(diǎn)驗(yàn)收濾波器,CAN控制器將CAN總線上的數(shù)據(jù)順序存入空的接收郵箱中,并向RAM發(fā)送中斷請(qǐng)求,RAM 響應(yīng)中斷,把接收郵箱中的數(shù)據(jù)取出。
2.2數(shù)據(jù)的接收
系統(tǒng)各節(jié)點(diǎn)的功能主要是將本節(jié)點(diǎn)的數(shù)據(jù)傳送給網(wǎng)絡(luò)其他節(jié)點(diǎn),以及接收網(wǎng)絡(luò)上其他節(jié)點(diǎn)傳送來(lái)的數(shù)據(jù)。下面給出測(cè)量單元向CAN 總線發(fā)送數(shù)據(jù)的程序流程圖,系統(tǒng)的時(shí)為8MHz,控制器的波特率設(shè)置為500kbps。如圖2所示,即為CAN節(jié)點(diǎn)數(shù)據(jù)收發(fā)程序流程圖。
三、結(jié)束語(yǔ)
本文提出的基于RAM的CAN 智能節(jié)點(diǎn)控制器,既考慮了CAN總線實(shí)現(xiàn)的簡(jiǎn)單化,又兼顧了智能節(jié)點(diǎn)的應(yīng)用于不同場(chǎng)合時(shí)的可擴(kuò)展性和靈活性。該智能節(jié)點(diǎn)集成度高、性能穩(wěn)定,是適合工業(yè)測(cè)控領(lǐng)域的一種理想實(shí)現(xiàn)方案。
參 考 文 獻(xiàn)
[1] 肖廣兵,萬(wàn)茂松.基于STM32的系統(tǒng)設(shè)計(jì)[M].北京:電子工業(yè)出版社,2013:74—75.
[2] 鄔寬明.CAN總線原理和應(yīng)用系統(tǒng)設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,1996.
[3] 吳恒,夏立.基于CAN總線的船舶火災(zāi)報(bào)警系統(tǒng)的設(shè)計(jì)[J].青島大學(xué)學(xué)報(bào),2004,17:67—70.