在 CAN 协议中,所有的消息都以固定的格式发送。总线空闲时,所有与总线相连的单元都可以开始发送新消息。两个以上的单元同时开始发送消息时,根据标识符(Identifier 以下称为 ID)决定优先级。ID 并不是表示发送的目的地址,而是表示访问总线的消息的优先级。两个以上的单元同时开始发送消息时,对各消息 ID 的每个位进行逐个仲裁比较。仲裁获胜(被判定为优先级最高)的单元可继续发送消息,仲裁失利的单元则立刻停止发送而进行接收工作
can 协议
数据帧
文章来源:https://www.toymoban.com/news/detail-610630.html
总结: 对于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 是根据自己的实际需要设置的!我们先抛开它们所 代表的实际意义,认为它们存在的目的是为了“进攻”。(发送出去让别人过滤)文章来源地址https://www.toymoban.com/news/detail-610630.html
到了这里,关于CAN通信协议的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!