串口通信(7)判断数据帧头来接收一串数据

串口接收完整一帧数据包的3种方法 本文介绍3种使用串口接受一帧完整数据包的方法,串口接收数据是字节接收的,串口每接收1字节数据,产生一个串口中断,我们在中断中将接收到的数据存放到buf中进行保存,但是数据的发送和接收都是按照帧为单位进行传输的,因此我们要在接收数据的同时判断当前接收的数据是否是完整的一帧。 一般串口完整数据帧的定义:帧头(2字节,例如AA、BB) + 数据长度(2字节) + 数据+ CRC16校验(2字节) + 帧尾(2字节) 帧头、帧尾表示一帧数据的开始和结尾,数据长度表示当前数据帧中负载数据大小,CRC16校... 阅读详情
AI摘要

本文详细介绍了单片机串口通信中的码元、波特率概念,以及如何设计系统实现数据帧结构,包括起始位、停止位和帧头。还涉及硬件设计中的LED电路和软件设计中的定时器、中断处理。通过实例演示了如何发送字符串和控制LED灯响应数据帧内容。

 本文为博主 日月同辉,与我共生,csdn原创首发。希望看完后能对你有所帮助,不足之处请指正!一起交流学习,共同进步!

> 发布人:@日月同辉,与我共生_单片机-优快云博客

> 欢迎你为独创博主日月同辉,与我共生点赞❤❤❤+关注👍+收藏🌹+评论☺。

系列专栏: 优快云-单片机串口通信学习系列🎁

> 我的格言是:“尽最大努力,做最好的自己!💪

要转载,请提前告知!!!

版权声明:本文为优快云博主「日月同辉,与我共生」的原创文章,优快云独一份。

目录

一、码元、波特率

1.1码元

1.2波特率

二、数据帧

2.1起始位

2.2停止位

2.3数据-帧头

三、系统设计

3.1设计要求

3.2系统原理

3.3硬件设计

3.3.1串口设计

3.3.2LED电路

3.4软件设计

3.4.1发送数据

3.4.2串口初始化

3.4.3接收中断

3.4.4定时器初始化

3.4.5定时器中断模块

3.4.6处接收数据理模块

四、结果

4.1发送两个字符串

4.2LED灯亮

4.3LED灯灭

一、码元、波特率

1.1码元

用相同时间间隔的符号来表示一个二进制数,一般来说,码元≠比特(1个二进制数相当于1个比特,用1bit表示),例如,有4种状态(0、1、2、3),分别用二进制数表示,即为00、01、10、11,因此1码元=2比特,特殊地,如果是2种状态(0、1),可以用0、1两个二进制数分别表示两种状态,此时1码元=1比特。在串口通信中,每次发送数据都是一个一个地发送,因此串口通信码元=比特。

1.2波特率

单位时间内发送的码元数,称为波特率,单位为b/s。

我们常用9600b/s,每发送1比特需要的时间为1s/9600=104us

二、数据帧

2.1起始位

1位,表示一次通信的开始,给接收器时钟一个同步,告知接收端开始接收数据。

2.2停止位

1位,一次通信的结束。

2.3数据-帧头

串口通信帧头(也称为帧起始标志)是用来标识一个串口通信帧的开始位置的特殊字符。它的作用是让接收端能够正确地识别数据帧的开始位置,以便接收端能够正确地解析整个数据帧。帧头通常是一个固定的特定字符或字符组合。

三、系统设计

3.1设计要求

本

工程思想——关于串口通讯协议帧数据的一些想法 前言:之前在学校上计算机网络这门课程时候,被里面的各种协议绕的头晕眼花,总以为这些协议都已经被前辈固定,后生们只要按照之前的协议老老实实收发数据就能解决一切,直到自己也有做东西时要自己编写通讯协议时,遇到了一大堆问题,也踩了不少坑,在这里写下来一些自己的思考。 ... 阅读详情

相关推荐

uart——串口数据帧处理

在串口上,我们经常要对传过来的数据进行处理与解析。最经典的就是处理数据帧,数据帧是什么呢?数据帧在我看来就是一连串的数据单元。数据帧定义了一些基本的协议。例如,数据帧一般会定义出帧头、帧尾、校验位、数据位、数据长度、命令字节(CMD)命令。串口是进行处理串口数据帧的方式:一般我们通过对数据帧的处理判断接受到的数据是否符合协议上的要求,解析到数据帧的格式符合要求则执行我们要执行的操作,否则丢弃这一帧的数据包,等待下一次的数据传输过来。

weixin_51914919的博客 4300

串口通信(8)串口中断“边接收边解析数据“的通信程序

串口通信+边接收边解析数据原理+判断数据正确性+发送数据+处理LED和蜂鸣器+免费代码解释

LIN___IT的博客 2091

S32K144 UART通信实战:从硬件配置到应用层协议设计

通用异步收发器(UART)作为一种基础且广泛应用的串行通信接口,其核心原理是通过约定的波特率、数据位、停止位和校验位,在单条数据线上实现设备间的全双工异步数据传输。在嵌入式系统开发中,UART是连接微控制器与上位机、传感器或其他外设的关键桥梁,其稳定性和效率直接影响系统整体性能。通过合理配置时钟树、选择中断或DMA传输模式,并结合环形缓冲区等软件设计,可以构建高效可靠的数据链路。在汽车电子和工业控制等场景下,UART通信常需应对复杂电磁环境与实时性要求,因此,从硬件引脚复用、电平匹配到软件层面的数据帧设计与

weixin_30321449的博客 331

C#串口通讯助手:VS直接运行、轻量稳定、协议可定制

串口通信是嵌入式开发、工业控制和设备联调的基础技术,其核心在于可靠的数据收发、精准的帧解析与灵活的协议适配。基于System.IO.Ports原生封装的C#串口助手,规避了第三方库兼容性风险,通过线程安全队列、自动重连、粘包处理等机制保障高稳定性;支持十六进制交互、自定义校验(XOR/CRC16)、头尾帧识别等关键能力,显著降低PLC、温控仪、传感器等设备的调试门槛。适用于Windows 7+工控环境,无需额外运行时,开箱即用,亦可快速二次开发适配私有协议。

weixin_33508411的博客 246

串口帧头帧尾判断.vi

数据帧格式为:帧头1、帧头2、数据1高、数据1低、数据2高、数据2低、数据3高、数据3低、数据4高、数据4低、帧尾1、帧尾2数据接收类似于堆栈的入栈操作,最新收到的数据始终在数组的第0个元素中,当收到一帧数据后,数据排列是反过来的。程序每次只读取一个数据,当判断接收数据为帧头时才开始一帧数据的接收,当判断到帧尾后,结束一帧数据的接收,并进行数据处理,处理完成后,进行下一帧数据的接收。

SpringBoot+Vue前后端分离项目实战:个人博客系统

MyBlog主要是基于 SpringBoot + Vue 前后端分离开发的一款动态个人博客系统,后台和前台均通过JSON数据做交互,主要功能有文章管理、分类管理、标签管理、附件管理、评论管理、友链管理、个人资料/博客信息管理等。

Myles'Blog 1万+

NC数据预处理避坑指南:从MATLAB读取到GeoTIFF导出,解决坐标翻转与值域异常

本文详细解析了NC数据预处理中的常见问题,包括MATLAB读取时的坐标翻转与GeoTIFF导出时的值域异常。通过实战案例,介绍了如何解决矩阵方向错乱、处理FillValue与scale_factor、精准移植空间参考等关键问题,帮助研究者高效完成气象数据的批量处理与GIS兼容性验证。

weixin_30788619的博客 654

vue3+ts项目里如何使用状态管理pinia以及数据持久化

vue3 pinia 数据持久化

ICUiseeyou的博客 8794

高通ISP模块全解析:从Raw到JPEG的18个关键处理步骤(附避坑指南)

本文全面解析高通ISP模块从Raw到JPEG的18个关键处理步骤,涵盖原始数据预处理、色彩科学处理链、画质增强与降噪等核心环节。通过实战调优经验,揭示ISP架构中的技术原理与工程实践要点,帮助开发者避免常见问题,提升移动影像处理质量。

weixin_30399155的博客 359

单机多环境部署apollo 2.3.0

理解apollo的整体架构后,对比nacos配置中心功能点,其设计的复杂度以及完整度相较nacos而言更为丰富 对于不同的环境,例如 FAT, PRO 在部署时进程已经完全物理隔离,并且每个环境config/adminservice依赖的数据也完全物理隔离(连接不同的db),在数据隔离与安全方面做的很完善,但同时也提升了架构的复杂度 而 portal 可以管理多个环境,单节点部署虽然有单点问题,但并不会影响业务从configservice读取配置, 挂掉只要重启就可以,只是在

Life is a starting point everywhere 1299

微信服务号配置总是提示“参数错误”?我就是这样一步步查出问题的

前两天,我遇到了一个很诡异的问题:在微信服务号后台配置服务器地址时,总是提示“参数错误,请重新填写”。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1277

8.5华为OD机试真题 新系统 - IPv4 等长子网划分与自动分配系统 (Java/Py/C/C++/Js/Go)

8.5华为OD机试真题 新系统 - IPv4 等长子网划分与自动分配系统 (Java/Py/C/C++/Js/Go)

算法大师! 526

SSE(Server-Sent Events)完整使用示例

本篇使用Node.js 作为服务端,在浏览器客户端演示SSE的完整实例和演示。实现了一个基于 Server-Sent Events (SSE) 的实时数据推送功能。

oscar999的专栏 750

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

上一篇: 串口通信(6)应用定时器中断+串口中断实现接收一串数据
下一篇: 串口通信(8)串口中断“边接收边解析数据“的通信程序
@日月同辉,与我共生
博客等级 码龄4年 3247粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值