首页 > 编程知识 正文

spi需要上拉电阻吗,spi传输协议

时间:2023-05-05 08:36:21 阅读:51359 作者:3368

1.SPI协议

SPI协议是摩托罗拉公司提倡的通信协议(Serial Peripheral Interface ),也就是串行外围设备接口,是一种高速全双工的通信总线。 在ADC、LCD等设备和MCU之间广泛使用,要求通信速度高时。

1.1SPI物理层

SPI通信设备之间的常用连接方法:

SPI通信使用3条总线和单选线,3条总线分别为SCK、MOSI、MISO,单选线为SS。 以下介绍它们的作用。

(1) ss ) slaveselect ) :从设备中选择信号线。 经常称为芯片选择信号线,也称为NSS、CS。 以下记为NSS。 因此,SPI通信将NSS线变为低电平作为开始信号,将NSS线被提升作为结束信号。

)2) sck (串行时钟) :用于通信数据同步的时钟信号线。 通信速度由通信主机决定,设备支持的最高时钟频率不同。 例如,STM32的SPI时钟频率最大为fpclk/2,如果两个设备之间进行通信,则通信速度限制为低速设备。

)3) mosi(masteroutput,Slave Input ) :主站输入输出/从站输入端子。 主机的数据从该信号线输出,从站从该信号线读取主机发送的数据。 也就是说,这条线上的数据方向是从主机到从机。

)4) miso(masterinput,Slave Output ) :主站输入输出端子。 主机从该信号线读取数据,从站的数据从该信号线输出到主机。 也就是说,这条线上的数据方向是从站到主机。

1.2 SPI协议层

SPI通信的通信时间

1.2.1通信的开始和停止信号

在图25-2中的符号1中,NSS信号线从高变为低,是SPI通信的开始信号。 NSS是各从站各自独占的信号线,从站在自己的NSS线上检测到开始信号后,知道自己被选为主机,开始准备与主机通信。 图中的符号6表示NSS信号从低变为高,是SPI通信的停止信号,表示本次的通信结束,从机的选择状态被解除。

1.2.2 .数据有效性

SPI使用MOSI和MISO信号线传输数据,使用SCK信号线同步数据。 MOSI和MISO数据线在SCK的每个时钟周期传输1位数据,数据输入输出同时进行。 数据传输时,MSB先行或LSB先行没有硬性规定,但为了保证两个SPI通信设备之间使用相同的协议,一般采用图25-2的MSB先行模式。 看图中的2、3、4、5的符号,MOSI和MISO的数据在SCK的上升边缘期间输出变化,并在SCK的下降边缘进行采样。 也就是说,在SCK下降沿时,MOSI和MISO数据有效,高电平表示数据“1”,低电平表示数据“0”。 在其它时间点,数据是无效的,并且MOSI和MISO为下一显示数据做准备。 SPI的一次数据传输可以以8位或16位为单位进行,一次传输的单位数没有限制。

1.2.3CPOL/CPHA及通信模式

2STM32的SPI特性和体系结构

2.1STM32的SPI外围设备介绍

STM32的SPI外围设备可以用作通信的主设备和从设备,最高SCK时钟频率为FPclk/2(STM32f103型号芯片的默认fpclk1为72MHz,fpclk2为36MHz ),以及SPI协议的四个数据帧长度可以设置为8位或16位,可以设置数据MSB的前置或LSB,还支持双线全双工(上一节介绍的是此模式)、双线单向和单线模式。 其中,在双线单向模式下,可以同时使用MOSI和MISO数据线向一个方向传输数据,传输速度可以翻倍。 另一方面,单线模式可以减少硬件布线。 当然,这个速度会受到影响。 只说明双线全双工模式。

2.2分析STM 32的SPI体系结构

2.2.1通信端子

2.2.2时钟控制逻辑

2.2.3数据控制逻辑

SPI的MOSI和MISO都与数据移位寄存器连接,数据移位寄存器的数据源和目的地的接收、发送缓冲器以及MISO、MOSI线路。 向外部发送数据时,数据移位寄存器以“发送缓冲器”为数据源,逐位通过数据线发送数据; 从外部接收数据时,数据移位寄存器将从数据线采样的数据逐位存储在“接收缓冲器”中。 通过向SPI的“数据寄存器DR”写入数据,或通过“数据寄存器DR”进行通信,可以获取接收缓冲区的内容。 其中,数据帧长度可以在“控制寄存器CR1”的“DFF位”中配置为8位和16位模式; 设置“LSBFIRST位”后,可以选择MSB是先行还是LSB先行。

2.2.4总体控制逻辑

整体控制逻辑负责整个SPI外围设备的协调。 控制逻辑的动作模式因设定的“控制寄存器(CR1/CR2 )”的参数而异。 基本控制参数包括上述SPI模式、波特率、LSB前置、主从模式和单向模式。 外围设备工作时,控制逻辑根据外围设备的工作状态修改“状态寄存器(SR )”。 只要读取与状态寄存器相关的寄存器位,就可以知道SPI的动作状态。 此外,控制逻辑根据请求负责SPI中断信号的发生器、DMA请求和NSS信号线的控制。 在实际应用中,不使用STM32 SPI外围设备的标准NSS信号线,而是更容易地使用普通的GPIO,软件控制其电平输出,产生通信开始和停止信号。

2.3通信流程

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。