我在 SmartPreamble 示例(swrc274a)中添加了地址检查时遇到了一些问题。
我添加了
{CC120X_PKT_CFG1、0x13、0x00}、
{CC120X_DEV_ADDR、0x05、0x00}
定制 RegisterSettings[]中。
并在 TX 端的函数 createPacket()中添加了地址字段。 现在、此函数:
静态空 createPacket (void){
UINT16校验和;
uint16 i;
txBuffer[SMARTPREAMBLE_LEN]= 0x55;//前导码
txBuffer[SMARTPREAMBLE_LEN + 1]= 0x55;//前导码
txBuffer[SMARTPREAMBLE_LEN + 2]= 0x55;//前导码
txBuffer[SMARTPREAMBLE_LEN + 3]= 0x55;//前导码
TxBuffer[SMARTPREAMBLE_LEN + 4]= 0xD0;//有效载荷 SYNC1
TxBuffer[SMARTPREAMBLE_LEN + 5]= 0xC9;//有效载荷 SYNC0
txBuffer[SMARTPREAMBLE_LEN + 6]= 21;//长度字节
txBuffer[SMARTPREAMBLE_LEN + 7]= 0x05;//地址字节
//带有随机数据的有效载荷
uint8_t temp = 0x01;
for (uint16_t i =(SMARTPREAMBLE_LEN + 8);
I <(SMARTPREAMBLE_LEN + 8 + PAYLOAD_LENGTH);i++){
txBuffer[i]= temp++;
}
//为数据包生成 CRC
校验和= CRC_INIT;
for (i =(SMARTPREAMBLE_LEN + 6);
i <=(SMARTPREAMBLE_LEN + 7 + PAYLOAD_LENGTH);i++){
校验和= calcCRC (txBuffer[i]、校验和);
}
TxBuffer[SMARTPREAMBLE_LEN + PAYLOAD_LENGTH + PAYLOAD_开销- 2]=
(uint8_t)(校验和>> 8);
TxBuffer[SMARTPREAMBLE_LEN + PAYLOAD_LENGTH + PAYLOAD_开销- 1]=
(uint8_t)(校验和& 0x00FF);
}
在文件 cc120x_smartpreamble_settings.h 中、我已经更改了
#define PAYLOAD_RAY开销 9.
更改为
#define PAYLOAD_RAY开销 10.
它仅在我将 NUM_TIMESTAMP_PACKETS 设置在范围2 - 5时工作。
地址过滤的工作原理我对此进行测试。 使用 NUM_TIMESTAMP_packets 2.
但是、如果我将 NUM_TIMESTAMP_PACKETS 设置为50、则会丢失70%的数据包。
如果我将 NUM_TIMESTAMP_PACKETS 设置为 250 、则表示数据包丢失了99%。
我缺少什么?