CAN通讯程序C语言,嵌入式C语言环境下的CAN总线通讯协议

本文详细介绍了在嵌入式C语言环境下如何实现CAN总线通讯协议,包括结构体定义、矩阵处理、共同体的应用以及初始化和发送接收过程。通过对报文ID、数据场的解析与偏移,展示了在不同矩阵情况下的处理方法,强调了共同体在通讯协议中的重要性。
摘要由CSDN通过智能技术生成

培训、咨询、项目开发,请与【思想】联系

1.结构体

通过前面文章《》的介绍,对于CAN通讯协议有三个非常重要的信息,分别是报文ID、数据场、解析与偏移。实现通讯协议的第一步就是定义一个报文的结构体。

5b7eaa17862423ea563aa4c37ce959a5.png

⚪ 定义报文ID

本次使用的例子是基于扩展ID,ID长度为29个位。由于C语言没有29位长度的数据类型所以使用32位数据类型UINT32。如果是标准ID使用16位数据类型UINT16即可。

小提示:数据类型

标准的C语言是没有UINT32、UINT16等这样的变量,这都是根据选用芯片的类型在宏中预先定义的。如:16位系统的UINT32 对应的C语言表达就是unsigned long,而对于32位系统的UINT32则对应的是usigned int。

⚪ 定义数据场

使用UINT8数据类型定义一个八字节的数组,用来存放数据场信息

⚪ 定义解析与偏移结构体

899a42b41e7fc2f11555052f5d337875.png

需要另外在定义一个结构体,用来存放偏移与解析值。如上图,包含两个Float型数据。

  • 5
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值