STM32的SPI

一、SPI功能描述

SPI的框图如下:
在这里插入图片描述
SPI通过4个引脚与外部器件相连:

  • MISO:主设备输入/从设备输出引脚。该引脚在从模式下发送数据,在主模式下接收数据。
  • MOSI:主设备输出/从设备输入引脚。该引脚在主模式下发送数据,在从模式下接收数据。
  • SCK:串口时钟,作为主设备的输出,从设备的输入
  • NSS:从设备选择。这是一个用来选择从设备的(可选的)引脚。这个引脚用来作为“片选引脚”,让主设备可以单独地与特定从设备通讯,避免数据线上发生冲突。从设备的NSS引脚作为输入引脚可以由主设备的一个标准I/O引脚来驱动。如果使能了SSOE位(SPI_CR2[2])NSS引脚也可以作为输出引脚,在SPI处于主模式时将其拉低,此时,所有的NSS引脚连接到主设备的NSS引脚的SPI设备,则会检测到低电平就会自动进入从设备状态(如果它们被设置为NSS硬件模式)。当配置为主设备且NSS配置为输入引脚(MSTR=1,SSOE=0)时,如果NSS被拉低,则这个SPI设备进入主模式失败状态:即MSTR位被自动清除,此设备进入从模式

二、配置SPI为主模式

主模式时,在SCK脚产生串行时钟。
SPI为主模式配置步骤:

  1. 通过SPI_CR1寄存器的BR[2:0]位定义串行时钟波特率。
  2. 选择CPOL和CPHA位,定义数据传输和串行时钟间的相位关系。
  3. 设置DFF位来定义8位或16位数据帧格式。
  4. 配置SPI_CR1寄存器的LSBFIRST位定义帧格式。
  5. NSS硬件输入模式下,需要NSS引脚工作在输入模式,在整个数据帧传输期间应把NSS脚连接到高电平;
    NSS软件输入模式下,需设置SPI_CR1寄存器的SSM位和SSI位。
    如果NSS引脚工作在输出模式,则只需设置SSOE位。
  6. 设置MSTR位(设置为主模式)、设置SPE位(SPI使能)。(只当NSS脚被连到高电平,这些位才能保持置位)。

三、配置SPI为从模式

从模式下,SCK引脚用于接收从主设备来的串行时钟。
SPI为从模式配置步骤:

  1. 设置DFF位以定义数据帧格式为8位或16位。
  2. 选择CPOL和CPHA位来定义数据传输和串行时钟之间的相位关系。
  3. 帧格式(SPI_CR1寄存器中的LSBFIRST位定义的”MSB在前”还是”LSB在前”)必须与主设备相同。
  4. NSS硬件模式下(参考从选择(NSS)脚管理部分),在完整的数据帧(8位或16位)传输过程中,NSS引脚必须为低电平。
    NSS软件模式下,设置SPI_CR1寄存器中的SSM位并清除SSI位。
  5. 清除MSTR位(设置为从模式)、设置SPE位(SPI使能),使相应引脚工作于SPI模式下。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值