串口数据帧同步

介绍

串口是十分常用的一个资源, 每次需要进行处理串口数据, 但是 PC 上的串口存在缓冲区机制, 导致串口跟我们在单片机中的使用方式可能有所不同,
每次拿到缓冲区数据之后,判断是否满足帧头,进而开始新的一帧数据计数存储, 最终满足一帧数据之后 将数据发送出来.

原理

我们使用自定义的存储结果 作为自己的存储结果, 一般来说在项目中使用就是帧数据长度是一致的, 我们的程序也是基于这个原理的

class SerialData
{
   
    public:
    uchar *data_;   ///< 帧数据
    uchar *head_;   ///< 帧头数据
    int dat_len_;   ///< 数据帧长度
}

我们需要根据自己的协议初始化数据长度和数据帧头内容 假设我们的数据为 14 个字节 包括 一般使用串口通信的数据都是按照这种格式进行的数据发送,

[帧头] [长度] [地址] [指令] [数据] [校验]
00 01 02 03 04 05 06 07 08 09 10 11 12 13
68 0D 00 84 00 04 09 11 79 45 00 81 13 01

frame_len = 14;
data_ = new uchar[frame_len];               ///< 存储数据
head_ = new uchar[4]{
    0x68,0x0D,0x00,0x84 }; ///< 旧版协议头

实际上我们确定通信协议之后,PC不存在命令之类的解析的话,可以把前面四个字节处理帧头,
每次接收到帧头四个字节的时候表示数据已经重新开始了一帧,将收集到的数据存储相应的流程即可,继续处理后续数据

  1. 如果数据正常, 读取到帧头数据之后,假设帧头数据一致, 数据依次往后填充数据,等到数组填满,会再次获取到帧头数据
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MSP4305529是德州仪器(Texas Instruments)推出的一款低功耗微控制器,它使用16位的MSP430架构。关于数据帧格式,MSP4305529可以使用不同的通信协议,如UART、SPI和I2C。下面我会介绍一下这些通信协议的数据帧格式。 1. UART(串口):UART是一种异步通信协议,数据以字节的形式通过单个数据线传输。UART的数据帧格式一般包括起始位(Start Bit)、数据位(Data Bits)、校验位(Parity Bit)和停止位(Stop Bit)。数据位通常为8位,校验位可以选择奇偶校验或无校验,停止位通常为1或2位。 2. SPI(串行外设接口):SPI是一种同步的串行通信协议,使用4条线进行通信,包括一个主设备和一个或多个从设备。SPI没有固定的数据帧格式,而是通过时钟信号进行同步。主设备通过时钟信号将数据位一个一个地发送给从设备,并同时接收从设备返回的数据。 3. I2C(两线制串行接口):I2C是一种同步的串行通信协议,使用两条线进行通信,包括一个主设备和一个或多个从设备。I2C的数据帧格式包括起始位、地址字节、数据字节和停止位。主设备发送起始位后,通过地址字节指定通信的从设备,然后发送数据字节进行通信。 需要注意的是,具体的数据帧格式可能会根据具体的应用和配置有所不同,上述介绍仅为通用格式。在使用MSP4305529时,您可以根据具体的通信需求和所选的通信协议,参考相关的技术手册和文档来配置和使用正确的数据帧格式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值