<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è) > 嵌入式系統 > 設計應用 > Can總線(xiàn)如何檢測BUS-OFF

Can總線(xiàn)如何檢測BUS-OFF

作者: 時(shí)間:2016-12-15 來(lái)源:網(wǎng)絡(luò ) 收藏
1.什么是BUS-OFF?

當CAN控制器發(fā)生錯誤的次數超過(guò)255次,就會(huì )觸發(fā)BUS-OFF錯誤。一般發(fā)生BUS-OFF的條件是CAN總線(xiàn)受周?chē)h(huán)境干擾,導致CAN發(fā)送端發(fā)送到總線(xiàn)的數據被BUS總線(xiàn)判斷為異常,但異常的次數超過(guò)255次,BUS總線(xiàn)自動(dòng)設置為BUS-OFF狀態(tài),此時(shí)總線(xiàn)處于忙的狀態(tài),數據無(wú)法發(fā)送,也無(wú)法接收。

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

2.如何檢測BUS-OFF?

下面以CAN發(fā)送數據為例,介紹如何檢測BUS-OFF錯誤狀態(tài)。

structcan_frameframesend={
.can_id=0xaa,
.can_dlc=1,
.data[0]=0x66,
};
err=write(s_can0,&framesend,sizeof(framesend));
if(err<=0)
perror(“senddataerror”);
else{
if(framesend.can_id&CAN_ERR_BUSOFF){
perror(“bus-off”);
}
}
通過(guò)檢測framesend .can_id是否被BUS-OFF置位。

3.BUS-OFF錯誤后如何處理?

最好的處理方法是:restart。can0出錯了,restart can0。

4.代碼實(shí)現

檢測CAN BUS-OFF錯誤并進(jìn)行處理,網(wǎng)上已經(jīng)有開(kāi)源代碼,大家可以參考這個(gè)網(wǎng)址:http://www.pengutronix.de/software/libsocketcan/download/代碼里有個(gè)can_get_state函數,也可以檢測CAN BUS當前的狀態(tài)。

intstate;
if((can_get_state(if_name_can0,&state))<0)
{
fprintf(stderr,"cannotgetbustate,""somethingisseriouslywrong");
}
elseif(state==CAN_STATE_BUS_OFF)
{
fprintf(stderr,"DeviceisinBUS_OFF");
do_restart("can0");
}

do_restart("can0")的作用是restart can0。



關(guān)鍵詞: Can總線(xiàn)BUS-OF

評論


技術(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>