2301_77328815 2024-03-31 15:57 采纳率: 0%
浏览 49
已结题

sim800使用usb转ttl模块发送at结果一直返回OK

最近在学习GPRS拿到了一块如图所示的板子在使用usb转rs232时一切正常可以实现功能但如果使用usb转ttl发送OK会出不停返回OK以及乱码的问题只有再发一次at才会停止接受求大家帮忙看一下而且在这之后发送别的at指令也是没有作用的

img

img

  • 写回答

20条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-03-31 15:57
    关注
    获得0.45元问题酬金

    引自免费微信小程序:皆我百晓生

    您遇到的问题可能与USB转TTL模块与STM32连接后对AT指令的正确处理有关。从您描述的现象来看,当通过USB转TTL模块向SIM800模块发送AT命令时,模块似乎一直在返回OK,并且出现了乱码。

    针对这一情况,这里有几个潜在的原因及相应的解决步骤:

    1. 波特率设置不匹配:确保STM32与SIM800模块之间的波特率设置一致。对于SIM800模块,通常建议的初始波特率为9600bps。检查并配置STM32 UART端口的波特率参数。

      示例(STM32CubeMX配置):

      USART_InitStructure.USART_BaudRate = 9600;
      
    2. 流控制问题:检查是否启用了硬件流控制(如RTS/CTS),这可能会导致意外的数据传输。对于简单的AT指令通信,一般关闭硬件流控制即可。

    3. 数据位、停止位和校验位不匹配:SIM800模块通常采用8个数据位、1个停止位、无校验位的配置。确保STM32 UART与此相同。

      示例配置:

      USART_InitStructure.USART_WordLength = USART_WordLength_8b;
      USART_InitStructure.USART_StopBits = USART_StopBits_1;
      USART_InitStructure.USART_Parity = USART_Parity_No;
      
    4. 线序错误:确认USB转TTL模块的TX引脚连接到STM32的RX引脚,而模块的RX引脚连接到STM32的TX引脚。同时,确保地线(GND)已经正确连接。

    5. 回显开启:SIM800模块默认可能会开启回显模式,即每接收到一个字符就立即返回给发送者。可以通过发送ATE0指令关闭回显模式(响应OK表示成功)。

    6. 异常字符干扰:可能是由于某种原因产生了额外的无效字符触发了SIM800模块的响应。尝试在每次发送AT指令后加入适当的延时(例如,等待至少100ms),确保SIM800有足够的时间处理上一条指令。

      示例(在发送AT指令后添加延时):

      HAL_UART_Transmit(&huart SIM800_USART, (uint8_t*)"AT\r\n", strlen("AT\r\n"), 1000);
      HAL_Delay(100); // 添加延时
      
    7. 电源稳定性:确保SIM800模块的电源稳定,电压波动可能导致其工作异常。检查电源和稳压电路是否正常工作。

    8. 串口软件问题:您使用的SSCOM软件可能存在接收数据处理不当的情况,可以尝试更换其他串口调试工具进行测试。

    按照上述步骤逐一排查和调整配置,应该能解决您当前遇到的问题。如果有具体的代码片段或电路连接图,可以帮助进一步分析和提供针对性的解决方案。

    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 4月8日
  • 创建了问题 3月31日