在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Can總線如何檢測(cè)BUS-OFF

            Can總線如何檢測(cè)BUS-OFF

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

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

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

            2.如何檢測(cè)BUS-OFF?

            下面以CAN發(fā)送數(shù)據(jù)為例,介紹如何檢測(cè)BUS-OFF錯(cuò)誤狀態(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”);
            }
            }
            通過檢測(cè)framesend .can_id是否被BUS-OFF置位。

            3.BUS-OFF錯(cuò)誤后如何處理?

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

            4.代碼實(shí)現(xiàn)

            檢測(cè)CAN BUS-OFF錯(cuò)誤并進(jìn)行處理,網(wǎng)上已經(jīng)有開源代碼,大家可以參考這個(gè)網(wǎng)址:http://www.pengutronix.de/software/libsocketcan/download/代碼里有個(gè)can_get_state函數(shù),也可以檢測(cè)CAN BUS當(dāng)前的狀態(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總線BUS-OF

            評(píng)論


            技術(shù)專區(qū)

            關(guān)閉