最近在网上找了个项目来做,实现功能简单描述就是通过Lora模块E30-170T27D接收上位机发送的数据包,并对接收数据包进行正确性校验,若数据包校验成功则将其储存在W25Q125FV 中,待上位机发送数据包传输完毕指令后,单片机启动卫星模块铱星9523上传数据。
其他需求
1、未执行收发任务时,单片机进行持续计时,计时到一定时间后,系统进入休眠状态;PC机可通过Lora链路发送唤醒指令唤醒单片机,或发送休眠指令强制使单片机休眠。
2、从Lora模块在不工作时进入休眠状态。
Lora模块唤醒
准备工作
开发环境:IAR Embedded Workbench IDE for MSP430.7.10.1
开源软件库:FreeRTOSv202212.01, msp430_driverlib_2_9_12-01
下载工具:BSL编程器, MSP430F5xxx-BSL下载器
Lora模块初始化代码
卫星模块初始化代码
Flash存储模块初始化代码
Main函数
遇到过的问题
刚开始在淘宝上买的这种下载器,程序一直烧烧写不了。试过IAR5.3, IAR7.10 IAR8.12,CSS12.06, FET_Pro430,msp430Flasher,无论是四线JTAG或两线SW均无法下载,对比官方资料单片机的下载电路似乎也没问题,最终无奈放弃JTAG下载,然后在网上买了BSL下载器,刚开始BSL下载器也是一直下载不了,试了好几个上位机下载程序,终于在https://download.csdn.net/download/u012802717/8669775找到一个可以成功升级的了,MSP430F5系列MCU需要使用特殊的上位机下载。
2、单片机复位后无法进入到main函数。
单片机复位后程序执行,加到main函数开始位置的点亮LED不生效,对比了官网的复位电路似乎没问题,由于无法使用在线调试手段,各种在网上搜索原因,最后在某篇博客上看到说是单片机在在进入main函数前对BSS段做初始化时太久导致看门狗超时,根据博客建议在工程中加入如下代码解决。
3、Lora上无数据传输时AUX频繁触发下降沿中断
最开始怀疑是未对AUX做外部上拉,信号被干扰,在外部加了上拉电阻后问题依然未解决,对中断处理函数做了特殊处理,在每次触发中断后,延时一段时间后再对引脚做电平检测,若仍为低电平,认为中断有效。