rf95_server运行约7-8次LoRa接收后树莓派3B+死机问题求助
可能的故障原因
- 代码语法错误:你贴的代码中
define BOARD_DRAGINO_PIHAT缺少前缀#,导致对应扩展板的引脚宏定义未生效,SPI_CS、IRQ、RST引脚配置错误,反复访问错误的GPIO寄存器或SPI设备会触发系统总线锁死,直接导致死机。 - 未定义函数调用:接收失败分支中调用了Arduino平台专属的
Serial.print()函数,树莓派本地无对应实现,会触发内存访问异常,多次触发后会导致系统崩溃。 - 供电不足:树莓派3B+本身需要最低5V/2.5A的供电规格,叠加LoRa模块接收/发送时的峰值功耗,若使用的电源适配器功率不足,多次通信后电压跌落超过阈值会触发系统断电死机。
- bcm2835库冲突:该库直接操作硬件寄存器,若系统内核同时加载了GPIO、SPI相关的驱动模块,重复操作同一寄存器会触发内核panic导致死机,可先卸载对应内核驱动再运行程序测试。
- 中断配置错误:代码中将IRQ引脚配置为下拉输入,若Dragino扩展板的LoRa模块IRQ引脚默认电平为高,会反复触发上升沿中断,CPU占用率跑满后触发系统死锁,可根据硬件手册调整IRQ引脚的上下拉配置。
- 内存越界风险:若收到的LoRa报文长度超过处理上限,
printbuffer函数无边界检查的情况下会发生内存读越界,触发段错误后拉垮系统。
内容的提问来源于stack exchange,提问作者Christian Eugster
相关产品推荐
相关产品推荐

