|
如题,我有一个NRF905的基站,配置成只收5字节数据长度的数据。标签也配置成5字节的,标签只发数据,二者通信稳定且正常。
后来发现5字节数据太多,基站和标签都改为4字节就可以了,测试通信正常。测试时有个基站没有改为4字节长度(还是5字节长度模式),但是标签是4字节的,偶尔发现这个基站却能莫名其妙的收到一些数据,但却不是这个标签。关闭此标签后,基站不在收到任何数据,这样就确定是这个4字节的标签被5字节的基站收到了,但是号码却不是此标签的。
后来一路仿真测试,确实是5字节基站收到了此4字节的标签。
例如:4字节标签一直发送的数据为:0x10,0x00,0x00,0x01,
5字节基站有时收到的数据为:0x10,0x00,0x00,0x01,0x2f,
但是多数情况下基站收到的数据却是:0x17,0xEA,0x00,0x37,0x2D,其中最后一个字节每次都在变化。
下面是基站和标签的905配置字节:
- 4字节标签发射配置:
- const u8 Tx_Config_4bytes[10] =
- {
- 0x6c, /* 频点433.2MHz */
- 0x0c, /* 输出功率为10db,不重发,节电为正常模式 */
- 0x44, /* 地址宽度设置为4字节 */
- 0x04,0x04, /* 接收发送有效数据长度为4字节 */
- 0xAD,0x77,0x5D,0x1B, /* 接收地址 */
- 0xdb, /* CRC充许,16位CRC校验,外部时钟信号不使能,16M晶振 */
- };
- 5字节标签发射配置:
- const u8 Tx_Config_5bytes[10] =
- {
- 0x6c, /* 频点433.2MHz */
- 0x0c, /* 输出功率为10db,不重发,节电为正常模式 */
- 0x44, /* 地址宽度设置为4字节 */
- 0x05,0x05, /* 接收发送有效数据长度为5字节 */
- 0xAD,0x77,0x5D,0x1B, /* 接收地址 */
- 0xdb, /* CRC充许,16位CRC校验,外部时钟信号不使能,16M晶振 */
- };
- 基站接收配置:
- const u8 Rx_Config_5bytes[10] =
- {
- 0x6c, /* 频点433.2MHz */
- 0x0c, /* 输出功率为10db,不重发,节电为正常模式 */
- 0x44, /* 地址宽度设置为4字节 */
- 0x05,0x15, /* 接收有效数据长度为5字节,发送21字节 */
- 0xAD,0x77,0x5D,0x1B, /* 接收地址 */
- 0xd8, /* CRC充许,16位CRC校验,外部时钟信号不使能,16M晶振 */
- };
复制代码
分析:基站配置为5字节模式,但是标签发送的是4字节数据+2个字节的CRC,基站收到4个字节的数据后误把CRC当做数据接收,但是905的CRC肯定会校验不通过,905不会发出数据接收完成中断的。但是测试多次发现,这种偶尔现象发生的概率挺大的,1分钟内就出现5次左右。
哪位遇到过此种情况,如何解决呢?
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|