|
背景
客户用我司BLE模块前期调试时,有时会出现指令模式下,MCU给模块发指令,规定时间内收不到模块正确返回值的异常现象,此时该以什么思路来排查原因?
描述
1、检查串口通信是否正常。
●检查MCU和模块的串口参数设置,是否一样?
●检查自己发送的指令,是否符合使用说明书上面的协议帧结构?(指令中,>=2字节的独立数据单元,必须以小端顺序发送)。
●串口线空闲状态下,用万用表测量TX、RX线的电压是多少?正常是高电平3.3V。
●如果是USB转串口工具连到PC,给模块发指令,那么可以尝试换1个新的串口工具换、 换1个新的电脑USB口。
2、检查模块的3个控制引脚是否接对了?
MODE_CTL引脚需接地(进入指令模式),BT_CTL引脚需接地(开启蓝牙),PWR_CTL引脚需接地(进入唤醒模式)。
3、检查模块是否异常了?
●用万用表测量模组VCC、RST和GND引脚间电压,是高电平3.3V吗?
●拉低RST引脚,来复位模块,看串口是否会恢复正常?
●测量模块的各个指示引脚电平,此时代表的状态是不是正常的?包括数据拥塞指示引脚BUSY_IND、连接状态指示引脚CONN_IND、串口数据指示引脚DOUT_IND、休眠指示引脚PWR_IND。
●尝试给模块OTA升级1个最新版本固件,再断电,重新试试。
●换1个新模块。
4、检查MCU端是否处理有误?
●MCU发数据前,是否有检测模块BUSY_IND引脚为高电平,即模块处于空闲状态?
●MCU串口初始化是否正常?
●用示波器或逻辑分析仪,抓一下MCU的TX、RX脚电平,看能否解析出正确的指令字节?
结论
客户遇到模块不回串口指令这类问题时,可依照以上思路,先自行排查一遍,一般都能找到原因。 |
|