基于AVR處理器at90can128的CAN總線(xiàn)應(yīng)用
CANPAGE = ( 0 4) ; / /選擇MOB0作為接收MOB, 并設(shè)定標(biāo)識(shí)碼
CAN IDT1= 0X00;
CAN IDM1= 0X00;
……
CANPAGE = ( 1 4); / /選擇MOB1作為發(fā)送MOB, 并設(shè)定標(biāo)識(shí)碼
CAN IDT1= 0X00;
……
}
發(fā)送模塊代碼:
CANPAGE = ( 1 4); / /選定MOB1
If( ( CANGSTA 0X10) = = 0) / /查詢(xún)CAN 狀態(tài)寄存器的TXBSY 位, 為0, 則可以發(fā)送
for( i= 0; i 8; i+ + )
{
CANMSG= my _dada[ i] ; / /將要發(fā)送的數(shù)據(jù)裝入數(shù)據(jù)寄存器中, 共8 by te
CANCDMOB | = 0X48; / /發(fā)送
}
接收模塊代碼是類(lèi)似的, 設(shè)計(jì)思路都是在判斷發(fā)送允許標(biāo)志之后, 如果允許, 就將數(shù)據(jù)裝入到指定的MOB中, 而每個(gè)MOB 一個(gè)發(fā)送周期一共可以發(fā)送8byte的數(shù)據(jù)。而CAN 總線(xiàn)的另一端是NXP公司LPC2294的CAN總線(xiàn)外圍, 其結(jié)構(gòu)和原理都差不多, 當(dāng)然, 在寄存器設(shè)置中會(huì)有一點(diǎn)差別, 但只要兩個(gè)CPU 約定好數(shù)據(jù)幀的標(biāo)識(shí)符編號(hào)是什么, 傳輸速率相同, 就可以進(jìn)行數(shù)據(jù)交換了。由于篇幅有限,LPC2294的CAN接口設(shè)置在此就不作介紹了。
最后給出了CAN 總線(xiàn)應(yīng)用CPU 外部的硬件原理參考圖, 如圖4所示。
5 CAN 總線(xiàn)收發(fā)器TJA1050硬件連接圖
圖中CAN 收發(fā)器為NXP公司的TJA1050, TXD和RXD分別連接到CPU 的CAN接口, CANL和CANH 則為與另一個(gè)CPU 連接的總線(xiàn), CANL 和CANH 之間電阻值約為120歐姆, 開(kāi)關(guān)S可以作為CAN 總線(xiàn)的硬件啟用開(kāi)關(guān)。另外, 如果在抗干擾要求高的場(chǎng)合, 可以對(duì)TXD 和RXD使用光電隔離。
圖4 CPU 外圍收發(fā)器的硬件原理圖。
6 結(jié)束語(yǔ)
基于at90can128的CAN 總線(xiàn)模塊設(shè)計(jì)的電梯系統(tǒng)調(diào)試器, 經(jīng)過(guò)長(zhǎng)時(shí)間的檢驗(yàn), 使用良好, 通信正常無(wú)誤。在眾多的現(xiàn)場(chǎng)總線(xiàn)當(dāng)中, CAN 總線(xiàn)憑借其優(yōu)秀的特性已經(jīng)為越來(lái)越多的工程人員認(rèn)同和偏愛(ài), 而隨著越來(lái)越多的高端CPU 對(duì)CAN 控制器的集成和綜合成本的下降, CAN 總線(xiàn)的使用必定會(huì)越來(lái)越普遍, 其中集成CAN 控制器的8位AVR 也會(huì)受到越來(lái)越多人的青睞。
評(píng)論