如题所示,最近在做一个无线发射的实验,无线发射板与接收板都用的A7139作为发射接收芯片,发射板与接收板都采用STM8L+A7139的形式。
然后发射板采集18B20温度与电池电压然后通过A7139发送到接收板,接收板通过串口输出接收到的数据。
然后我设计了第一次实验:
1:1块发射板采集18B20温度与电池电压然后通过A7139发送到1块接收板,接受显示正常。
然后我设计了第二次实验:
2:10块发射板采集18B20温度与电池电压然后通过A7139发送到1块接收板,发射板采集发射时间间隔为5分钟,在此期间休眠,保持低功耗状态。
实验现象:
1小时内:接收板收到所有的
电路板数据,没有出现数据丢失现象。
1小时后:接收板出现数据丢失现象,查看数据后发现,例如在接受到7号数据时,如果同时4号数据也发送过来,此时7号与4号相互覆盖,出现数据丢失情况。
经过仔细排查,发现原因如下:
发射板STM8L在无数据发送,等待定时五分钟到来时,此时因为所有定时器都关闭,仅有RTC可以唤醒STM8L,RTC唤醒时间不精确,造成5分钟上下波动,传输数据会与其它的无线数据相互覆盖。
仔细思考后,改进方法如下:
1:不使用低功耗模式,使用定时器定时,时间精确,但是耗电,而且在使用中,如果断开某一个发射板,再通电,就有可能造成数据相互覆盖,丢失数据。
2:发送数据时,先询问接收板是否有空,有空发送数据,此时其它发射板保持静默。没有空就等待接收板有空再发送。这种方法有效的保证了数据一定能被接受到,但是消耗电最低翻倍,不可取。
3:使用RTC功能,设置时间日期,定时1号在1分1秒发送数据,2号定时1分3秒发送数据,以此类推,但是这样STM8L就无法进入低功耗,耗电量上升。
请问大家有什么其它的解决方法,能兼顾低功耗的设计方案吗?基于目前STM8L+A7139的形式
0