嵌入式接口通识知识之CAN接口

8.1 基础概念

CAN的全称是Controller Area Network,译为控制器区域网络,是一种用于车辆、电力系统、工业设备等嵌入式系统的半双工异步串行通信协议和物理接口。CAN是一种事件驱动的通信协议,采用非主从结构,所有节点都可以发送和接收数据,而不需要主控节点。它支持多主机通信,具有优先级和冲突解决机制,能够实现高效的数据传输。CAN只需要两根信号线,这两根信号线通常采用的是双绞线,且传输的是差分信号,以差分信号传输信息具有抗干扰能力强,有效抑制外部电磁干扰的优点。

8.2 工作原理

CAN通信的工作原理依赖于CAN接口的核心组件,包括CAN控制器、CAN收发器和CAN总线。CAN收发器的作用是将普通信号转化为差分信号,以提高抗干扰能力和输出可靠性。CAN 总线的工作电压通常为5V或3.3V,但通信的关键在于CAN_High和CAN_Low两根总线间的电压差。

CAN 协议经过 ISO 标准化后有两个标准:ISO11898标准和ISO11519-2标准;其中标准ISO 11519-2-1994已经被ISO 11898-3-2006 代替,即符合标准ISO 11898-3的产品也是符合ISO 11519-2标准的产品;ISO11898-2-2016更新并替代了ISO11898-2:2003,ISO11898-5:2007和ISO11898-6:2013)。ISO11898标准和ISO11519-2标准对于数据链路层的定义相同,但物理层不同,两个标准间的差异如下

物理层

ISO 11898(High speed)

IS 11519-2(low speed)

通信速率

最高1Mbps

最高125kbps

总线最大长度

40m/1Mbps

1km/40kps

连接单元数

最大30

最大20

信号

隐性

显性

隐性

显性

最小

典型

最大

最小

典型

最大

最小

典型

最大

最小

典型

最大

CAN_High

(V)

2

2.5

3

2.75

3.5

4.5

1.6

1.75

1.9

3.85

4

5

CAN_Low

(V)

2

2.5

3

0.5

1.5

2.25

3.1

3.25

3.4

0

1

1.15

电位差(V)

-0.5

0

0.05

1.5

2

3

-0.3

-1.5

-

0.3

3

-

当CAN收到一个低电平信号,CAN_High输出3.5V,CAN_Low输出1.5V,两者的电压差是2V,此时表示逻辑0,也称显性电平。

当CAN收到一个高电平信号,CAN_High和CAN_Low输出均为2.5V,电压差是0V,此时表示逻辑1,也称隐性电平。

为满足不同通信需求,CAN协议定义了多种帧类型,包括数据帧、远程帧、错误帧、过载帧、帧间隔等。数据帧用于传输数据,包含实际的有效数据内容;远程帧用于请求数据,没有数据部分,只发送标识符和长度信息;错误帧用于指示总线上的错误,帮助进行错误处理;过载帧用于指示总线过载,帮助管理数据流;帧间隔是两帧之间的时间间隔,用于确保帧的正确传输,避免帧冲突。其中最常见的帧类型是数据帧,分为标准数据帧和扩展数据帧。

标准数据帧格式及字段组成如下:

字段

作用

SOF(起始位)

数据帧的开始标识,固定为0,用于时钟同步

Arbitration(仲裁域)

标识符:11位,用于标识数据帧的优先级和来源,有唯一性

RTR:标识数据帧和远程帧,数据帧时为0,远程帧时为1

Control(控制域)

IDE:标识标准帧和拓展帧,标准帧为0,扩展帧为1

RB0:预留位

DLC:表示数据字段的字节数(0到8字节)

Data(数据字段)

实际传输的数据,最多8个字节

CRC(校验码)

错误检验,验证数据完整性

ACK(确认位)

ACK确认槽:用于确认数据是否正确接收,发送端该位为1,接收端接收成功后该位置0,否则保留1

ACK界定位:固定为1的分隔符,标识确认槽的结束

EOF(结束标志)

7位都是逻辑1,表示数据帧传输结束

扩展数据帧格式及字段组成如下:

字段

作用

SOF(起始位)

数据帧的开始标识,固定为0,用于时钟同步

Arbitration(仲裁域)

标识符:29位,用于扩展帧的标识符,包括11位标准标识符和18位扩展标识符;

SRR:仅用于扩展帧,固定为1

RTR:标识数据帧和远程帧,数据帧时为0,远程帧时为1

IDE:标识标准帧和拓展帧,标准帧为0,扩展帧为1

Control(控制域)

RB0:预留位

RB1:预留位

DLC:表示数据字段的字节数(0到8字节)

Data(数据字段)

实际传输的数据,最多8个字节

CRC(校验码)

错误检验,验证数据完整性

ACK(确认位)

ACK确认槽:用于确认数据是否正确接收,发送端该位为1,接收端接收成功后该位置0,否则保留1

ACK界定位:固定为1的分隔符,标识确认槽的结束

EOF(结束标志)

7位都是逻辑1,表示数据帧传输结束

在正常工作时CAN总线上可能会挂载很多设备,如果两个设备同时发送信息,就会发生冲突,为了避免总线冲突,需由总线仲裁机构合理地控制和管理系统中需要占用总线的申请者,在多个申请者同时提出总线请求时,以一定的优先算法仲裁哪个应获得对总线的使用权。只有获得了总线控制权的设备,才能开始传送数据。

报文的优先级,是通过对 ID(识别码) 的仲裁来确定的。CAN总线上有两种电平状态,如果总线上同时出现显性电平和隐性电平,总线的状态会被置为显性电平,CAN正是利用这个特性进行仲裁。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值