STM32之SPI的使用

本文详细介绍了STM32的SPI通信接口,包括MISO、MOSI、SCK和NSS引脚的功能,强调了在配置SPI时的注意事项,如时序模式匹配和SCK的空闲状态。同时,提到了数据帧格式的选择及其影响。
摘要由CSDN通过智能技术生成

通常SPI通过4个引脚与外部器件相连:

● MISO:主设备输入/从设备输出引脚。该引脚在从模式下发送数据,在主模式下接收数据。

● MOSI:主设备输出/从设备输入引脚。该引脚在主模式下发送数据,在从模式下接收数据。

● SCK:串口时钟,作为主设备的输出,从设备的输入

●NSS:从设备选择。这是一个可选的引脚,用来选择主/从设备。它的功能是用来作为“片选引脚”,让主设备可以单独地与特定从设备通讯,避免数据线上的冲突。从设备的NSS引脚可以由主设备的一个标准I/O引脚来驱动。一旦被使能(SSOE位),NSS引脚也可以作为输出引脚,并在SPI处于主模式时拉低;此时,所有的SPI设备,如果它们的NSS引脚连接到主设备的NSS引脚,则会检测到低电平,如果它们被设置为NSS硬件模式,就会自动进入从设备状态。当配置为主设备、NSS配置为输入引脚(MSTR=1,SSOE=0)时,如果NSS被拉低,则这个SPI设备进入主模式失败状态:即MSTR位被自动清除,此设备进入从模式。

注意:

  1. 在改变CPOL/CPHA位之前,必须清除SPE位将SPI禁止。
  2. 主和从必须配置成相同的时序模式。
    3.SCK的空闲状态必须和SPI_CR1寄存器指定的极性一致(CPOL为’1’时,空闲时应上拉SCK为高电平;CPOL为’0’时,空闲时应下拉SCK为低电平)。
  3. 数据帧格式(8位或16位)由SPI_CR1寄存器的DFF位选择,并且决定发送/接收的数据长度。

编程实现:

#define SPI1_SCK_PORT   GPIOA
#define SPI1_SCK_PIN    GPIO_Pin_5
#define SPI1_MISO_PORT   GPIOA
#define SPI1_MISO_PIN    GPIO_Pin_6                 //MISO 主设备输入从设备输出
#define SPI1_MOSI_PORT   GPIOA
#define SPI1_MOSI_PIN    GPIO_Pin_7             //MOSI 主设备输出 从设备输入
#define SPI1_APB2_GPIO   RCC_APB2Periph_GPIOA   //SPI1所在管脚时钟

#define SPI2_SCK_PORT   GPIOB
#define SPI2_SCK_PIN    GPIO_Pin_13
#define SPI2_MISO_PORT   GPIOB
#define SPI2_MISO_PIN    GPIO_Pin_14
#define SPI2_MOSI_PORT   GPIOB
#define SPI2_MOSI_PIN    GPIO_Pin_15        
#define SPI2_APB1_GPIO   RCC_APB2Periph_GPIOB   //SPI2所在管脚时钟

class SPI
{
private:
    SPI_TypeDef *spiX;
    SPI_InitTypeDef SPI_InitStructure;
    GPI
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值