当前位置: 首页 > news >正文

【单片机】串口的环形队列通信

全双工通信模型,用环,无需状态机:

补充:上图中“可以在中断也可以在收到消息后”,这个“中断”指的是上面的空闲或者满,不是接收非空中断。

DMA循环模式的半满和满中断发生时,DMA会继续运行的。

正常模式的半满中断发生时,DMA继续运行,满中断发生时则停止,需要重新启动。

如果发生错误中断,则停止。使用DMA则适用此模型。

半双工通信模型,用状态机,无需环:

补充:发送的时候开发送关接收,空闲和接收的时候开接收关发送。接收完成时保持不变,也可以发送接收都关,但是没必要关。半双工要么发要么收,在中间加一个都关比较奇怪。同时关了就要开,增加不必要的操作。

半双工不使用环,是因为有状态机的切换,在“COM_RECVED”的状态下无法接收新数据,环没有意义。如果你改造代码,在“COM_RECVED”的状态下能接收数据,不如直接使用全双工通信模型。(全双工模型可以兼容485接口通信)

环的操作主要处理断帧问题,同时这个断帧无法用超时解决,这种情况下就只能用全双工模型,如果能用超时解决断帧问题,则可以考虑使用半双工

连包问题的解决在于解析,无所谓半双工全双工。

以上都是通信链路层模型,开发时最好链路层和协议层解耦,物理层就是底层的串口或者SPI。

批量解析和流式解析:

批量解析和流式解析一般都是中断收数据,主流程判断报文是否完整,区别在于批量解析没有状态机,每次判断都把所有字节拿出来判断,流式解析有一个状态机,每次判断都会记录下当前状态,下次只取新数据判断。半双工模型只适用批量解析,全双工模型可用流式解析和批量解析,全双工下一般会有个较长的重置时间(1s),超过1s没有新数据,重置接收缓存和解析状态。

http://www.jsqmd.com/news/509442/

相关文章:

  • CVPR2023论文解读:DER、pDER和Exploit三种方法在类增量学习中的实战对比
  • 跨平台存档迁移与GUID修复:Palworld存档修复工具完全指南
  • Java中的基本类型默认值是什么
  • 终端用户指南:非技术人员如何使用OpenClaw+Qwen3-32B
  • Phi-3-mini-128k-instruct智能运维助手:Linux命令分析与故障排查实战
  • 通义千问3-VL-Reranker-8B环境配置:HF_HOME缓存路径迁移与磁盘空间优化技巧
  • 图文翻译新体验:TranslateGemma在Ollama中的快速部署与实战演示
  • 多核编程避坑指南:为什么你的自旋锁在ARM架构上性能暴跌?
  • 嵌入式Linux C语言HTTP+JSON天气客户端实现
  • Windsurf System Installer 哪里下?
  • Java 跑腿高并发优化:订单派发与配送管理方案
  • cesium源码学习-02packages/engine/Source 目录与文件说明
  • Unity UI Toolkit实战:5分钟搞定一个可交互计数器(含完整C#代码)
  • FUTURE POLICE语音解构效果展示:多语种与方言识别精度实测
  • Phi-3 Forest Laboratory 计算机组成原理学习:CPU流水线冒险模拟与讲解
  • OpenClaw知识库构建:GLM-4.7-Flash自动化整理技术文档
  • 如何在Java中使用HikariCP连接池
  • 佳维视工业触摸一体机在全自动咖啡机中的应用
  • 随心听书 2.0.5 | 电子书听书神器,内置微软语音,堪比真人
  • 生产管理其实不复杂:盯住排产、设备、计划这八张表就够了
  • 不懂逆向工程怎么做安全?一文讲透恶意软件分析、漏洞挖掘与攻防对抗
  • 三步掌握DivinityModManager核心功能:高效管理神界原罪2模组的进阶技巧
  • Atelier of Light and Shadow辅助C语言开发:代码生成与优化指南
  • Pixel Dimension Fissioner多场景落地:医疗科普内容可读性增强方案
  • 保姆级教程:用Gmapping为你的阿克曼仿真小车在Gazebo里建一张高清地图
  • 终极图片去重指南:如何用AntiDupl.NET快速清理重复图片,释放存储空间
  • 湖州岗亭选购深度评测:湖州岗亭、移动卫生间、移动厕所、移动垃圾分类房、绍兴岗亭、衢州岗亭、金华岗亭、‌丽水岗亭选择指南 - 优质品牌商家
  • UE4插件开发避坑指南:VaRest和VictoryBPLibrary读写本地文件的那些坑
  • Pixel Dimension Fissioner企业应用:合同条款的‘法律效力保留型’改写与风险提示注入
  • EmbeddingGemma-300m实战:快速搭建本地文本检索与分类系统