← 返回 计组与微机控制

计组与微机控制

8.4 CAN和I2C总线

8.4 CAN和I2C总线

一、CAN 总线

CAN 是工业控制和汽车电子里非常重要的总线。

全称:Controller Area Network控制器局域网络

它属于:现场总线 Field Bus

1. CAN 的产生背景

CAN 最早由德国 Bosch 公司开发,主要是为了解决汽车内部大量控制器之间的数据交换问题。

汽车里有很多控制单元,比如:

发动机控制器 ABS 控制器 车身控制器 仪表盘 传感器 执行机构

如果每两个设备都单独连线,线束会非常复杂。

CAN 的想法是:让多个控制器挂在同一条总线上,通过消息进行通信。

2. CAN 的可靠性

教材说 CAN 使用:

CRC 校验 特殊的数据编码 错误识别 自动重发

所以 CAN 通信可靠性比较高。

这也是它适合汽车和工业现场的原因,因为这些环境:

电磁干扰强 实时性要求高 可靠性要求高 布线环境复杂

3. CAN 的实时性

教材提到 CAN 的传输速率可以达到:1 Mb/s

并且高优先级数据可以优先占用总线。

这说明 CAN 不是简单地大家排队,它有优先级机制。

可以理解为:重要消息优先发送。

比如汽车中刹车相关的信息,优先级肯定要高于普通舒适系统的信息。

4. CAN 的灵活性

CAN 是多主站结构。

也就是说,不是只有一个固定主机控制所有通信,多个节点都可以尝试发送数据。

但同一时刻只能有一个节点真正占用总线。

CAN 可以支持不同物理介质,比如:双绞线,同轴电缆,光纤

教材还说每帧数据量为:8 字节

这个点很重要,经典 CAN 的数据帧数据域最大就是 8 字节。

5. CAN 的发展

教材中提到:

Intel 82526 Philips 82C200 CAN 2.0A CAN 2.0B

CAN 2.0 分成 A 和 B:

CAN 2.0A:与原 CAN 1.2 类似 CAN 2.0B:增强版,也叫扩展 CAN

简单理解:

A 是标准帧; B 支持扩展帧。

6. CAN 的应用

CAN 最初用于汽车,但现在应用很广。

教材列了很多领域:

汽车 工业控制 生产自动化 机械制造 纺织机械 农用机械 机器人 数控机床 医疗器械 建筑物监控 火车 船舶 传感器网络

一句话总结:CAN 适合实时性、可靠性要求高的分布式控制系统。

九、I²C 总线(51和stm32要用的神)

I²C 也是非常重要的总线,尤其在嵌入式系统中常见。

全称:Inter-IC

意思是:芯片之间的通信总线

1. I²C 的基本概念

I²C 最早由 Philips 推出,是一种同步串行总线。

它只有两根信号线:

SDA:串行数据线 SCL:串行时钟线

所以也叫:二线制总线

2. I²C 连接方式

I²C 总线上可以挂多个器件。

例如:

单片机 EEPROM 温度传感器 RTC 时钟芯片 LCD 驱动器 键盘接口 A/D 转换器 D/A 转换器

每个器件通过地址区分。

也就是说,主机发通信时会先指定地址:

我要找地址为 0x50 的 EEPROM。

只有地址匹配的器件响应。

3. I²C 的电路特点

核心特点是:SDA 和 SCL 都需要上拉电阻。

I²C 总线通常采用开漏或开集电极输出。

也就是说,器件一般只能主动把总线拉低,不能主动输出高电平。

高电平由上拉电阻提供。

所以总线状态类似:

没有设备拉低 → 线为高电平 有设备拉低 → 线为低电平

这样多个器件可以安全地共享两根线。

4. I²C 的优点

教材总结 I²C 的优点是:

简单 有效 占用空间小 芯片管脚少 互连成本低 支持多主控

由于只有两根线,所以非常适合板级芯片互连。

例如在一块主板上,如果 CPU 要同时连接很多传感器和小芯片,用 I²C 可以大大减少连线数量。

5. I²C 支持多主控

教材说 I²C 支持:

multi-mastering,多主控

也就是多个器件都可以成为主机。

但同一时刻只能有一个主机控制总线。

可以理解为:

系统中可以有多个主机候选者; 但某个时刻只有一个主机真正发起通信。

6. I²C 的教材参数

教材这里给出的参数是:

总线长度最高 25 英尺 最大传输率 10 Kb/s 可支持 40 个组件

这个是教材当时针对某种 I²C 应用背景的描述。你考试按教材记即可。

现代 I²C 实际常见速率还有:

100 kHz 400 kHz 1 MHz

但如果是这本书的题目,优先按书上的说法答。

7.I2C总线协议规范和流程

我补一个I2C总线的规范和使用协议吧,毕竟其他的总线我也不太懂,只是了解罢了,I2C这个细节我都清楚。

规范:所有I2C设备的SCL(时钟线)连在一起,数据线SDA连在一起

设备的SCL和SDA均要配置开漏输出模式,SCL和SDA各添加一个上拉电阻

开漏输出和上拉电阻解决通信互相干扰的问题(这些不怎么重要知道就好,我们的重心不是电路)

原理:SCL高电平工作,低电平休息,SCL在高低电平切换,每高低一次传输1位数据,SDA高电平表示逻辑1,低电平逻辑0,发送时主机操控SDA,接受时从机操纵SDA

然后注意第九位的工作期间,SDA由主机交给从机,MCU运用从设备电路把SDA设位低电平,也就是每8位数据传输回复1位应答位,高电平有应答,低电平无应答。

确定工作区间:

在一个SCL工作区间,SDA由高转低表示起始位,低转高表示结束位

也就是数据层面表示 S DATA A P

和上面说的以此对应:起始 数据 答 停

(还有第一个数据的不同位置表示器件地址,寄存器地址什么的就不多讲了,具体用到再细说)

十、USB、IEEE 1394、CAN、I²C 对比

这几种外总线容易混,可以这样对比:

十一、重点记忆

这几页最该记的是:

1. USB 端点是设备内部的通信终点。 2. USB 端点 0 是默认控制端点,所有 USB 设备必须有。 3. USB 管道是主机软件和设备端点之间的逻辑通道。 4. USB 有四种传输:控制、同步、中断、批量。 5. USB 枚举包括复位、默认地址通信、分配地址、读取描述符、设置配置。 6. USB 包由同步字段、PID 和其他字段组成。 7. IEEE 1394 又叫 FireWire/i.LINK,适合高速音视频。 8. CAN 是现场总线,适合汽车和工业控制,可靠性和实时性强。 9. I²C 是 SDA/SCL 两线制同步串行总线,适合 IC 器件之间通信。

十二、简答题模板

1. 简述 USB 的四种传输类型。

USB 定义了控制传输、同步传输、中断传输和批量传输四种传输类型。控制传输主要用于设备配置、命令和状态操作,端点 0 默认采用控制传输;同步传输主要用于音频、视频等与时间有关的连续数据传输,强调实时性;中断传输主要用于键盘、鼠标等设备向主机报告服务请求,数据量小且延迟固定;批量传输主要用于 U 盘、打印机等大数据量传输,利用总线剩余带宽并保证可靠性。

2. 什么是 USB 端点和管道?

USB 端点是 USB 设备内部可被主机访问的通信终点,用于完成特定方向和类型的数据传输。每个 USB 设备必须具有端点 0,端点 0 用于设备初始化和控制传输。USB 管道是主机软件与设备端点之间建立的逻辑通信通道,主机通过管道和设备端点交换数据,USB 本身不解释管道中传输的数据内容。

3. 简述 USB 设备的枚举过程。

当 USB 设备接入总线时,集线器通过状态变化通知主机。主机查询集线器确定发生变化的端口,并对该端口发送复位和使能信号。复位结束后,设备以默认地址 0 通过端点 0 响应主机。主机读取设备描述符,确定设备能力和最大数据包长度,然后为设备分配唯一地址。之后主机继续读取配置、接口和端点描述符,并选择合适配置,使设备进入配置完成状态并开始正常工作。

4. IEEE 1394 有什么特点?

IEEE 1394 是一种高速串行总线,又称 FireWire 或 i.LINK,主要用于音频、视频和高速外设连接。它支持同步和异步两种传输方式,具有较高的数据传输速率,支持点对点传输、热插拔、即插即用和灵活拓扑结构。IEEE 1394 可用于实时传输声音和图像数据,也可用于普通数据和设备控制命令的传输。

5. CAN 总线为什么适合汽车和工业控制?

CAN 总线是一种现场总线,具有可靠性高、实时性好、连接方便和抗干扰能力强等特点。它采用 CRC 校验、错误识别和自动重发机制来保证通信可靠性;通过优先级机制保证高优先级数据优先传输;采用多主站结构,使多个节点可以直接通信。因此 CAN 总线非常适合汽车电子、工业控制和分布式控制系统。

6. 简述 I²C 总线的特点。

I²C 总线是一种用于 IC 器件之间通信的同步串行总线,只使用 SDA 串行数据线和 SCL 串行时钟线两根信号线。总线上的器件通过地址识别通信对象,多个器件可以挂接在同一总线上。I²C 总线结构简单、占用管脚少、互连成本低,并支持多主控方式,但同一时刻只能有一个主机控制总线。

这一章收尾可以总记成一句话:

系统总线重在主板内部高速互连,外总线重在主机和外设连接;USB 强调通用和即插即用,IEEE 1394 强调高速音视频,CAN 强调工业实时可靠,I²C 强调芯片间简单低成本互连。

窗体顶端

窗体底端