日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]學(xué)點(diǎn)東西不容易,花了6小時(shí)終于明白了過濾,關(guān)鍵是沒有找到合適的范例 。STM8S提供了6個(gè)32位的過濾寄存器,我們暫以只討論32位的地址過濾。這6個(gè)32位的過濾,可以選用列表方式,即6個(gè)寄存器組設(shè)置的標(biāo)識符才可不被CA

學(xué)點(diǎn)東西不容易,花了6小時(shí)終于明白了過濾,關(guān)鍵是沒有找到合適的范例 。

STM8S提供了6個(gè)32位的過濾寄存器,我們暫以只討論32位的地址過濾。

這6個(gè)32位的過濾,可以選用列表方式,即6個(gè)寄存器組設(shè)置的標(biāo)識符才可不被CAN丟棄,但這似乎很少這樣通訊,一般我們會選用電腦網(wǎng)卡類似的遮罩方式 192.168.1.1 / 255.255.255.0 如此就限制了只有同網(wǎng)段的包才可被接收,下面我們重點(diǎn)來討論這個(gè)問題 。

6個(gè)32位過濾寄存器(我們可以把它當(dāng)成32位的,這樣更易表述些,實(shí)際上是4個(gè)8位的),可以兩兩組合成帶有遮罩過濾的3個(gè)組,我們只討論其中一組即可。

在發(fā)送數(shù)據(jù)時(shí),標(biāo)識包格式如下:


而過濾寄存器的格式如下,也就是說接收和發(fā)送的標(biāo)識符的ID排列結(jié)構(gòu)是不一致的,STM庫一貫較好,在此處表現(xiàn)很欠佳,所以讓我折騰了6個(gè)小時(shí),正是這一原因,所以很估計(jì)多CAN初學(xué)者可能都在此處遇到麻煩了吧


通常我們在程序中這樣寫

發(fā)送:

Tx_Id = 0x12345678;//29bit

Tx_IDE = CAN_Id_Extended;//CAN_Id_Standard;

Tx_RTR = CAN_RTR_Data;

Tx_DLC = 2;

Tx_Data[0] = tx_count++;

Tx_Data[1] = ~Tx_Data[0];

// CHECK_MAIL();

status = CAN_Transmit(Tx_Id,Tx_IDE,Tx_RTR,Tx_DLC,Tx_Data);

而接收過濾就很易出錯(cuò):如下

CAN_FilterNumber = CAN_FilterNumber_0;

CAN_FilterActivation = ENABLE;

CAN_FilterMode = CAN_FilterMode_IdMask;

CAN_FilterScale = CAN_FilterScale_32Bit;

CAN_FilterID1=0x91;//假如我們只想收到0X12345678標(biāo)識符前8bit相同的標(biāo)識頭的包,這里要填上0X12就大錯(cuò)了,因?yàn)槭瞻l(fā)的標(biāo)識符是不對齊的,所以接收包的ID向左移3位,第一字節(jié)就成了0X91,其它位同理

CAN_FilterID2=0x00;

CAN_FilterID3=0x00;

CAN_FilterID4=0x00;

CAN_FilterIDMask1=0xff;

CAN_FilterIDMask2=0;

CAN_FilterIDMask3=0;

CAN_FilterIDMask4=0;

CAN_FilterInit(CAN_FilterNumber, CAN_FilterActivation, CAN_FilterMode,

CAN_FilterScale,CAN_FilterID1, CAN_FilterID2, CAN_FilterID3,

CAN_FilterID4,CAN_FilterIDMask1, CAN_FilterIDMask2,

CAN_FilterIDMask3, CAN_FilterIDMask4);


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉