日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

DWM1000 帧过滤代码实现

發(fā)布時(shí)間:2023/12/31 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DWM1000 帧过滤代码实现 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

幀過(guò)濾功能可以在同一個(gè)環(huán)境內(nèi)組建多個(gè)網(wǎng)絡(luò)而不干擾(非頻段不同),可以通過(guò)PANID(網(wǎng)絡(luò)ID)區(qū)分不同網(wǎng)絡(luò),不同網(wǎng)絡(luò)中的模塊無(wú)法直接通信, 再之,利用短地址,網(wǎng)絡(luò)中可以同時(shí)有多個(gè)模塊發(fā)送信息,而接收端會(huì)根據(jù)信息短地址不同而自動(dòng)過(guò)濾。

1 發(fā)送端部分,組建發(fā)送結(jié)構(gòu)體,按照MAC 數(shù)據(jù)結(jié)構(gòu)組織。

srd_msg_dsss msg_f ; // ranging message frame with 16-bit addressesint psduLength = 0;//set frame type (0-2), SEC (3), Pending (4), ACK (5), PanIDcomp(6)msg_f.frameCtrl[0] = 0x1 /*frame type 0x1 == data*/ | 0x40 /*PID comp*/;//source/dest addressing modes and frame version//msg_f.frameCtrl[0] = 0x41;msg_f.frameCtrl[1] = 0x8 /*dest extended address (16bits)*/ | 0x80 /*src extended address (16bits)*/;msg_f.panID[0] = 0xF0;msg_f.panID[1] = 0xF0;msg_f.seqNum = 0;msg_f.messageData[POLL_RNUM] = 3; //copy new range numbermsg_f.messageData[FCODE] = RTLS_DEMO_MSG_ANCH_POLL; //message function code (specifies if message is a poll, response or other...)psduLength = (TAG_POLL_MSG_LEN + FRAME_CRTL_AND_ADDRESS_S + FRAME_CRC);msg_f.seqNum = 0; //copy sequence number and then incrementmsg_f.sourceAddr[0] = 0x02; //copy the addressmsg_f.sourceAddr[1] =0x02; //copy the addressmsg_f.destAddr[0] = 0x01; //set the destination addressmsg_f.destAddr[1] = 0x01; //set the destination address

其中數(shù)據(jù)結(jié)構(gòu)?srd_msg_dsss 部分摘錄自官方源碼。模塊所在PANID = 0xF0F0, TX 本身短地址0x0202,RX本身短地址0x0101。-->接收端需要配置同樣的PANID以及RX本身地址

啟動(dòng)發(fā)送代碼

dwt_writetxdata(psduLength, (uint8 *)&msg_f, 0) ; // write the frame datadwt_writetxfctrl(psduLength, 0);/* Start transmission. */dwt_starttx(DWT_START_TX_IMMEDIATE);

2 RX 使能幀過(guò)濾功能以及配置PANID 和 短地址

dwt_enableframefilter(DWT_FF_DATA_EN | DWT_FF_ACK_EN); dwt_setpanid(0xF0F0);dwt_setaddress16(0x0101);

接收并打印信息

if (status_reg & SYS_STATUS_RXFCG){//printf("Step3!\r\n");/* A frame has been received, copy it to our local buffer. */frame_len = dwt_read32bitreg(RX_FINFO_ID) & RX_FINFO_RXFL_MASK_1023;if (frame_len <= FRAME_LEN_MAX){dwt_readrxdata(rx_buffer, frame_len, 0);USART_puts(rx_buffer,frame_len);//printf("Y!\r\n"); }/* Clear good RX frame event in the DW1000 status register. */dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_RXFCG);}

按照上述代碼實(shí)現(xiàn),RX端可以接收到TX發(fā)送的信息。

增加實(shí)驗(yàn):不論單獨(dú)修改TX/RX 任何一端的PANID 和 短地址,RX端均不能收到數(shù)據(jù),說(shuō)明幀過(guò)濾功能正常。

?

上述只有部分代碼實(shí)例,完整工程請(qǐng)到bphero.com.cn 下載學(xué)習(xí)

轉(zhuǎn)載于:https://www.cnblogs.com/tuzhuke/p/10503052.html

總結(jié)

以上是生活随笔為你收集整理的DWM1000 帧过滤代码实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。