通信与接口协议面试八、CAN通信

CAN(ControllerAreaNetwork)。异步半双工。汽车的电气部分就采用CAN 总线实现通信。

**低速CAN【IS011519-2 标准】**通信速率为10~125kbpS,总线长度可达1000米,结构开环总线

高速CAN 【ISO11898标准】:通信速率为125Kbps~1Mbps,总线长度≤40米,结构闭环总线(也称为经典CAN)(闭环有终端电阻)

1.原理

每个部分的多个器件都挂载在CAN 总线上(---个CAN 总线上的所有器件通讯速率必须相同),各个部分再汇集到网关,由网关分配实现各个不同速率的部分之间通讯。

CAN的组成一般有两种方式:

1:CPU与CAN控制器集成到一起、再外接CAN收发器;

2:另一种是CPU与CAN 控制器分开的,使用的时候需要配置CAN接口电路。

STM32将CAN接口集成在芯片内,使用的时候再外接CAN收发器。

CAN 收发器是用于TTL 电平与差分电压信号相互转换的,TTL 电平即单片机引脚直接提供的电平

2.逻辑电平

逻辑0代表低电平,逻辑1代表高电平

CAN_High- CAN_LoW< 0.5V 时候为隐性的,逻辑信号表现为"逻辑1,即高电平。

CAN_High- CAN_Low>0.9V 时候为显性的,逻辑信号表现为"逻辑0",即低电平。

没有数据发送或者发送数据0时,两条线的电平一样都为2.5V。

3.通信过程

CAN 控制器将 CPU传来的信号转换为逻辑电平(即逻辑0-显性电平或者逻辑1-隐性电平)。CAN收发器再把逻辑电平转换为差分电平输出到CAN总线上。

在总线空闲状态下,任意节点都可以向总线上发送信息。最先向总线发送信息的节点获得总线的发送权;当多个节点同时向总线发送消息时,优先权高的那个节点获得总线的发送权。

这个数据里不仅有数据,还有本身的 ID 信息或者其他的控制指令,应称为数据包(数据帧)。数据帧是以一个显性位(逻辑 0)开始,以7 个连续的隐性位(逻辑 1)结束。分为仲裁段、控制段、数据段、CRC段和ACK段。

4.位同步时序

由于CAN没有时钟信号线,采用位同步时序。CAN 通讯协议的每一个数据帧可以看作一连串的电平信号,每一个电平信号代表一位(一个字节8位的位),所以一帧中包含了很多个位,由发送单元在非同步的情况下发送的每秒钟的位数称为位速率。一位又分为4段,同步段(SS)、传播时间段(PTS)、相位缓冲段1(PBS1)、相位缓冲段2 (PBS2)。

相关推荐
zcmodeltech8 分钟前
智能制造教学实训沙盘模型多系统协同控制系统设计:基于STM32与Modbus RTU的工业机器人-智慧工厂-数字孪生全场景联动方案
数据库·stm32·嵌入式硬件·机器人·制造·多分类
程序员与背包客_CoderZ29 分钟前
Linux D-Bus通信协议详解:从入门到C/C++编码实战
linux·服务器·c语言·c++·嵌入式硬件·嵌入式软件·dbus
嵌入式阿蔡2 小时前
HAL库 vs LL库 vs 寄存器:到底用哪个?
c语言·stm32·单片机·嵌入式硬件·嵌入式实时数据库
天空'之城3 小时前
单片机基础核心知识点汇总(三)
单片机·嵌入式硬件
嵌入式阿蔡3 小时前
CAN总线入门:从协议帧到STM32实战
c语言·stm32·单片机·嵌入式硬件·嵌入式实时数据库
码匠许师傅3 小时前
【C++ 面试真题】聊聊 C++ 中的 lambda 表达式
java·c++·面试
恒锐丰科技韩生4 小时前
率能 SS8847E|2.7~15V 双通道 H 桥电机驱动 ETSSOP16 散热封装 家电 / 打印 / 舞台灯光专用
嵌入式硬件·硬件工程
离凌寒4 小时前
一、对stm32mp157配置freertos后,任务挂掉无法启动问题总结
stm32·单片机·嵌入式硬件
消失的旧时光-19436 小时前
7-fix补充篇:机器人为什么需要多级控制仲裁?Cloud、Linux 与 MCU 分别管什么
linux·单片机·机器人·仲裁机制·安全保护机制
Hello_Damon_Nikola7 小时前
CH573从入门到精通
c语言·开发语言·单片机·嵌入式硬件