AT90CAN單片機(jī)CAN通信模塊介紹及軟件編程
for(i = 0;i8;i++) {
CANMSG=PCSJ[i]; //將接收到的數(shù)據(jù)發(fā)送回上位機(jī)
}
CANCDMOB=0x58;//使能發(fā)送
CANSTMOB=~(1TXOK);//清TXOK標(biāo)志
wait(2);
}
}
實例中數(shù)據(jù)接收由MOB5產(chǎn)生中斷完成,中斷服務(wù)子程序如下:
#pragma interrupt_handler can_isr:19//CAN控制器中斷向量入口
void can_isr(void) {
if ((CANSIT2 0x20)==0x20) {//判斷是否是MOB5產(chǎn)生中斷
CANPAGE=0x50;
for(i = 0; i 8; i++) {
PCSJ[i] =CANMSG;
}
CANSTMOB = 0x00; //清狀態(tài)位
CANCDMOB = 0x98;//重新使能接收功能
}
}
4 結(jié)論
AVR系列單片機(jī)內(nèi)部有可編程的Flash,自帶EEPROM,支持JTAG接口片內(nèi)調(diào)試和對Flash、EEPROM、熔絲位和鎖定位的編程,因此成為眾多單片機(jī)芯片的首選。其內(nèi)部集成了獨立CAN控制器的AT90CAN系列單片機(jī),彌補(bǔ)了單片機(jī)在CAN總線通信應(yīng)用中的缺陷,不必再擴(kuò)展外圍的CAN通信控制芯片,簡化了硬件電路設(shè)計。本文通過對AT90CAN系列單片機(jī)CAN通信模塊的詳細(xì)介紹,旨在說明如何對其進(jìn)行編程實現(xiàn)CAN通信功能,為使用單片機(jī)進(jìn)行CAN通信的初學(xué)者提供了編程參考。
評論