STM32-SPI的理解

STM32在芯片内部已经集成了SPI接口,用户只需配置SPI并复用映射到相应的IO口就行。

一、SPI的特点:

      1.全双工同步通信       

      2.一主多从(主机控制从机)

      3.至少需要4根线,3根线也可以(用于单相传输)


STM32-SPI的理解_第1张图片


STM32-SPI的理解_第2张图片
多个从器件

二、SPI接口总线

      MISO:主输入/从输出数据。此引脚可用于在从模式下发送数据和在主模式下接收数据

      MOSI:主输出/从输入数据。此引脚可用于在主模式下发送数据和在从模式下接收数据

      SCLK:用于 SPI 主器件的串行时钟输出以及 SPI 从器件的串行时钟输入

      NSS:从器件选择。这是用于选择从器件的可选引脚(片选)




    STM32的SPI一旦配置成主模式,SPI_CR1的SSI就已经置1了,此位的值将作用到NSS引脚上,      并忽略 NSS 引脚的 IO 值


      NSS的配置:    

                            -软件管理NSS:

                                                    1.配置为输出:SPI_CR1的SSOE置1(SSOE:使能输出)

                                                    2.配置为输入:SSM与SSI置1(如果已配置为主模式,SSI就不需要在置高了)

                            -硬件管理NSS:

                                                    1.STM32的SPI配置为主模式时,SSI已经置1,此时的硬件NSS引脚可以给外界使用。如果主从的NSS连接在一起,则可以由主机的NSS去片选从机

                                                     2.STM32的SPI没有配置为主机模式时,硬件NSS一定要置高电平


三、通信过程

接收过程:数据收到后,先存储到内部接收缓冲区中;

发送过程:先将数据存储到内部发送缓冲区中,然后发送数据。

对 SPI_DR 寄存器(数据寄存器)的读访问将返回接收缓冲值,而对 SPI_DR 寄存器的写访问会将写入的数据存储到发送缓冲区中。


四、初始化配置

1.初始化GPIO口

2.复用映射SPI接口到GPIO口

3.使能SPI时钟总线:RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1,ENABLE)

4.配置初始化的参数:SPI_Init(SPI1,&SPI_Initstructure)

5.使能SPI外设:SPI_Cmd(SPI1,ENABLE);


STM32-SPI的理解_第3张图片
初始化的参数配置

你可能感兴趣的:(STM32-SPI的理解)