硬汉嵌入式论坛

 找回密码
 立即注册
查看: 146|回复: 8
收起左侧

[ThreadX全家桶] 各位大佬, 使用 os + esp8266/esp32 + mcu + uart 接口通信模块,mcu uart 等待接收 esp 模块应答接收使用什么框架比较好?

[复制链接]

728

主题

3819

回帖

6028

积分

论坛元老

自定义头衔

积分
6028
发表于 3 天前 | 显示全部楼层 |阅读模式
本帖最后由 hpdell 于 2026-3-3 17:22 编辑




各位大佬, 使用 os + esp8266/esp32 + mcu + uart 接口通信模块,mcu uart 等待接收 esp 模块应答接收使用什么框架比较好?

目前测试发现 esp 模块 有些指令 返回应答数据的时间 长短不一, 而且有些指令返回的数据也不是 一下子全部输出的 , 这样的情况要怎么处理呀 ?

目前 mcu uart 接收是采用中断+接收超时的方法, 这个超时方法是自己增加的, 没有使用 dma

有些指令返回完整的应答数据差不多最长的需要 3s   












回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
121326
QQ
发表于 前天 00:14 | 显示全部楼层
软件定时器超时判断就行,比如使用了RTOS,,开启软件定时器组的单次计数。直接设置个最大超时时间即可
回复

使用道具 举报

728

主题

3819

回帖

6028

积分

论坛元老

自定义头衔

积分
6028
 楼主| 发表于 前天 19:27 | 显示全部楼层
eric2013 发表于 2026-3-4 00:14
软件定时器超时判断就行,比如使用了RTOS,,开启软件定时器组的单次计数。直接设置个最大超时时间即可

回复

使用道具 举报

22

主题

125

回帖

191

积分

初级会员

积分
191
发表于 前天 20:44 | 显示全部楼层
之前我搞过你说的 mcu 和 esp8266 通信不定长数据的问题。一个是使用上述的定时器方式解决(这也是我之前工程的解决办法)。第二个我发现 h7  MCU 的串口有一个超时中断,由于各种原因搁置了没有实现,记得之前看的这个中断在 HAL 库中被放到 uart_error 回调中处理(不确定),或许可以参考这个大佬的帖子
https://forum.anfulai.cn/forum.p ... C%CA%B1%D6%D0%B6%CF
回复

使用道具 举报

30

主题

433

回帖

523

积分

金牌会员

积分
523
发表于 前天 20:54 | 显示全部楼层
要是AT的话其实直接往环形缓冲区里面丢就行了,遇到\r和\n就替换成\0,当成字符串纯软件取出来就行了。不用担心效率问题,CPU计算比串口这种硬件通信快多了。
回复

使用道具 举报

728

主题

3819

回帖

6028

积分

论坛元老

自定义头衔

积分
6028
 楼主| 发表于 前天 21:44 | 显示全部楼层
刘心武 发表于 2026-3-4 20:44
之前我搞过你说的 mcu 和 esp8266 通信不定长数据的问题。一个是使用上述的定时器方式解决(这也是我之前工 ...

好的, 我去看看  
回复

使用道具 举报

728

主题

3819

回帖

6028

积分

论坛元老

自定义头衔

积分
6028
 楼主| 发表于 前天 21:45 | 显示全部楼层
tovinz 发表于 2026-3-4 20:54
要是AT的话其实直接往环形缓冲区里面丢就行了,遇到\r和\n就替换成\0,当成字符串纯软件取出来就行了。不用 ...

你说的也是一个办法,
回复

使用道具 举报

22

主题

125

回帖

191

积分

初级会员

积分
191
发表于 前天 22:03 | 显示全部楼层
tovinz 发表于 2026-3-4 20:54
要是AT的话其实直接往环形缓冲区里面丢就行了,遇到\r和\n就替换成\0,当成字符串纯软件取出来就行了。不用 ...

识别 AT 指令我认为是比较简单的,但是对从网络获取较长的信息,中间可能会触发空闲中断。那你什么时候去从缓冲区读取呢?周期轮询吗?
回复

使用道具 举报

30

主题

433

回帖

523

积分

金牌会员

积分
523
发表于 前天 22:22 | 显示全部楼层
本帖最后由 tovinz 于 2026-3-4 22:27 编辑
刘心武 发表于 2026-3-4 22:03
识别 AT 指令我认为是比较简单的,但是对从网络获取较长的信息,中间可能会触发空闲中断。那你什么时候去 ...

我感觉这已经变成一个数据流了,不管是DMA+空闲 还是 接收中断的方式,往环形缓冲区中推就行了,只是DMA+空闲触发的中断次数会大幅度减少。

中断往环形缓冲区中推数据的时候,通过计数信号量将数据写入事件传递给 拉取环形缓存区数据的线程,
同时这个等待这个计数信号量的线程要有一个超时,用防止环形缓冲区中遗留有数据的情况,也就是处理或者清除残留数据
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2026-3-6 22:11 , Processed in 2.065272 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表