通信接口协议(一)三大串行接口协议

目录

(一)UART

(二)IIC

(三)SPI

(四)总结


(一)UART

(1)何为UART

串口作为三大低速接口(UART、IIC、SPI)的其中之一,在通信与调试中起着至关重要的作用。

串口全称为通用异步收发转换器(Universal Asynchronous Receiver/Transmitter)是一种全双工的传输协议。在数据收发的过程,通常在发送数据时会将并行数据转换为串行数据进行发送,在接收数据时会将接收到的串行数据转换回并行数据。

(2)UART组成

串口的通信数据线一般有两根,分别是TX发送和RX接收,通常PC端的TX要连接设备的RX端,反之PC端的RX应连接设备的TX端,方可正常通信。根据电气特性的不同,电信号的电平标准也有不同,如RS232、RS422、RS485等,其中RS232为单入单出,常用作短距离通信;RS422/485为差分输入输出,常用作长距离传输。

(3)UART协议

串口通讯协议的时序讲解_fpgaer0630的博客-CSDN博客_串口时序

UART协议通常每帧数据是由起始位、数据位、校验位和停止位组成的。起始位标志着每帧数据的开始; 数据位则是有效数据;校验位用来检验数据中是否有错,通常有奇校验和偶校验两种,奇校验:数据位中1的个数为奇数,则为奇校验;偶校验:数据位中1的个数为偶数,则为奇校验;停止位标志着一帧的结束。

UART通信过程中存在着一定的数据格式和传输速率,为保证数据传输正确,收发双方应遵循相同的数据格式和传输速率。

数据位可选择为5、6、7、8位,其中8位数据位是最常用的,在实际应用中一般都选择8位数据位;校验位可选择奇校验、偶校验或者无校验位;停止位可选择1位(默认), 1.5或2位。

通信速率常用波特率表示,它表示每秒传输二进制数据的位数,单位是bps(位 /秒),常用的波特率有9600、19200、38400、57600以及115200等。

(二)IIC

(1)何为IIC

IIC的全程是Inter-Integrated Circuits,它是一种两线式串行总线,用以连接MCU和各种外设,是一种同步半双工的传输协议。如今主要用在服务器管理中,管理员可以通过IIC总线查询各个设备的各种参数,确保安全性。

(2)IIC组成

IIC总线是由SDA数据线和SCL时钟线构成的串行总线,只允许收发单独传输数据,在硬件上表现为都需要接一个上拉电阻,各设备都需要挂载到这根总线上,通过器件地址(SLAVE ADDR)识别。IC数据传输速率有标准模式(100 kbps)、快速模式(400 kbps)和高速模式(3.4 Mbps),常作为短距离传输总线。

从IIC实测波形入手,搞懂IIC通信_码农爱学习的博客-CSDN博客

 (3)IIC协议

IIC主要有以下几种状态

空闲状态:SCL和SDA同时处于高电平状态,此时称为空闲状态

起始状态和结束状态:当SCL为高时,SDA产生下拉,定义为总线的起始状态,标志着数据传输的开始;当SCL为高,SDA产生上拉,定义为总线的结束状态,标志着数据传输的结束

数据位传输:由于同步传输,在时钟SCL的配合下,IIC总线会由高位向低位串行传输每一位数据。在传输数据期间,若SCL为高电平,SDA必须保持。只有在SCL为低电平时,SDA才允许进行电平跳变

应答信号与非应答信号:IIC协议所有数据都是以8字节传输的,在第9个时钟脉冲时会释放SDA数据,此时接收机会反馈一个应答信号。应答信号为低电平时,称为有效应答位(称为ACK),简称为应答位),表示接收器接收到有效数据;应答信号为高电平时,称为非应答位(称为NACK),表示接收机接收数据失败。对于ACK的也有一定的要求:在第9个时钟周期前的低电平期间将SDA信号进行下拉,确保在高电平期间为稳定的低电平。

(4)IIC收发逻辑

主机通过IIC总线向从机发送数据

1>首先主机发送1位起始信号,接着将从机的7位地址位后加1位0(0表示主机发送数据给从机,1表示主机从从机接收数据)发送给从机,而后立即清空SDA信号等待从机应答,若从机正确接收到数据则返回ACK;2>主机接收到ACK后会将想要写入的地址位发送给从机,而后立即清空SDA信号等待从机应答,若从机正确接收到数据则向主机反馈ACK;3>主机接收到ACK后将向从机发送想要写入的数据,若从机正确接收到数据则依旧向主机反馈ACK,主机收到ACK后将向从机发送1位停止位表明这1字节数据发送完毕。

主机通过IIC总线从从机获取数据

1>首先主机发送1位起始信号,接着将从机的7位地址位后加1位0(0表示主机发送数据给从机,1表示主机从从机接收数据)发送给从机,而后立即清空SDA信号等待从机应答,若从机正确接收到数据则返回ACK;2>主机接收到ACK后会将想要写入的地址位发送给从机,而后立即清空SDA信号等待从机应答,若从机正确接收到数据则向主机反馈ACK;3>此时与发送略有不同,这时主机会将从机的7位地址位后加1(此时表明需要从从机接收数据)发送给从机,然后立即释放SDA信号,若从机正确接收到数据则返回ACK;4>而后从机占用SDA给主机发送寄存器中的数据,待发送完毕后,主机占用SDA向从机发送1位NACK,而后发送1位停止位表明这1字节数据接收完毕。

(三)SPI

(1)何为spi

与Uart有所不同,Uart通信不存在时钟同步概念,它是靠起始位和停止位来控制每字节的收发,这在硬件设计等问题上存在着缺陷,因此引出了SPI通信协议的概念。

SPI的全称是串行外围设备接口(Serial Peripheral interface),它是一种高速同步全双工传输协议。相比于IIC总线,SPI协议速度更快,可以工作到上百MHZ。SPI协议主要运用EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。

(2)spi组成

spi协议通常由四根信号线组成,单向传输时仅需要三根信号线。

MISO( Master Input Slave Output):主设备数据输入,从设备数据输出;
MOSI(Master Output Slave Input):主设备数据输出,从设备数据输入;
SCLK(Serial Clock):时钟信号,由主设备产生;
CS(Chip Select):从设备使能信号,由主设备控制,一主多从时,CS/SS是从芯片是否被主芯片选中的控制信号,只有片选信号为预先规定的使能信号时(高电位或低电位),主芯片对此从芯片的操作才有效。

SPI具有主、从两种模式,通常由一个主机和单个或多个从机组成(SPI不支持多主机),主机会选择一个从机进行通信,主机发送时钟,从机接收时钟,SPI接口的读写操作都是由主机控制,选择哪一个从机进行交互则是由片选信号来完成。

(3)spi四种模式

SPI总线传输一共有四种模式,这四种模式由时钟极性(CPOL)和时钟相位(CPHA)来决定,CPOL规定时钟SCLK在空闲时是高电平还是低电平,CPHA规定数据是在SCLK的上升沿被采样还是下降沿被采样。

SPI总线的极性--时钟极性:时钟极性决定SPI总线空闲时的时钟信号是高电平还是低电平。CPOL = 1:表示空闲时是高电平;CPOL = 0:表示空闲时是低电平。

SPI总线的相位--时钟相位:时钟相位决定SPI总线从哪个跳变沿开始采样数据。CPHA = 0:在时钟信号SCK的第1个跳变沿采样;CPHA = 1:在时钟信号SCK的第2个跳变沿采样。

SPI 协议详解 - 元享技术

(4)SPI协议

如图当片选CS拉低时,标注着数据传输的开始,不同的从机都有各自的CS信号,当检测到自己的CS信号被拉低时,从机此时明白自己被主机选中,开始与主机通讯;当CS被拉高时,标志着数据传输的结束,标志着这1字节数据传输完毕。SPI 使用 MOSI 及 MISO 信号线来传输数据,使用 SCK 信号线进行数据同步。MOSI 及 MISO 数据线在 SCK 的每个时钟周期传输一位数据,且数据输入输出是同时进行的。

SPI协议详解_耐心的小黑的博客-CSDN博客

 (四)总结

UART、IIC、SPI作为最为常用的三种通信协议,其各自有不同的特点和应用场景,可以根据实际需求进行选择。SPI通信适用于高速、稳定、实时响应的场合;UART通信适用于点对点通信、传输速率比较低的场合;I2C通信适用于多个设备在总线上进行数据传输的场合。

  • 1
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值