打印
[STM8]

STM8与SIM900A串口通信问题

[复制链接]
871|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Erichk|  楼主 | 2017-7-31 15:58 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
在做SIM900A与stm8的串口通讯,UATR3与电脑连接,UART1与SIM900连接,用串口调试软件发AT指令,SIM900的返回信息再由UART3返回电脑,在调试时发现,程序中的其他AT指令都可以返回OK值,可是AT+CPBR(查找电话簿)返回值却是ERROR,用串口调试软件直接发AT指令能得到OK值,请教是什么原因。

      u8 Read_Adr[10]="AT+CPBR=1\r";// 读电话簿
      UART1_SendString(Read_Adr, 10);

              Delay(100000);

               UART3_SendByte(uart_p);

//          u8 Msg1[10] = SMSCMGF;

       u8 Msg1[10] = "AT+CMGF=1\r";//选择短信格式 此指令能返回OK

//        u8 Msg1[10] = "AT+CPBR=1\r";//如果把上一行的指令替换为此指令,则返回ERROR

        UART1_SendString(Msg1, 10);

        Delay(100000);

        UART3_SendString("normal1\n",8);


以下为调试程序显示,红色部分为程序运行,蓝色部分为由调试软件直接发AT指令

001207.jpg (43.86 KB )

001207.jpg
沙发
文刀飘红| | 2017-7-31 16:12 | 只看该作者
本帖最后由 文刀飘红 于 2017-7-31 16:15 编辑

是不是程序里的延时时间不够?你用串口调试软件直接发查找电话簿时,看一下发完AT命令后多长时间有回复?或者加断点调试

使用特权

评论回复
板凳
Thorald| | 2017-7-31 16:23 | 只看该作者
看看指令文档,不同模块之间有的指令是有区别的

使用特权

评论回复
地板
Bjorn| | 2017-7-31 16:36 | 只看该作者
认真对比,一定是有区别的,有没有字母弄错,或者少了什么?

使用特权

评论回复
5
Rollo| | 2017-7-31 16:46 | 只看该作者
数组的定义长度正确吗?

使用特权

评论回复
6
Rangar| | 2017-7-31 17:02 | 只看该作者
这里一般不这样定义:
u8 Msg1[10] = "AT+CMGF=1\r";//选择短信格式 此指令能返回OK
而是
u8 Msg1[] = "AT+CMGF=1\r";//选择短信格式 此指令能返回OK

使用特权

评论回复
7
Stannis| | 2017-7-31 17:13 | 只看该作者
刚刚接触SIM900,关于调试助手,我不知道怎么使用,,,,,还有,那个多条字符串定义窗口里的东西,都要写吗?不定义的话不能接收到SIM900 的响应吗???

使用特权

评论回复
8
mmuuss586| | 2017-7-31 17:30 | 只看该作者
程序都一样的,有些AT指令不行无非就是延时不够吧

使用特权

评论回复
9
zhuomuniao110| | 2017-7-31 17:41 | 只看该作者
指令有没有错

使用特权

评论回复
10
zhuomuniao110| | 2017-7-31 17:41 | 只看该作者
是不是多了空格之类的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

99

主题

500

帖子

0

粉丝