1. 场景分析,主要问题就是有些操作返回+CIS ERROR: 50
2. 看了一下在AT+MIPLOBSERVERSP这个指令里面是没有返回+CIS ERROR: 50的错误类型的,所以应该是在解析这个AT指令之前出现的,那么为啥会出现,猜测一,模块进入睡眠,唤醒之后第一个串口字符丢失,但是用自己的板子测试,这个概率并不高,客户测试几乎100%出现,猜测二,就是外部MCU进入睡眠之后改变RX的电平,所以接收数据多了一个上升沿或者下降沿,还有就是AT+MIPLNOTIFY的时候出现的,暂时没发现下面的指令有什么区别。
3. 在app_at.h里面出现50错误的有三种情况,我觉的有必要进一步区分这三种情况,所以进行了修改,其中有一个问题需要注意,如果没有这个AT指令的话,那么回复的就是50错误,我猜测下面AT_RET_NOT_NUMERIC的意思就是找不到AT指令,不过好像是不是数字的意思。下面第3个是语法错误
{AT_RET_NOT_NUMERIC, 50}, //Incorrect parameters {AT_RET_PARAM_MISSING, 52}, //Incorrect parameters {AT_RET_SYNTAX_ERROR, 53}, //Incorrect parameters
修改完之后测试一下,首先是非数字看是否能测试到,首先是字符问题
[18:43:44.372]发→◇AT+CGSN=1 □ [18:43:44.386]收←◆ +CGSN:865353030039314 OK [18:43:48.004]发→◇AT+CGSN=A □ [18:43:48.016]收←◆ [18:43:48.068]收←◆ +CIS ERROR: 53
然后是
[18:44:58.380]发→◇AT+CGS2N=1 □ [18:44:58.393]收←◆ +CIS ERROR: 53
继续测试,所以目前猜测,之前的错误很有可能就是这个53,语法错误
[18:49:33.091]发→◇AT+MIPLOP □ [18:49:33.103]收←◆ +CIS ERROR: 53 [18:49:36.709]发→◇AT+MIPLOP1EN=0,300 □ [18:49:36.730]收←◆ +CIS ERROR: 53
3. 目前唯一新添加的就是低功耗,难道和低功耗有关?会不会是上一次的指令没执行完,低功耗之后继续执行,然后此时又来了一条AT指令?正成的测试,发现注册会失败,只能到连接成功,都是注册成功的一直没下发下来。难道是保存参数的数组不够11个?现在很有可能是AT指令没查找到,估计那个字符出错了,验证一下NOTIFY还没完成的时候,继续下一条NOTIFY。接下来使用SecureCRT软件,测试更高的波特率,看是回复什么?之前用STM32的时候用内部晶振,9600波特率是有问题的。不过波特率有偏差的话,那么为啥只有第5条NOTIFY才有问题?所以当时屏蔽了这个想法.
4. 有可能存在一种情况,在进入PSM之后,波特率的容限率低了很多。等待进入PSM模式,PSM模式,串口应该也是休眠状态,目前猜测53应该就是之前的50。据说,STM32使用内部LSI时钟作为串口9600波特率时钟源,那么在温度高和低的时候,波特率差别很大,目前猜测是这个问题,但是好好的温度怎么上升了?难道芯片运行一段时间之后,消耗电量温度上升?
原文地址:https://www.cnblogs.com/429512065qhq/p/8893676.html