CAN通信协议

本文主要介绍CAN协议,在CAN协议中消息以固定格式发送,多单元同时发消息时根据ID决定优先级。还阐述了CAN总线发送步骤、报文种类,浅谈USART和IIC格式,最后对CAN通信发送的程序部分,如StdId、ExtId等参数进行讲解。

   在 CAN 协议中,所有的消息都以固定的格式发送。总线空闲时,所有与总线相连的单元都可以开始发送新消息。两个以上的单元同时开始发送消息时,根据标识符(Identifier 以下称为 ID)决定优先级。ID 并不是表示发送的目的地址,而是表示访问总线的消息的优先级。两个以上的单元同时开始发送消息时,对各消息 ID 的每个位进行逐个仲裁比较。仲裁获胜(被判定为优先级最高)的单元可继续发送消息,仲裁失利的单元则立刻停止发送而进行接收工作

can 协议

 数据帧

 

总结: 对于can 通信也只是了解 ,这种通信应用在,电机比较多,can 通信的优点就不说了。 在进行数据通信的时候要严格按照can通信的协议帧来进行发送数据。

 can总线发送部分:

 第一步:

 

第二步:

.

 

第三步:

 

第四步:

 

第五步:

报文的种类:

 每种发送的数据帧 等其他 都是报文,并且每种的报文的格式也都不相同。

总结:

浅谈USART格式:

 USART 上篇文章中 串口数据就是赋给数据帧头帧尾的标识符,后来经过学长指点学到了CRC校验,通过CRC校验判断数据是否正确。并没有时序帧。

浅谈IIC格式:

 常用帧的格式:

 标准格式

 对比 简图:

 程序部分讲解:

can通信的发送:

StdId

StdId 用来设定标准标识符。它的取值范围为 0 到 0x7FF。

ExtId

ExtId 用来设定扩展标识符。它的取值范围为 0 到 0x1FFFFFFF。

IDE

IDE 用来设定消息标识符的类型。

 RTR

RTR 用来设定待传输消息的帧类型。它可以设置为数据帧或者远

RTR 值

 

DLC

用来设定待传输消息的帧长度。它的取值范围是 0 到 0x8。 Data[8] Data[8] Data[8] Data[8] Data[8]包含了待传输数据,它的取值范围为 0 到 0xFF。 先声明一个 CanTxMsg 类型的变量,然后按照自己具体的需要,填充此结构变量就可 以发送了(帧结构中其他没有填充的部分由硬件自动完成)。 强调:这里的 StdId 或者 ExtId 是根据自己的实际需要设置的!我们先抛开它们所 代表的实际意义,认为它们存在的目的是为了“进攻”。(发送出去让别人过滤)

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不会编程的小蔡!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值