CAN——基于STM32F407ZGT6(上)

CAN总线通信协议(基础)

CAN总线(Controller Area Network Bus)控制器局域网总线 CAN总线是由BOSCH公司开发的一种简洁易用、传输速度快、易扩展、可靠性高的串行通信总线,广泛应用于汽车、嵌入式、工业控制等领域 CAN总线特征: 两根通信线(CAN_H、CAN_L),线路少,无需共地 差分信号通信,抗干扰能力强,用电压差值传递数据 高速CAN(ISO11898):125k~1Mbps, <40m,用处多,着重学 低速CAN(ISO11519):10k~125kbps, <1km 异步,无需时钟线,通信速率由设备各自约定 半双工,可挂载多设备,多设备同时发送数据时通过仲裁判断先后顺序 11位(标准格式)/29位(扩展格式)报文ID,用于区分消息功能,同时决定优先级 可配置1~8字节的有效载荷 可实现广播式

(发送者向接收者写入数据,这个lan网络下的其他设备被动接收,可根据ID确定要不要接收)和

请求式(发一个数据就需要先请求再接收)两种传输方式 应答、CRC校验、位填充、位同步、错误处理等特性

主流通信协议对比

名称 引脚 双工 时钟 电平 设备 应用场景
UART TX、RX 全双工 异步 单端 点对点 两个设备互相通信
I2C SCL、SDA 半双工 同步 单端 多设备 一个主控外挂多个模块
SPI SCK、MOSI、MISO、SS 全双工 同步 单端 多设备 一个主控外挂多个模块(高速)
CAN CAN_H、CAN_L 半双工 异步 差分 多设备 多个主控互相通信

CAN结合了UART和IIC

 

UART

IIC

SPI

CAN: 如果想实现 有很多 主控单片机 相互进行通讯 比如 5个STM32 之间任意通信

这时候就可以利用到 CAN总线了 , USART I2C SPI 都难以实现这个要求

一、CAN硬件电路

  • 每个设备通过CAN收发器挂载在CAN总线网络上

  • CAN控制器引出的TX和RX与CAN收发器相连,CAN收发器引出的CAN_H和CAN_L分别与总线的CAN_H和CAN_L相连

  • 高速CAN使用闭环网络,CAN_H和CAN_L两端添加120Ω的终端电阻

电阻作用:

1.防止回波反射 尤其是 高频信号、远距离传输的场景 如果不加终端电阻 信号波形会在线路终端反射,进而干扰原始信号 。加了终端电阻 且 阻抗匹配 则电平跳变会比较平稳

2.在没有设备操作时 将两根差分线的电压 “收紧” (收紧为 电平1 呈隐性) 使其电压一致。

收紧:在没有设备操作总线的情况下 电阻就和弹簧一样 将两根线(CAN_H CAN_L) 的电压拉到同一个电平 和I2C的上拉电阻很像。

这里CAN总线的上拉电阻也就类似一个弹簧,可以将两根线“收紧”至电压一致状态,代表的就是默认1的状态,并且这两个电阻的阻值并不大,所以收紧的速度是很快的,使得CAN总线支持的最大速率也比较快,但是代价是CAN总线的功耗也会比较大。

如果某个设备想要发送 0 时 , 设备会操作总线,把总线拉开(总线的电平拉开) 使其呈现0状态。当设备想要发送1时 ,就不去碰总线 。总线在终端电阻的收缩下自动默认为1状态。注意当设备想发送1时,它无需对总线进行任何操作,因为总线默认的是1。

  • 低速CAN使用开环网络,CAN_H和CAN_L其中一端添加2.2kΩ的终端电阻

低速CAN这里一端接到总线另一端悬空,没有形成环路,这里电阻无效,因为电路只有形成回路才有效,但是它可以防止回波反射,这两个电阻没有“收紧”作用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值