<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > Small RTOS51 下CAN總線(xiàn)數據收發(fā)實(shí)現

Small RTOS51 下CAN總線(xiàn)數據收發(fā)實(shí)現

作者: 時(shí)間:2009-11-05 來(lái)源:網(wǎng)絡(luò ) 收藏
(2)節點(diǎn)前端物理接口電路的設計



(c)節點(diǎn)前端物理接口電路的設計

使用SJA1000 控制器可完成通信任務(wù),但它的驅動(dòng)能力不夠,因此外接82C250驅動(dòng)芯片。82C250是控制器和物理總線(xiàn)間的接口。之所以選擇82C250芯片是因為其具有高速性(最高可達1Mbit/s),具有抗瞬間干擾保護總線(xiàn)的能力。具有降低射頻干擾的斜率控制。此外,它可以與110 個(gè)節點(diǎn)相連,防止電池與地之間發(fā)生短路,當某一個(gè)節點(diǎn)掉電時(shí),不會(huì )影響總線(xiàn)。

(3)設計電路注意的問(wèn)題

◆SJA1000通過(guò)光耦與82C250的連接是光電隔離的接法。這樣可以防止線(xiàn)路間的串擾。在總線(xiàn)兩端要接2 個(gè)120歐姆的總線(xiàn)阻抗匹配電阻。忽略掉它們會(huì )降低總線(xiàn)的抗干擾能力,甚至導致無(wú)法通信。

◆SJA1000的TX1腳懸空,RX1引腳的電位必須維持在0.5vcc以上,否則將不能行成CAN協(xié)議所要求的電平邏輯。

◆光耦6N137的輸入端2,3腳的信號輸入極性要與光耦的輸出極性相同,如果電路設計時(shí)極性相反,也可以通過(guò)軟件編程改變SJA1000的輸出極性,從而使單片機的輸出與82C250中的極性一致。

4 在 RTOS 下CAN節點(diǎn)的數據接收與發(fā)送實(shí)例

下面將通過(guò)一個(gè)簡(jiǎn)單的實(shí)例(需要配置 操作系統)來(lái)介紹在 RTOS 下CAN節點(diǎn)的數據接收與發(fā)送過(guò)程。實(shí)例使用兩個(gè)CAN節點(diǎn)組成CAN網(wǎng)絡(luò ),的功能是,每隔一定的定時(shí)周期發(fā)送一幀數據,同時(shí)接收CAN數據,并將接收的CAN數據發(fā)送到CAN總線(xiàn)上。LED將顯示收到的數據幀的頭兩個(gè)字節。

(1)實(shí)例部分代碼

void main(void)
{
CpuInit(); //微控制器初始化
UserTickTimer(void);//系統時(shí)鐘節拍的初始化
OSStart();//啟動(dòng)small rtos操作系統
SendData();//發(fā)送數據任務(wù)
{ unsigned char data status;
unsigned char i;
unsigned char xdata *p =CAN1_SJA_BaseAdr+REG_CAN_SR;
unsigned char xdata *p1;
status=SJAInit();//初始化can控制器
if(status!=0){
OSSendSignal(2); //喚醒錯誤處理任務(wù)
}
P_SJAFrameStructApp=(P_SJAFrameStruct )BufCan2[0];
IT0 =0;//電平觸發(fā)模式
EX0=1;//使能CAN中斷
BufCan2[0]=0x88;
P_SJAFrameStructApp->FrameID=0x11111111;
while(1)
{
OSWait(K_TMO,2);//系統等待函數,每?jì)蓚€(gè)時(shí)鐘周期發(fā)送一次數據
P_SJAFrameStructApp->FrameID++;
p1=(unsigned char xdata *)P_SJAFrameStructApp->FrameID;
for(i=0;i4;i++)//發(fā)送測試數據
BufCan2[1+i] =*(p1+i);// 0x55;
for(i=0;i4;i++)
BufCan2[5+i] =*(p1+i);// 0x55;
for(i=0;i4;i++)
BufCan2[9+i] =*(p1+i);// 0x55;
status=SJASendData(BufCan2,0x10);//向CAN總線(xiàn)發(fā)送數據,所發(fā)送數據的首地址是BufCan2
if(status!=0)//表示發(fā)送數據錯誤
OSSendSignal(2);喚醒錯誤處理任務(wù)
}
}
void DisPlay(void)
{
while(1){
OSWait(K_TMO,1);
ShowLED(); // led顯示處理
}
}
Error();// 錯誤信息處理任務(wù)
}
(2) 測試結果:

如果運行正確:數碼管會(huì )顯示依次加1的數值,否則:數碼管會(huì )顯示E-xx的錯誤代碼

5 結束語(yǔ)

CAN自其誕生以來(lái),以其獨特的設計思想、優(yōu)良的性能和極高的可靠性越來(lái)越受到工業(yè)界的青睞,CAN已經(jīng)廣泛用于汽車(chē)、火車(chē)、輪船、機器人、智能樓宇、機械制造、數控機床、紡織機械、醫療器械、農用機械、液壓傳動(dòng)、消防管理、傳感器、自動(dòng)化儀表等領(lǐng)域。目前支持CAN協(xié)議的有Intel,Motorola,Philips,Siemens,NEC,Silioni,Honeywell等百余家國際著(zhù)名大公司。因此CAN成為許多人學(xué)習的熱點(diǎn),本文對讀者了解CAN總線(xiàn)節點(diǎn)的設計以及CAN總線(xiàn)對數據的接收和發(fā)送原理有很大的幫助。

本文作者創(chuàng )新點(diǎn)是了在實(shí)時(shí)操作系統Small 下CAN總線(xiàn)上數據的接收與發(fā)送,用一個(gè)簡(jiǎn)單的實(shí)例來(lái)說(shuō)明了CAN總線(xiàn)的接收、發(fā)送原理。

本文引用地址:http://dyxdggzs.com/article/152298.htm

上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>