平台:正点原子STM32F767IGT6,阿波罗
调试外设:ESP8266 WIFI模块,安信可科技
首先先讲一下我遇到的问题,然后后面阐述我尝试过的解决方案,问题就是单片机使用串口发送给模块AT指令的时候,并不会返回正确的信息,而基本是ERROR等信息,但是PC端测试过该
模块是可以正常使用的,单片机的串口也能够正常工作。
使用的ESP8266模块可以使用单独的TTL-USB转串口,在PC端使用sscom串口调试工具进行发送AT指令对该模块进行配置,模块中的固件为出厂默认的固件,也就是支持AT指令配置的固
件,使用PC串口调试工具进行测试时可以正常通讯并进行配置,实验结果如图1。
用AT指令测试模块可以正常工作。
之后是该模块需要放在单片机上,在单片机中我使用stm32f767的串口3,对于单片机的串口3的配置不多说,简单就是波特率一定要配置成115200,8位数据位以及1位停止位,接下来展示
一下使用PC串口调试工具与单片机串口进行通讯的实验结果,接收和发送均可以正常进行,实验结果如下。图2为单片机发送消息到PC,图3为PC发送一个消息到单片机。
上述的两个实验的用意就是说明WIFI模块本身没出问题,而单片机的串口配置等也没有问题可以正常发送接收指令。
接下来把模块的接地与3.3V供电和RX、TX这些外设需要的线接在开发板上,连接完之后,模块在每次上电的时候一般都会发送一些外设信息,我这边模块一般重新上电之后会发送过来一
个WIFI DISCONNECTED信息,也就是说模块上电之后是有在正常工作的,并且单片机接受数据也没有出问题,然后根据一般的对外设的配置,我先发送了一个简单的指令AT用来测试能不能
返回OK,发送的代码截图如图4,使用memcpy函数把字符串拷贝到数组里,然后一个字符一个字符地发送,在网上很多帖子也说到需要在每条指令末尾加上\r\n,也就是回车换行符,但是加
上之后发送过去模块毫无反应,而唯一模块有反应的指令就是下面的代码展示的这样。
之后我们看下返回的完整数据,由于这个模块返回数据的格式是先返回我们发送过去的指令然后跟上换行回车,之后才是模块的回应信息,我用STLINK调试,我们看下内存中的数据,截图如
图5。
正如图片所显示的那样,返回的应答信息是ERROR,对于AT这条指令并没有回应OK。 我目前对问题的初步定位是在发送数据这边,问题可能会出在发送端这边因为模块需要解析某些特定的格式或者发送的数据有误之类的问题,已经尝试过一些了,还是找不出问题所在,有调
试过ESP8266模块的大神或者能够知道某些原因的大神欢迎留言。
|