最近用RT_thread调试EC20模块,用串口助手已经调通了,想放在板子(用的stm32H743阿波罗)上,用代码让他跑起来。
用的uart2连接EC20,用以发送和接收。uart2用的轮询发送和DMA接收,已测试过功能正常(用跳线帽直接接uart2 TX和RX两端,数据发送和接收正常)
出现以下现象,属实疑惑:
1.将uart2两端接EC20两端,发现测试指令“AT\n\r”,发现没有EC20的反馈信号;
2.将uart2 TX端接EC20,将EC20的输出端接板子CH340的输入端,然后通过串口助手直接打印出来,发现串口能得到“AT OK”的反馈指令。
既然有反馈信号那说明发送是成功的,只是反馈信号板子没收到,但uart2的功能又是正常的,求助大佬,帮我看看!!
在线程里发送“AT”指令
接收回调函数和接收线程
2.将uart2 TX端接EC20,将EC20的输出端接板子CH340的输入端,然后通过串口助手直接打印出来,发现串口能得到“AT OK”的反馈指令。
既然做到这一步了,有没有继续用串口调试助手伪装EC20,把 OK 转发回去?
或者干脆就用串口调试助手和你的板子之间测试过?
你用的哪个串口驱动框架版本? v1?v2?
rt-thread 驱动篇 之 serial v1 v2 和 X
多少英雄好汉,被一个串口驱动干趴下了
这个调不通,打算学一下那个软件包了..
@FrankLing
AT 组件的软件包挺好用的,我一直在用 EC200x 的软件包,和 EC20 的类似。关于 AT 组件源码的解析可以参考文章 https://club.rt-thread.org/ask/article/6c98fc0273c817a7.html
嗯嗯,好的谢谢啊,我研究研究
@FrankLing
挺好用的,使用 AT 组件就只需要关心应用层的逻辑代码了,直接使用 socket 进行编程,还有丰富的物联网软件包 mqtt、modbus 等可供使用。
用了AT组件好像还是出现这个接收不到的问题
我去代码看了下,发现还是发送AT没有收到OK导致初始化失败
所以还是得先解决第一个问题…
@FrankLing
原理图有没有,怎么连接的看一下
用杜邦线直接接到板子上的..
@FrankLing
直接用串口调试助手发送就可以?那你接线的图片拍一下吧
@FrankLing
另外你的 rt_config.h 什么样的?也放上来吧
串口调试助手是没问题的,接图如下
EC20的TX端接的UART的TX端(这里验证过,是该这样接的,应该是EC20的丝印有误)
配置如下
我这是基于开发板建立的工程
@FrankLing
嗯嗯 用芯片版本再搞搞看好了,谢谢
@FrankLing
嗯嗯,你用的是什么开发板?正点原子哪个型号的?
stm32h743
@FrankLing
直接使用基于芯片创建的工程可以成功入网吗?
还没尝试,我现在用串口一没问题了,串口二和三都不行,不知道啥问题..
@FrankLing
那你要看一下基于开发板创建的工程中串口2和串口3是配置成什么模式了,是不是有的配置成了485或者其他的模式。基于芯片创建工程就可以自己来控制每个引脚的功能,
配置成啥模式要去哪里看呀? 我看msp文件里几个串口引脚的配置都是相同的
@FrankLing
这个我就不知道基于开发板创建的工程在哪里看了,基本没怎么用过基于开发板创建的工程,也没怎么研究过基于开发板创建的工程。
哦哦,哈哈,我自己摸索摸索吧,对了你有空再帮我看下这个问题呗
@FrankLing
用
ps
指令看一下,你的栈空间设置的多大,是不是栈空间设置的太小了,导致栈溢出了。已解决,是自己创建的线程栈分配太小,感谢!
@FrankLing
没事没事