汽车电子can总线(一)物理层

一、介绍
CAN 是 Controller Area Network 的缩写(以下称为 CAN),是 ISO 国际标准化的串行通信协议。在北美和西欧,CAN 总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线,并且拥有以 CAN 为底层协议专为大型货车和重工机械车辆设计的 J1939 协议。

优点:
1、速度快,可以达到1Mbit
2、线少,2根线解决255台设备之间通信
3、组网简单,所有设备可以直接相互发送消息
4、抗干扰能力强,用到汽车和工业场合比较稳定
5、低功耗
6、有容错机制

二、硬件原理
首先需要单片机本身带can控制器,然后出去信号经过can驱动芯片转换为差分信号;

设备连接
在这里插入图片描述汽车上的应用
在这里插入图片描述

电路网络
在这里插入图片描述

电平电压
驱动芯片将逻辑电转换成can_h和can_l差分信号
逻辑0对应显性 CAN_L 1.5V CAN_H 3.5V
逻辑1对应隐性 CAN_L 2.5V CAN_H 2.5V
在这里插入图片描述
具体标准在iso11898有详细介绍
在这里插入图片描述can是异步通信
所以一个网络上的设备波特率要一样才能通信成功

协议
can一帧报文最多可以传输8个字节,每一帧自带id、校验、数据长度以及帧格式,’整个一帧协议实现由can控制器完成,不需要软件去组包,只需要在发送之前配置好波特率和帧格式即可实现收发

具体协议如下
在这里插入图片描述SOF:帧起始1位
Identify:接下来的仲裁段有11位,即本数据帧的 ID 信息,决定着数据帧发送的优先级,也决定着其它设备是否会接收这个数据帧,禁止高 7 位都为隐性(禁止设定:ID=1111111XXXX), ID 信息的作用:① 如果同时有多个节点发送数据时,作为优先级依据(仲裁机制);② 目标节点通过 ID 信息来接受数据(验收滤波技术)。这些将在下文提出。
RTR:(Remote Transmission Request BIT) 位用于标识是否是远程帧(0,数据帧;1,远程帧),在数据帧里这一位为显性(逻辑 0)。
IDE:(Identifier Extension Bit),是用于区分标准格式与扩展格式,在标准格式中 IDE 位为显性,在扩展格式里 IDE 位为隐性。
r0:保留位,必须以显性电平发送。
DLC:发送数据长度,0到8,由 4 位组成,MSB 先行(高位先行),若接收方接收到 9~15 的时候并不认为是错误。
Data:数据,0~8 个字节(0 ~ 64位)组成,MSB 先行。
CRC:校验,该段用于检查帧传输错误,发送方以一定的方法计算包括:帧起始、仲裁段、控制段、数据段;接收方以同样的算法计算 CRC 值并进行比较,如果不同则会向发送端反馈出错信息,重新发送;计算和出错处理一般由 CAN 控制器硬件完成或由软件控制最大重发数。该段由 15 个位的 CRC 顺序和 1 个位的 CRC 界定符(用于分隔的位)组成,它为隐性位,主要作用是把CRC 校验码与后面的 ACK 段间隔起来。
ACK:由 ACK 槽(ACK Slot)和 ACK 界定符 2 个位组成,在 ACK 槽位中,发送端发送的为隐性位,而接收端则在这一位中发送显性位以示应答。在 ACK 槽和帧结束之间由 ACK 界定符间隔开,为隐性位。(发送 ACK/返回 ACK这个过程使用到回读机制,即发送方先在 ACK 槽发送隐性位后,回读到的总线上的电平为显性0,发送方才知道它发送成功了,不用重发)
EOF:帧结束, 7个隐性位表示结束。

帧类型
在这里插入图片描述在这里插入图片描述

小汽车上面主要使用标准数据帧
货车上面主要使用拓展数据帧

编码规则
当出现相同极性的电平持续五位时,则添加一个极性相反的位,称为位填充
在这里插入图片描述仲裁机制
当网络中出现多台设备同时发送的时候,发送数据的时候也能收到网络上的数据,当发送到id部分,发送当前如果位隐性,结果收到位显性则放弃当前发送,总线上只会出现优先级最高的报文
在这里插入图片描述
位同步

版权声明:本文为CSDN博主「锅锅是锅锅」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u010835747/article/details/123062465

生成海报
点赞 0

锅锅是锅锅

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

基于8051单片机实现电子时钟+数字秒表设计

概述 电子时钟是一种利用数字电路来显示秒、分、时的计时装置,与传统的机械钟相比,它具有走时准确、显 示直观、无机械传动装置等优点,因而得到广泛应用。随着人们生活环境的不断改善和美化,在许

MDK5(keil5)编译按钮不见?

1.大部分是第一种情况 整个组件工具栏都不见了 解决办法: 2.小部分是组件工具栏没有编译按钮 解决办法: 参考: KEIL4 上面那个编译的工具栏怎么不见了 Keil工具栏详细说明