欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

can初步自学笔记

程序员文章站 2022-04-01 18:43:22
...

一、CAN初识
1.CAN基本概念
CAN总线是在物理层、数据链路层和一部分的传输层定义的一套标准。
又分为高速CAN和低速CAN。can初步自学笔记 2.信号传输方式
CAN传输线缆采用 双绞线以便产生差分信号,提高抗干扰能力。
终端加电阻用来消除电缆线高频传输时产生的末端反射。
can初步自学笔记
11898-1对应controller、11898-2对应高速can收发器、11898-3对应低速can收发器、11898-4增加了时间触发通讯机制

2.高速CAN收发器和低速CAN收发器
CAN总线上产生的是电信号,由CAN收发器将电信号转换为逻辑电平
显性点平对应逻辑0 ,隐性点平对应逻辑1,在CAN总线上有着显性点平覆盖隐性电平的原则(0&1 = 0)。
can初步自学笔记
低速CAN 0-125 K ,可以不需要终端电阻
can初步自学笔记
高速CAN
最大传输速率 1M ,需要串联终端电阻 can初步自学笔记
二、数据传输
1.数据帧格式
去中心化,分布式原则:总线空闲时间任一节点均可竞争发送消息、消息将被广播,由节点自己决定是否过滤can初步自学笔记can初步自学笔记
sof 1bit:发出一个显性位边沿,网络节点以此开始同步
id 11bit:定义消息优先级/总线竞争力,数字越低优先级越高
RTR 1bit:显性表示数据帧
r 1bit:保留位
dlc 4bit:表示数据场的字节长度
crc场 16:crc校验场,含1bit隐性位的界定符
ack场 2bit:ack场,同样含1bit隐性位界定符(由接收方进行确认,收到消息给出一个显性位,如果一个节点都没有确认收到消息,发送方监听此位为隐形位就会报错)
IDE 1bit:扩展帧标识符,扩展帧的id可以有29位,扩展帧和标准帧格式不同,不能存在于同一can网络
EOF 7bit:结束标志,7bit隐性位
ITM 3bit:帧间隔,实际不属于帧内的区域,先列出来,必须等待帧间隔才能发送消息
2.id优先级竞争
CAN总线上没有主控,任意节点主动竞争发送权,每个节点在发送消息时都会监控总线上的点平,当send 1 bus 出现0 时说明竞争失败,该节点转为接收方,退出此次竞争,等待bus free重新竞争,但这一方式有一个明显弊端,低优先级在消息众多的情况下会阻塞很久,造成网络负载率较高。
can初步自学笔记
三、总线同步
1.数据帧sof会发出显性点平表示开始同步。
2.硬同步:帧与帧之间会插入隐性点平来避免信号线一直拉高点评,硬同步会保障帧头。
3重同步:控制器会对每一个位的下降沿进行判断,如发现自己和总线上的时钟不同步,则会自动进行调整,每次可调整的宽度即同步跳转宽度(SJW)
四、数据保护机制
1、CAN总线采用NRZ编码(没有应用曼彻斯特)用来减小干扰,但会影响同步所以引入了位填充机制(发送器只要检测到位流里有5 个连续相同值的位便自动在位流里插入一补充位)。
2、五种监测机制
接收方检测:
位填充错误:查看位流里是否有六个连续相同值得位。
格式错误:数据帧格式与标准不符都会从报错
CRC错误:接收方生成crc与发送方比对
接收方检测:
位发送错误:发送消息时总线总是发送点平不同
ACK应答错误:没有接受到应答信号
3、错误帧
CAN总线有着保持数据一致性的原则,检测到错误所有节点都会知道
主动错误:检测错误主动报错,发出错误标识符(连续6个显性位)和错误界定符(连续8个隐形位);目的在于“主动”通知错误,即使别的节点没有发现此错误;
被动错误:检测错误,被动等待其他节点报错后发送错误标识符(连续6个隐形位)和错误标识符(连续8个隐形位);目的在于识别错误,回应主动错误。
两个六个隐性位的错误标识符可能会由于其他原因重叠。
4、错误计数器
为了避免某个设备因为自身原因(例如硬件损坏)导致无法正常收发数据而不断地破坏数据帧,从而影响其他正常节点通讯,CAN-bus规范中规定每个CAN控制器都有一个发送错误计数器和一个接收错误计数器。
can初步自学笔记
主动错误:发现错误后会很积极主动地上报错误
被动错误:TEC or REC 计数超过127就进入此状态,此时,该节点发现错误后只会发送6个隐性位,不会把错误广播出去,中间隔8位
总线关闭状态:计数器大于255进入此状态,想要重新挂载到总线上需要重启,需要连续发送128个隐性点平

	本文仅作为自己的学习笔记,参考b站视频,以及网上资料自己总结。
相关标签: can