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 @   一地鸡毛-  阅读(784)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示