通信协议
串口通信详解
IIC通信详解
SPI通信详解
CAN通信详解
文章目录
计算机与外界的信息交互称为通信。
基本的通信方式分为两种:
串行通信:所传送的数据各位按顺序一位一位地发送或接受,占用资源少,速度相对较慢。
并行通信:所传送的数据的各个位是同时发送或接受。速度快,占用引脚资源多。
通信的速率:
比特率(bit rate):每秒能传输的二进制位数。
波特率(Baud rate):每秒能传输的码元数(不一定是二进制)。
对于数字信号而言,波特率=比特率。
串行通信的种类:
同步通信:带时钟同步信号传输,通讯双方是受同一个时钟源控制,如I2C、SPI、USART。
异步通信:不带时钟信号同步,不是同一个时钟源,按照一定规则传输,如USART、UART、单总线、CAN。
串行通信的方式:
单工:只允许单方向传输,只需一条信号线
半双工:允许非同时进行的双方向传输,只需一条信号线。
全双工:允许同时进行双方向传输,需要两条信号线。
通信协议是主控MCU与各类驱动器、传感器之间实现信息交互的基本逻辑,搞懂通信协议在机器人的电控系统中占有很重要的地位。在接下来的内容中,我将分别讲解串口、IIC、SPI和CAN通信协议的区别原理以及结合实际一些模块的代码部分。
CAN通信
什么是CAN通信?
CAN通信是串行通信的一种,但要优于传统串口协议总线,如汽车上的电气部分就采用CAN总线。与SPI和I2C不同,CAN总线不是以时钟信号来进行同步的,而是通过自己独有的位时序来同步的。它是一种异步半双工通信,通过两条线传输(CANL和CANH)。

CAN通信的优点:
由于真实环境中干扰因素很多,不稳定,CAN通信采用了差分信号传输。即使环境问题导致CAN_High电压发送变化,则CAN_L也会发送同等变化,两者做差即可抵消由于这个环境引起的变化。
对比SPI:CAN节省了布线资源。
对比I2C:CAN提高了传输速率。
CAN通信电平格式:
CAN_Rx和CAN_Tx分别是从MCU中接出来的引脚。
比如MCU要发送一个逻辑1,则只要将CAN_Tx设置为1,经过CAN收发器转换(将MCU的TTL电平转化为CAN通信差分电平)。
CAN_High和CAN_Low 线上的电压均为 2.5v,即传到总线的电压差 Vh-Vl=0V,总线上的状态则就是逻辑1。
同样,当CAN_High和CAN_Low 读取到 CAN总线电压分别3.5V和1.5V,即压差为2V,经过收发器转换,MCU则可通过CAN_Rx读取到信号0。
**隐性电平——电压差为0——逻辑电平为1
**显性电平——电压差为2——逻辑电平为0

本文详细介绍了CAN通信协议,包括其优点、电平格式、结构、波特率和特点。讲解了数据帧的传输过程,以及在STM32中的配置和应用。还提到了位时序、CAN波特率计算以及CAN通信在STM32中的寄存器设置。

1465

被折叠的 条评论
为什么被折叠?



