标题: sim900a对stm32的影响 [打印本页]

作者: CORSAK    时间: 2025-2-26 19:45
标题: sim900a对stm32的影响
sim900a在信号差的时候跟stm32通信会造成程序卡死的现象,请问这个是什么原因?

作者: hange_v    时间: 2025-2-26 21:11
程序卡死跟SIM900A没半毛钱关系,肯定是程序写的有问题
作者: cedtek    时间: 2025-2-27 03:02
以下内容由 DeepSeek R1 生成
SIM900A模块在信号差时导致STM32程序卡死的现象,通常与软件设计缺陷硬件交互问题相关。以下是可能的原因及解决方案:


一、软件层面的原因

二、硬件层面的原因

三、调试建议

示例代码改进(非阻塞式UART通信) // 使用状态机+超时机制处理AT指令
typedef enum {
     AT_STATE_IDLE,
     AT_STATE_SEND_CMD,
     AT_STATE_WAIT_RESPONSE,
     AT_STATE_ERROR
} AT_State;

AT_State at_state = AT_STATE_IDLE;
uint32_t at_timeout = 0;

void AT_SendCommand(const char *cmd) {
     UART_Send(cmd);  // 发送AT指令
     at_state = AT_STATE_WAIT_RESPONSE;
     at_timeout = HAL_GetTick() + 500;  // 设置500ms超时
}

void AT_Process() {
     if (at_state == AT_STATE_WAIT_RESPONSE) {
         if (HAL_GetTick() > at_timeout) {
             // 超时处理
             at_state = AT_STATE_ERROR;
             Handle_AT_Timeout();
         }
     }
}
通过以上优化,可显著提升STM32与SIM900A在恶劣信号环境下的通信可靠性。


作者: zhuls    时间: 2025-2-27 09:11
查查供电。
GPRS模块在搜信号时,最大电流可达2A。很可能把相同供电的其它设备拉到低电。
作者: wufa1986    时间: 2025-2-27 09:48
软件和硬件都有可能
1.软件没有超时机制,在死等结果
2.信号差的时候需要大电流,,电源设计不好可能会引起单片机异常,特别是SIM900这种老技术模块对电源要求特别高
作者: CORSAK    时间: 2025-2-28 08:32
hange_v 发表于 2025-2-26 21:11
程序卡死跟SIM900A没半毛钱关系,肯定是程序写的有问题

您好,它每次系统上电第一次会导致程序卡死,但是后面按键复位后程序能正常进行,短信就能发
作者: CORSAK    时间: 2025-2-28 08:43
zhuls 发表于 2025-2-27 09:11
查查供电。
GPRS模块在搜信号时,最大电流可达2A。很可能把相同供电的其它设备拉到低电。

您好,是sim900a一开始上电后,第一次发短信会造成程序卡死,但是将单片机复位后就会正常,想问一下是不是sim900a上电影响了单片机的电源,如果是应该怎么处理。
作者: CORSAK    时间: 2025-2-28 08:43
wufa1986 发表于 2025-2-27 09:48
软件和硬件都有可能
1.软件没有超时机制,在死等结果
2.信号差的时候需要大电流,,电源设计不好可能会引 ...

您好,是sim900a一开始上电后,第一次发短信会造成程序卡死,但是将单片机复位后就会正常,想问一下是不是sim900a上电影响了单片机的电源,如果是应该怎么处理。
作者: zhuls    时间: 2025-2-28 14:28
发表于 2025-2-28 08:43
您好,是sim900a一开始上电后,第一次发短信会造成程序卡死,但是将单片机复位后就会正常,想问一下是不 ...

你是上电后立马就发SMS的吗?
如果确定,该是SIM900的是电流程没有完整走完,你就开始发SMS,这时SIM900内部的时序没走完,还在初始化中。。。
作者: 烧不尽的野火    时间: 2025-3-6 09:28
如果你是裸机程序的话,和SIM900通讯过程有持续等待的情况,那么在SIM900信号差的时候可能会出现无应答情况,那么你的stm32程序就有可能卡死。
作者: qinlu123    时间: 2025-3-10 13:00
仿真啊,看看程序死在哪里




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1