8

我正在使用带有德州仪器 Launchpad的SIM800L 模块和 MSP430G2553 微控制器,而不是使用 SIM800L 的外部库。

问题陈述: 发送一条简单的短信(带文本模式的短信),在手机上作为空白短信接收。

SIM卡详细信息:

1. SIM 1:位置:印度。运营商:AirTel,兼容 4G 的 SIM 卡。
2. SIM 2:位置:印度。运营商:Tata Docomo,兼容 3G 的 SIM 卡。

我已经知道的:

  • 固件中的 UART 驱动程序经过测试和工作,非轮询,中断驱动。
  • 没有添加阻塞时间延迟来替代读取 AT 命令的响应。<CR><LF>OK<CR><LF>对于大多数命令,我阅读了响应并仅在收到肯定确认后继续。
  • 我已经通过示波器确认了在 Tx-Rx 引脚上发送和接收的数据位。一切似乎都符合预期,包括电压水平。

我读过的内容:

  • 通过非官方来源(当然是论坛)的一些猜测,SIM800L 仅兼容 2G。

  • (来自维基百科的浅读)我已通读GSM 3.38GSM 3.40以及数据编码方案部分,以了解如何在合适/相关的 AT 命令 (AT+CSMP) 中处理文本编码。

  • 各种论坛,包括非常普遍使用 SIM800L 模块的 arduino 论坛。

Stackoverflow 上的相关文章:

第一个答案似乎对他有用,但对我不起作用。

我尝试了什么:

  • 我已将相同的模块与 Docklight 串行终端的实例一起使用。我的手机收到了从 Docklight 发送的短信,并按预期显示,而不是空白。

  • 在第 0 天,在将模块与 Launchpad 硬件集成之前,我使用 SIM800L 的预期响应的精确副本测试了整个固件状态机。

  • 两张 SIM 卡的结果是相同的,除了一些初始配置,但我在启动任何 SMS 相关任务之前在它们中加载了一组典型的配置。

我使用的典型值是:

  • 回声关闭
  • CSMP:17、167、0、0(我试过17、167、0、0,但没有运气)。SIM 1 的默认值为 17,11,0,246,SIM 2 的默认值为 17,255,0,0。
  • CSCS:“爱尔兰共和军”

串口组合失败:(SIM 1 和 SIM 2)

  • CSMP:17、11、0、246 | CSCS:“IRA” - 发送空白短信
  • CSMP:17、11、0、246 | CSCS:“GSM” - 发送空白短信
  • CSMP:17、11、0、246 | CSCS:“HEX” - 发送空白短信

串口成功组合:(SIM 1 和 SIM 2)

  • CSMP: 17, 167, 0, 0 | CSCS:“爱尔兰共和军”
  • CSMP: 17, 167, 0, 8 | CSCS:“爱尔兰共和军”
  • CSMP: 17, 11, 0, 0 | CSCS:“GSM”
  • CSMP: 17, 167, 0, 0 | CSCS:“GSM”
  • CSMP: 17, 167, 0, 8 | CSCS:“GSM”

老实说,我研究哪些字段反映了这些组合的变化(SIM800L 用户指南中没有详细记录)之前,我对这些组合有预感。


知道我在这里可能缺少什么吗?我愿意认为这更像是一个 RTFM(阅读胖手册)问题。

4

1 回答 1

5

好的,设法解决了这个问题。

这根本与 SIM800L 无关。整个有效载荷后面跟着一个'\0'出乎意料的(我知道,我这方面很差)。连载术语对此没有任何问题。调试很有趣!

于 2017-12-05T05:58:52.853 回答