Fork me on GitHub

STM32低功耗+lora调试

STM32低功耗+lora调试

1. 使用符合《输变电设备物联网传感器数据规范》的lora

协议规定汇聚节点有两个信道(控制信道+业务信道)

控制信道默认为1,业务信道根据自己的实际情况可以进行设置,汇聚节点上电后首先将izji的业务信道进行设置,设置相关参数后需要使用命令进行lora的重启。

当GD20(传感器节点)申请组网时候汇聚会收到相关的通知命令。

2. 使用stm32单片机作为主控

使用stm32单片机作为主控时要注意使用到的lpuart串口的波特率是有限制的,具体换算公式要看手册。

问题1:使用lpuart与lora进行连接时选择LSI(32768)晶振时9600波特率理论上可以支持,但是实际使用时发现可能会数据发送不及时,应该选择高频率的串口时钟源

问题2:再进入stop模式之前不能有任何中断,否则会直接跳过休眠语句,继续执行。

问题3:使用函数HAL_RTCEx_SetWakeUpTimer_IT时候要注意WakeUpCounter不能超过65535,添更大的数也只会在65535时候唤醒,注意此处时休眠的时间对应的clock数,不是直接使用休眠时间。

问题4:使用lpuart串口接收进行唤醒时候要将时钟源选择手册中说的。这里选择HSI,此时在休眠之前要使用函数__HAL_RCC_WAKEUPSTOP_CLK_CONFIG(RCC_STOP_WAKEUPCLOCK_HSI)设置唤醒后使用HSI作为主clock,否则串口在中断唤醒后收到的数是乱码的或者不全的。

问题5:还可以使用将串口的rx脚设置为IO中断后进入stop模式,这样当有数据时候也会将单片机唤醒(没尝试成功)

问题6:在使用串口接收中断进行stop模式唤醒时候睡眠之前对应的串口不能去使能。

问题7:要注意单片机可能进入休眠,但是lora不会,所以在lora在控制周期接收到数据时候它不会去管单片机在什么状态,所以这个时候可能会造成控制周期的数据丢失。最好的解决办法是使用串口接收中断进行唤醒。串口接收中断和RTC定时唤醒可以同时作为单片机的唤醒源。

问题8:使用SWD烧写时候最好连接上RST脚这样在stop模式也能进行烧写。

posted @ 2022-08-09 14:27  一地鸡毛-  阅读(641)  评论(0编辑  收藏  举报