精髓!精髓!精髓!一张表+一篇文章带你彻底了解UART、USART、IIC、SPI、CAN通讯

一、前言

        最近系统性的复习了常用的嵌入式通讯协议,便总结性的写了这文章,本文适合想要快速一览各通信协议的关系区别的同学,那么废话不多说,直接上表格

二、各通信协议的关系

协议全称属性接线
UART通用异步收发器异步、全双工、串行通信

TX-------RX

RX-------TX

GND--GMD

USART通用同步/异步收发器同步/异步、全双工、串行通信

TX--------RX

RX--------TX

GND----GMD

SCLK--SCLK

IIC集成电路总线同步、半双工、串行通信

SCL----SCL

SDA----SDA

SPI串行外设接口同步、全双工、串行通信

SCLK---SCLK

MOSI---SIMO

MISO---SOMI

SS-------SS 

CAN局域控制网络异步、半双工、串行通信

CAN_H--CAN_H

CAN_L--CAN_L

三、各通信协议的简单介绍

1、UART

定义

        UART(Universal Asynchronous Receiver/Transmitter)通用异步收发传输器,是一种广泛应用于嵌入式系统和电子设备中的串行通信协议。UART 通信不需要时钟信号,为异步通信,数据传输速率以波特率表示,即每秒传输的位数。

        TX(Transmit):用于发送数据

        RX(Receive):用于接收数据

接线图

数据格式

Start Bit

Data FrameParity BitStop Bit

        Start Bit:开始位,表示传输的开始,发送设备通过将 TX 线从高电平拉到低电平来发起通信,表示数据传输的开始,长度:1bit

        Data Frame:数据位,表示传输的数据,长度:通常8bits

        Parity Bit:奇偶校验位,验证数据传输的正确性,校验方式又分为无奇偶校验奇校验偶校验,长度:1bit

        Stop Bit:停止位,发送设备通过将 TX 线从低电平拉到高电平来结束通信,长度:通常1bit

2、USART

定义

        USART(Universal Synchronous/Asynchronous Receiver/Transmitter)通用同步/异步收发传输器,USART 协议结合了 UART(通用异步收发传输器)和同步通信的特点,既支持异步通信,也支持同步通信,数据传输速率以波特率表示,即每秒传输的位数,当用作异步通信时,与uart没有区别,以下主要分享用作同步通信时的特点

        TX(Transmit):用于发送数据

        RX(Receive):用于接收数据

        SCLK(Serial Clock):用于传输时钟信号,由主设备生成。

接线图

数据格式

        在 USART 同步通信模式下,数据传输依赖于时钟信号(SCLK)来同步。时钟信号由主设备生成,并在整个通信过程中保持稳定。从设备根据时钟信号的边沿(上升沿或下降沿)来采样数据线(TX 和 RX)上的数据,数据帧格式与UART一致

3、IIC

定义

        I²C(Inter-Integrated Circuit)集成电路总线,广泛应用于嵌入式系统和电子设备中,用于在微控制器和外围设备之间进行短距离通信。

        SDA(Serial Data Line):用于传输数据

        SCL(Serial Clock Line):用于传输时钟信号

接线
                       

数据格式:

        开始信号:主设备通过将 SDA 线从高电平拉到低电平,同时 SCL 线保持高电平,来发起通信。

        数据传输:主设备和从设备之间通过 SDA 线传输数据,每传输一个字节后,接收方发送一个应答信号(ACK)

        停止条件:主设备通过将 SDA 线从低电平拉到高电平,同时 SCL 线保持高电平,来结束通信。

4、SPI

定义:

        SPI(Serial Peripheral Interface)串行外设接口,是一种同步串行通信接口,广泛应用于嵌入式系统和电子设备中,用于在微控制器和外围设备之间进行高速数据传输。

        SCLK(Serial Clock):用于传输时钟信号,由主设备生成。

        MOSI(Master Out Slave In):主设备到从设备的数据线(主出从入)。

        MISO(Master In Slave Out):从设备到主设备的数据线(主入从出)。

        SS(Slave Select):用于选择从设备,通常为低电平有效。

接线图:

传输方式:

        1、选择从设备:

                SS 线拉低:主设备通过拉低相应的 SS 线来选择特定的从设备。SS 线通常为低电平有效,即当 SS 线为低电平时,从设备被选中。

                从设备准备:从设备在 SS 线被拉低后,准备接收和发送数据

        2、数据传输:

                时钟信号生成:主设备生成时钟信号(SCLK),用于同步数据传输。时钟信号的频率由主设备控制,通常在几 kHz 到几 MHz 之间。

        3、数据发送:

                主设备发送数据:主设备通过 MOSI 线发送数据,数据在时钟信号的边沿(通常是上升沿或下降沿)被采样。

                从设备发送数据:从设备通过 MISO 线发送数据,数据在时钟信号的边沿(通常是上升沿或下降沿)被采样。

        4、数据接收:

                主设备接收数据:主设备通过 MISO 线接收从设备发送的数据。

                从设备接收数据:从设备通过 MOSI 线接收主设备发送的数据。

       5、 取消选择从设备:

                SS 线拉高:数据传输完成后,主设备通过拉高 SS 线来取消选择从设备。SS 线被拉高后,从设备进入空闲状态,不再接收和发送数据。

5、CAN

定义:

        CAN(Controller Area Network)局域控制网络,是一种广泛应用于汽车、工业控制和其他领域的串行通信协议,CAN 使用差分信号传输数据,意味着数据是通过比较 CAN_H 和 CAN_L 之间的电压差来传输。

        CAN_H(CAN High):用于传输高电平信号。

        CAN_L(CAN Low):用于传输低电平信号。

接线:

传输原理:

        1、数据帧格式:

               帧起始:表示数据帧的开始。  

                仲裁场:包括标识符(ID)远程传输请求位(RTR),用于确定数据包的优先级。

                控制场:包括数据长度码(DLC),表示数据字段的长度。

                数据场:包含实际传输的数据

                CRC 场:包含循环冗余校验(CRC)码,用于错误检测。

                应答场:接收节点通过应答场确认数据包的接收。

                帧结束:表示数据帧的结束。

        2、数据传输:

                发送节点:发送节点根据数据帧格式生成数据包,并通过 CAN_H 和 CAN_L 线发送数据。

                接收节点:接收节点通过 CAN_H 和 CAN_L 线接收数据包,并根据数据帧格式解析数据。

        3、仲裁机制:

                非破坏性仲裁:当多个节点同时发送数据时,CAN 使用非破坏性仲裁机制来解决冲突。每个节点在发送数据时会监测总线上的电平,如果发现总线电平与自己发送的电平不一致,则自动退出发送,优先级较低的节点会自动退出发送,从而避免了冲突。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值