完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
CC1101为什么会收到错误字符? 最近在调433m cc1101无线模块,因为产品问题,规定了下数据包格式,采用了固定包长方式(3个字节的数据包)、取消crc校验、取消地址校验、接收方式采用中断方式、用GDO2管脚用作中断管脚,IOCFG2 寄存器写的 0x30,也就是IOCFG2.GDO2_CFG设置为0x00模式,接收缓存阈值设置0x00(4字节阈值),包长3字节+2字节状态寄存器=5字节>4字节阈值,肯定会触发中断,现在问题是发送端每隔0.5s发送一次数据,接收端触发中断就会接收数据,但是现在通过串口打印数据显示的接收数据中会不定期的接收到错误的字符,我在中断标志置位后,设定了判断条件,if((halSpiReadStatus(CCxxx0_RXBYTES) & BYTES_IN_RXFIFO)==5),也就是只有数据长度为5才可以执行接收,但是还是打印出错误字符,错误字符也是5个字节的数据,这是怎么回事呢?求ti技术员指导一些意见,谢谢! 函数寄存器配置: const RF_SETTINGS rfSettings = { 0x00, 0x08, // FSCTRL1 Frequency synthesizer control. 0x00, // FSCTRL0 Frequency synthesizer control. 0x10, // FREQ2 Frequency control word, high byte. 0xA7, // FREQ1 Frequency control word, middle byte. 0x62, // FREQ0 Frequency control word, low byte. 0x5B, // MDMCFG4 Modem configuration. 0xF8, // MDMCFG3 Modem configuration. 0x03, // MDMCFG2 Modem configuration.4字节同步字 0x22, // MDMCFG1 Modem configuration.4字节前导 0xF8, // MDMCFG0 Modem configuration. 0x00, // CHANNR Channel number. 0x47, // DEVIATN Modem deviation setting (when FSK modulation is enabled). 0xB6, // FREND1 Front end RX configuration. 0x10, // FREND0 Front end RX configuration. 0x18, // MCSM0 Main Radio Control State Machine configuration. 0x3c, //MCSM1 数据包接收后一直保持在接收模式 0x1D, // FOCCFG Frequency Offset Compensation Configuration. 0x1C, // BSCFG Bit synchronization Configuration. 0xC7, // AGCCTRL2 AGC control. 0x00, // AGCCTRL1 AGC control. 0xB2, // AGCCTRL0 AGC control. 0xEA, // FSCAL3 Frequency synthesizer calibration. 0x2A, // FSCAL2 Frequency synthesizer calibration. 0x00, // FSCAL1 Frequency synthesizer calibration. 0x11, // FSCAL0 Frequency synthesizer calibration. 0x59, // FSTEST Frequency synthesizer calibration. 0x81, // TEST2 Various test settings. 0x35, // TEST1 Various test settings. 0x09, // TEST0 Various test settings. 0x00, // IOCFG2 GDO2 output pin configuration. 0x06, // IOCFG0 GDO0 output pin configuration. Refer to SmartRF?Studio User Manual for detailed pseudo register explanation. 0x04, // PKTCTRL1 Packet automation control. 0x00, // PKTCTRL0 Packet automation control. 0x40, //FIFOTHR 4字节阈值 0x00, // ADDR Device address. 0x03 // PKTLEN Packet length. }; 中断接收函数: void EXTI4_15_IRQHandler(void) { //---------------------------------GDO2---------------------------------- if(EXTI_GetITStatus(EXTI_Line11) != RESET) //GDO2 { if(GPIO_ReadInputDataBit( GPIOB, GPIO_Pin_GDO2 )) { RxFlag=1; 状态置位 } } EXTI_ClearITPendingBit(EXTI_Line11);//清中断 } while循环里边接收: if(RxFlag==1) { RxFlag=0; value=halSpiReadStatus(CCxxx0_RXBYTES) & BYTES_IN_RXFIFO; if(value==5) { halSpiReadBurstReg(CCxxx0_RXFIFO, RxBuf,3 ); // Read the 2 appended status bytes (status[0] = RSSI, status[1] = LQI) halSpiReadBurstReg(CCxxx0_RXFIFO, status, 2); LED1_Toggle(); USART_SendString(USART2,RxBuf,3); USART_SendString(USART2,"rn",2); } } 读取到的错误数据: |
|
相关推荐
2个回答
|
|
可以用第三个CC1101板子连接Smartrf Studio放在接收状态,看在接收端收到错误数据的时候,第三个CC1101是否也有接收到同样的错误的数据。
如果是,多半是发送端问题。如果不是则多半是接收端问题。 |
|
|
|
国产替代CC1101、SI4432无线芯片HW3000
极低的接受电流8mA,业内领先的20dBm输出功率 比CC1101、SI4432无线芯片有价格优势 传输距离可达到2Km@10kbps 硅传科技www.silicontra.com |
|
|
|
只有小组成员才能发言,加入小组>>
物联网工程师必备:怎么选择不同的无线连接技术,本指南帮你忙!
2912 浏览 1 评论
【DFRobot TinkerNode NB-IoT 物联网开发板试用连载】WIFI功能测试
3583 浏览 0 评论
【DFRobot TinkerNode NB-IoT 物联网开发板试用连载】Arduino的替代SublimeText3+STino
3111 浏览 0 评论
使用端口扩展器轻松高效地向IIoT端点添加具有成本效益的子节点
3600 浏览 1 评论
19941 浏览 11 评论
2601浏览 1评论
221浏览 1评论
Banana Pi BPI-Centi-S3 是一个板载1.9英寸彩屏的小尺寸ESP32-S3开发板
1027浏览 0评论
8011浏览 0评论
8085浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-19 09:30 , Processed in 1.201397 second(s), Total 75, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号