RF_PHY例程,发送端发送数据包,在1米内接收端有时候完全接收不到,这种是正常的现象吗?
导致这个情况的原因是什么,有没有改善的方法呢?
需要查看环境,如果是相对空阔环境则不正常。
建议使用开发板和EVT例程进行测试,排查软件和硬件干扰。可能是天线绘制不好导致,或者代码收发处理问题。
环境无论是在哪个地方都会出现这种情况.
天线采用的是贴片天线.
用自己的板子,1个发2个收,有时候一个完全没收到,另一个就能收到.没收到的那个RF_2G4StatusCallBack函数完全没被触发
这该怎么处理呢?
针对完全没有接收的板子进行测试,可以烧录peripheral例程,查看蓝牙连接数据收发是否正常。
比如发50次就会有几次收不到,RF_2G4StatusCallBack函数都没被触发
如果不做握手/应答,2.4G RF是无法确保当前发出的包能成功被对方接收到的,最好是在应用层做超时/丢包重传机制。
常见的丢包原因:
①软件因素:MCU需要及时释放以接收RF包,如果代码中持续阻塞较长时间,可能导致连续发来的RF包收不到(如连续写大量flash;连续打印大量日志;中断服务函数中占用时间长;TMOS事件中运算逻辑时间开销大等等)。
②硬件因素:天线设计不良,影响发射功率/接收灵敏度。可以尝试在MCU的ANT引脚处,焊接同轴天线,做交叉对比测试。
外围电路设计不良,MCU底部的GND焊接不良;MCU的电源引脚,外置的退耦电容接地的焊盘,走PCB接到MCU底部GND焊盘的路径要足够短;32M晶振的频偏过大。可以用同一份代码+我司开发板,做交叉对比测试。
硬件设计参考博客:CH582M 原理图设计 - debugdabiaoge - 博客园
③环境因素:环境遮挡/金属频闭/同频干扰。检查接收端收包的信号强度,如果信号强度弱/有波动,会影响丢包率。可以尝试换个晴朗空旷的场地做交叉对比测试。