【通信协议——串口类】

主要介绍一下SPI,IIC,USART通信协议。

一、SPI通信协议介绍

SPI 串口外围设备接口,基于高速全双工总线的通信协议。广泛用于ADC、LCD设备与MCU之间。
学习协议从两个层面进行分析。物理层和协议层。

1.物理层

SPI通讯需要使用4条线:3条总线和1条片选。SPI还是遵循主从模式,3条总线分别是SCK、MOSI和MISO,片选线为nSS(低电平有效),SPI协议适用于一主多从的工作场景:
(1) nSS(Slave Select):片选信号线,用于选中SPI从设备。每个从设备独立拥有这条nSS信号线,占据主机的一个引脚。设备的其他总线是并联到SPI主机的,即无论多少个从设备,都共同使用这3条总线。当从设备上的nSS引脚被置拉低时表明该从设备被主机选中。
(2) SCK(Serial Clock):时钟信号线,通讯数据同步用。时钟信号由通讯主机产生,它决定了SPI的通讯速率。
(3) MOSI(Master Ouput Slave Input):主机(数据)输出/从设备(数据)输入引脚,即这条信号线上传输从主机到从机的数据。
(4) MISO(Master Input Slave Ouput):主机(数据)输入/从设备(数据)输出引脚,即这条信号线上传输从机从到主机的数据主从机通过两条信号线来传输数据,那么自然是全双工通讯的了。之前的I2C通讯,数据只在一条SDA线上传输,主从机数据交互只能采用半双工。

2.SPI协议层

请添加图片描述
如上为SPI通讯时序图,nSS、SCK、MOSI信号均由主机产生,MISO信号由从机产生。在nSS为低电平的前提下,MOSI和MISO信号才有效,在每个时钟周期MOSI和MISO传输一位数据。
跟I2C通讯类似,SPI通讯也需要通讯的起始/结束信号,有效数据和同步时钟。

2.1 通讯的起始/结束信号

图中的nSS信号由高电平变为低电平即为SPI通讯的起始信号,反过来,nSS信号由低电平变为高电平即为SPI通讯的结束信号。当从机检测到自身的nSS引脚被拉低时就知道自己被主机选中,准备和主机进行通讯。

2.2 有效数据的采集

图中红色框框即为有效数据被采集的时间点,"CPOL = 0"所在的脉冲信号表示的是用于进行数据同步的SCK,MOSI和MISO线上的数据在每个SCK时钟周期传输一位数据,注意,数据的输入/输出是可以同时进行的。
由图可见,在SCK为偶数边沿(在这里该边沿为下降沿)时,数据得到有效采样,时钟相位(CPHA)=1,也就是说,在这个时刻,MISO和MOSI的数据有效,高电平表示数据1,低电平表示数据0,在其它时刻数据并无效,可以理解为 为下一次MISO和MOSI的数据传输做准备。
数据在传输中,高位在先还是低位在先,SPI协议并无明确规定,但是数据要在主从机中正确传输,自然双方要先约定好,一般会采用高位在先(MSB)方式传输。
时钟极性(CPOL)和时钟相位(CPHA):
时钟极性(CPOL)指通讯设备处于空闲状态(SPI开始通讯前、nSS线无效)时,SCK的状态。**CPOL = 0:SCK在空闲时为低电平。CPOL = 1:SCK在空闲时为高电平。**时钟相位(CPHA)指数据的采样时刻位于SCK的偶数边沿采样还是奇数边沿采样。CPHA = 0:在SCK的奇数边沿采样,上升沿发数据,下降沿收数据。CPHA = 1:在SCK的偶数边沿采样。下降沿发数据,上升沿读数据。

总结:
SPI的采样时刻并非由上升沿/下降沿决定的。注意的是,**在数据采样时刻,MOSI和MOSI的电平为有效电平,数据不能在这个时刻进行切换注意的是,**在非采样时刻MOSI和MISO上的信号才能切换。
请添加图片描述
请添加图片描述
工作模式三应该是1.1
工作模式为0时,上升沿接数据,下降沿发数据。工作模式为1时,上升沿发数据,下降沿接数据。
工作模式为2时,下降沿接数据,上升沿发数据。工作模式为3时,下降沿发数据,上升沿接数据。

二、IIC通信

IIC(inter-integrated Circuit集成电路总线)总线支持设备之间的短距离通信,用于处理器和一些外围设备之间的接口,它需要两根信号线来完成信息交换。串行数据(SDA) 和串行时钟 (SCL) 线在连接到总线的器件间传递信息。每个器件都有一个唯一的地址识别。IIC也具备冲突检测和仲裁的功能来防止错误产生。

1、IIC协议

I2C 总线在传送数据过程中共有三种类型信号, 它们分别是:开始信号、结束信号和应答
空闲状态: II2C总线的SDA和SCL两条信号线同时处于高电平时,规定为总线的空闲状态。此时各个器件的输出级场效应管均处在截止状态,即释放总线,由两条信号线各自的上拉电阻把电平拉高
请添加图片描述
请添加图片描述

开始信号:当SCL为高期间,SDA由高到低的跳变,开始传数据。
停止信号:当SCL为高期间,SDA由低到高的跳变,结束传输数据。
应答信号:每个字节传输完成后的下一个时钟信号。当SCL为高期间,SDA为低,表示一个应答信号。
非应答信号:每个字节传输完成后的下一个时钟信号,SCL为高期间,SDA为低,表示一个应答信号。
注:起始信号和结束信号总是由主设备产生。

2、通信过程

1.主机发送起始信号启用总线。
2.主机发送一个字节数据指明从机地址和后续字节的传送方向。
3.被寻址的从机发送应答信号回应主机。
4.发送器发送一个字节数据。
5.接受器发送应答信号回应发送器。
…(循环步骤4、5)
n.通信完成后主机发送停止信号释放总线。

3、数据帧格式

I2C总线上传送的数据信号是广义的,既包括地址信号,又包括真正的数据信号。在起始信号后必须传送一个从机的地址(7位),第8位是数据的传送方向位(R/T),用“0”表示主机发送数据(T),“1”表示主机接收数据(R)。每次数据传送总是由主机产生的终止信号结束。但是,若主机希望继续占用总线进行新的数据传送,则可以不产生终止信号,马上再次发出起始信号对另一从机进行寻址。
在总线的一次数据传送过程中,可以有以下几种组合方式:
a、主机向从机发送数据,数据传送方向在整个传送过程中不变:请添加图片描述
b、主机在第一个字节后,立即从从机读数据请添加图片描述
c、在传送过程中,当需要改变传送方向时,起始信号和从机地址都被重复产生一次,但两次读/写方向位正好反相。请添加图片描述
注:有阴影部分表示数据由主机向从机传送,无阴影部分则表示数据由从机向主机传送。 A表示应答, A非表示非应答(高电平)。S表示起始信号,P表示终止信号。

三、串口通信协议

1、串口基本概念

串口被描述为通用同步异步收发器(USART)。以异步串行数据格式在外部设备之间进行全双工数据交换。USART利用波特率发生器提供波特率选择。它支持同步单向通信和半双工单线通信,也支持LIN(局部互联网),还可以使用DMA方式,实现高速数据通信。按位进行传输的异步通信的通信方式。
USART通过3个引脚与其他设备连接在一起,任何USART双向通信至少需要2个引脚:接受数据输入(RX)和发送数据输出(TX)。

2、串口的工作方式

一般有两种工作方式:查询与中断。
查询:串口程序不断地循环查询,查看当前数据是否需要传送。
中断:平时串口只要打开中断即可。
STM32异步通信定义的参数:
请添加图片描述
STM32串口通信过程:请添加图片描述

3、串行通信和并行通信

串行通信:
串行通信是指使用一条数据线,将数据一位一位地一次传输,每一位占据固定地时间长度。
通讯特点:传输线少,长距离传送时成本低。数据传送控制比并行通讯复杂。
并行通讯:
并行通讯通常是将数据字节地各位用多条数据线同时进行传输。
通讯特点:控制简单,传输速度快,成本高,抗干扰能力差。

4、异步通信和同步通信

异步通信:
异步通信是指通信的发送与接收设备使用各自地时钟控制数据地发送和接受的过程。发送和接收设备的时钟尽可能一致。
异步通信是以字符为单位进行传输,字符与字符之间的间隙是任意的,但是每个字符中的各位是以固定的时间传送的,即字符之间不一定有位间隔的整数倍的关系,但是同一字符内的各位之间的距离均为位间隔的整数倍。
异步通讯的特点:不要求收发双方时钟的严格一致,实现容易,设备开销较少,但是每个字符要附加2-3位用于起止位,各帧之间还有间隔,因此传输效率不高。

同步通信:
同步通信要建立发送方与接收方时钟的直接控制,是双方达到完全同步。
发送方和接收方同步通信的两种实现方法:外同步和自同步。
单工、半双工、全双工。

对比IIC和SPI

相同点:
均采用串行、同步的方式。
均采用TTL电平,传输距离不会太长和应用场景类似。
均采用主从方式工作。
不同点:
IIC为半双工、SPI为全双工。
IIC有应答机制,SPI无应答机制。
IIC通过向总线广播从机地址来寻址,SPI通过向对应从机发送使能片选信号来寻址。
SPI片选信号线占用资源多,但是快。节省时间。IIC节省资源。
IIC的时钟极性和时钟相位固定,SPI的时钟极性和时钟相位可调。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值