MCU常见的连接类外设的基本介绍

USART串行总线

USART全称:Universal Synchronous/Asynchronous Receiver/Transmitter 通用同步/异步收发器,是MCU上最为常见的外设,该外设是串行的全双工操作(相互独立的接收数据和发送数据)的,并且可以配置成工作在同步或异步模式下,而在有的MCU上有只支持工作在异步模式下的UART(通用异步收发器),该外设最少仅需要两根数据线即可实现设备间数据通信。

组成

USART外设主要由以下三个部分组成:

时钟发生器:用作波特率发生器,在同步模式下由外部时钟输入驱动,发送端与接收端SCLK连接

数据发送器:用于发送数据,当数据被写入缓冲器时由串行移位寄存器将并行数据转换为串行数据并附加上校验码后发送数据起始位,开始发送数据,然后数据发送完毕发送停止位

数据接收器:用于接收数据,当寻找到数据起始位时,对电路信号进行采样,并把得到的电平信号送入移位寄存器,数据接收完成后校验数据

通信协议

USART外设接口主要是TX、RX、CLK有的MCU还提供CTS、RTS用于流量控制。

TX:发送数据线,应该与目标设备的RX相连接

RX:接收数据线,应该与目标设备的TX相连接

CLK:在同步模式下工作时与目标设备的CLK相连接(主机驱动或从机驱动)

在通信时,USART将数据以数据帧的形式发送出去,每个数据帧由起始位(1Bit)数据位(5~9Bit)校验位(1Bit)停止位(1~2Bit)组成,对于不同的MCU所配备的USART外设,其数据位的可选大小可能不同。

在发送数据时,数据发送器先发送一位逻辑电平为0的起始信号,然后紧跟着发送5~9位的数据,然后发送校验位和停止位,所有数据成一个数据帧,每个数据帧之间有着帧间隔,也就是说各个数据帧之间并不是连续的。在没有数据传输时,线路上的信号始终为逻辑电平1该信号称之为空闲信号。数据在线路上传输时传输方向可以是高位到低位依次传输也可以是低位到高位依次传输,高位优先为:MSB,低位优先为:LSB

参考链接

STM32系统学习——USART(串口通信)

SPI总线

SPI是串行外设接口(Serial Peripheral Interface)的缩写。是Motorola公司推出的一种同步串行接口技术,是一种高速的,全双工,同步的通信总线。该接口使用四根信号线进行连接(SCK、MOSI、MISO、CS),主机与从机的SCK、MOSI、MISO线互相连接,而主机的CS线分别与从机连接,以实现主机可以向任意的从机进行通信,因此该总线适用于具有单个主机的主从结构通信。

SPI通信模式

SPI通信有四种模式,通信双方设备必须工作在同一种模式下,通信模式通过CPOL(时钟极性)和CPHA(时钟相位)进行配置。

Mode0:CPOL=0,CPHA=0,SCLK=0空闲状态,上升沿-数据采样,下降沿-数据发送
Mode1:CPOL=0,CPHA=1,SCLK=0空闲状态,下降沿-数据采样,上升沿-数据发送
Mode2:CPOL=1,CPHA=0,SCLK=1空闲状态,下降沿-数据采样,上升沿-数据发送
Mode3:CPOL=1,CPHA=1,SCLK=1空闲状态,上升沿-数据采样,下降沿-数据发送

其中,对于CPOL与CPHA:

CPOL=0,表示当SCLK=0时处于空闲状态,所以有效状态就是SCLK处于高电平时
CPOL=1,表示当SCLK=1时处于空闲状态,所以有效状态就是SCLK处于低电平时
CPHA=0,表示数据采样是在第1个边沿,数据发送在第2个边沿
CPHA=1,表示数据采样是在第2个边沿,数据发送在第1个边沿

通信协议

SPI通过SCK、MOSI、MISO、CS四个信号线进行通信:

MISO:主设备数据输入,从设备数据输出
MOSI:主设备数据输出,从设备数据输入
SCLK:时钟信号,由主设备产生
CS:片选信号,由主设备用于选择通信的从设备

在通信时,SPI需要先通过CS信号线使能从设备,然后由移位寄存器将并行数据根据通信模式以及SCLK信号由高位到低位(低位或高位)向目标设备发送。

当通信模式为Mode0时,在使能从设备后,当遇到上升沿时,数据接收用的移位寄存器从MISO线上读取一位数据并移位,然后等待下一个上升沿,当遇到下降沿时,数据发送用的移位寄存器将数据的最高(低)位的数据写入MOSI线,然后等待下一个下降沿,依此类推,直到发送完所有的数据。

参考链接

SPI通信协议(SPI总线)学习

IIC总线

IIC(Inter Integrated Circuit,集成电路总线)是一种由 PHILIPS 公司开发的两线式串行总线,用于连接微控制器及其外围设备。它是由数据线 SDA时钟 SCL 构成的串行总线,可发送和接收数据。在 CPU (单片机)与IIC模块之间、IIC模块与IIC模块之间进行双向传送。IIC总线需要严格的遵守时序来实现数据通信。

IIC信号

IIC总线在通信时需要通过起始信号(START)、终止信号(STOP)、应答信号(ACK)来完成通信。当主机发送起始信号时表示数据即将开始发送,当主机发送终止信号时表示所有数据都已发送完成,当从机接收到主机发送的数据后需要发送一个应答信号来表示数据已收到。

起始信号与终止信号

起始信号:当时钟线SCL为高时,数据线SDA由高到低(下降沿)

停止信号:当时钟线SCL为高时,数据线SDA由低到高(上升沿)

另:当SDA和SCL同时为高时,为IIC总线的空闲状态

应答信号

发送器每发送一个字节,就在时钟脉冲9期间释放数据线,由接收器反馈一个应答信号。应答信号为低电平时,规定为有效应答位(ACK简称应答位),表示接收器已经成功接收了该字节;应答信号为高电平时,规定为非应答位(NACK),一般表示接收器接收该字节没有成功。

IIC协议

IIC在通信时通过SDA(信号)与SCL(时钟)来实现设备之间的物理连接,因为其只有一根信号线,因此是半双工通信。

SDA:信号线,用于传输信号

SCL:时钟线,用于同步主从设备的时钟

在IIC通信时,先由主设备发送起始信号紧接着立即发送数据,在所有数据都发送完成后发送终止信号,并等待从设备的应答信号,从设备在收到所有数据后发送应答信号。

一般的,在与某个IIC器件通信时,我们需要获取通过器件地址与寄存器地址,通过这些地址以及组合时序来实现操作IIC器件的某个寄存器。

参考链接

从IIC实测波形入手,搞懂IIC通信

Last modification:March 22nd, 2021 at 09:57 am