计组与微机控制
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 强调芯片间简单低成本互连。
窗体顶端
窗体底端
