基于LPC2131嵌入式系統μCOS-II實(shí)現CAN通訊
·數據接受模塊
根據電路圖1,采用中斷接受的方式來(lái)接受數據,LPC2131的P0.30設置為外部中斷3,整個(gè)數據接受模塊由數據接受函數void ReceiveData(uint8 *Rt)、中斷處理函數Can_Exception(void)構成。當SJA1000接受到CAN總線(xiàn)數據,通過(guò)接收中斷使得LPC2131產(chǎn)生外部中斷3而使其進(jìn)入中斷處理函數,進(jìn)而對接受到的數據進(jìn)行處理。其中數據接受函數和中斷處理函數如下:
void ReceiveData (void)
{
uint8 i, err,*Rt;
OS_ENTER_CRITICAL();
Rt=(uint8 *)OSMboxPend(OSCANMbox,0,err);
//通過(guò)郵箱接受數據
for (i=0;i13;i++)
ReceiveData[i]=*Rt++; //將接受到的數據存在全局變量中供后續處理
OS_EXIT_CRITICAL();
}
void Can_Exception(void)
{
u
int8 temp[13],i;
OS_ENTER_CRITICAL();
for (i=0;i13;i++)
temp[i]=ReadCan(16+i); //讀取CAN數據
OSMboxPost(OSCANMbox,(void *)temp); //將
CAN數據以郵箱發(fā)送到接受函數
EXTINT=0x08; //清楚ENT3
VICVectAddr=0; //中斷返回
OS_EXIT_CRITICAL();
}
結語(yǔ)
以ARM芯片作為主控制器,CAN總線(xiàn)作為數據傳輸方式來(lái)進(jìn)行通訊的嵌入式系統得到了越來(lái)越廣泛的應用。同時(shí)CAN通訊的可靠性也成為影響系統性能的關(guān)鍵部分之一。本文以LPC2131為例,給出了一類(lèi)微處理器與CAN控制器SJA1000之間的較為通用的硬件連接方法,對CAN總線(xiàn)進(jìn)行了可靠性設計,并基于嵌入式實(shí)時(shí)操作系統μCOS-II進(jìn)行了CAN通訊軟件開(kāi)發(fā),該設計現已在工廠(chǎng)車(chē)間中的分布式監控系統中得到了應用,運行可靠、穩定。
評論