首页 理论教育 基于STM32固件库编程的SPI应用技术

基于STM32固件库编程的SPI应用技术

时间:2023-10-21 理论教育 版权反馈
【摘要】:在外设驱动文件stm32f4xx_spi.h与stm32f4xx_spi.c中我们可以找到SPI初始化结构体、SPI初始化函数与其他SPI相关的驱动函数。图9-12SPI_Cmd()函数说明4.SPI发送数据函数SPI-I2S-SendData()发送数据用SPI_I2S_SendData()函数,这里多了一个I2S的字符。该函数有两个形参,第一个形参是SPI号,第二个形参是需要检查的SPI状态。比如要获取SPI2是否发送缓冲区空,编写函数如下:图9-17SPI_I2S_ITConfig()函数说明FlagStatus Status;Status=SPI_GetFlagStatus;

基于STM32固件库编程的SPI应用技术

要使用SPI,必须使用GPIO的复用功能,因此,使用SPI与使用其他GPIO应用类似,首先必须进行GPIO复用初始化,然后再对SPI进行初始化。在外设驱动文件stm32f4xx_spi.h与stm32f4xx_spi.c中我们可以找到SPI初始化结构体、SPI初始化函数与其他SPI相关的驱动函数。常用的SPI结构体与库函数如下:

1.SPI的初始化结构体

SPI的初始化结构体是SPI_InitTypeDef,在stm32f4xx_spi.h中找到的成员如下:

2.SPI初始化函数SPI-Init()

初始化结构体完成后,使用SPI初始化函数SPI_Init()进行初始化。该函数的说明如图9-11所示。

图9-11 SPI_Init()函数说明

该函数有两个形参,第一个形参是SPI编号,第二个形参是SPI初始化结构体指针。比如使用SPI2作为SPI接口,该函数可写为SPI_Init(SPI2,& SPI_InitStructure)。

3.SPI使能函数SPI-Cmd()

初始化完毕后,开启SPI接口工作,使用SPI_Cmd()函数进行使能。该函数说明如图9-12所示。使能SPI2时,该函数可写为SPI_Cmd(SPI2,ENABLE)。

图9-12 SPI_Cmd()函数说明

4.SPI发送数据函数SPI-I2S-SendData()

发送数据用SPI_I2S_SendData()函数,这里多了一个I2S的字符。I2S是集成电路内置音频总线的意思。STM32将这个总线接口与SPI接口复用在了一起,因此多了I2S的字符。该函数说明如图9-13所示。该函数有两个形参,第一个形参是使用的SPI口,第二个形参是需要发送的无符号整型数据。使用SPI2发送时该函数可写成SPI_I2S_SendData(SPI2,0xA5)。

图9-13 SPI_I2S_SendData()函数说明

5.SPI接收数据函数SPI-I2S-ReceiveData()

接收数据函数有一个形参,返回值为16位无符号数,如图9-14所示。如要读取SPI2的接收数据,可以这样使用函数:

(www.xing528.com)

图9-14 SPI_I2S_ReceiveData()函数说明

uint16_t A;

A=SPI_I2S_ReceiveData(SPI2);

6.SPI中断设置函数SPI-I2S-ITConfig()

与串行通信一样,SPI通信也可以使用中断的方式。SPI_I2S_ITConfig()函数用来使能SPI的中断。函数说明如图9-15所示。函数有三个形参:第一个形参是SPI号;第二个形参确定SPI的中断源,参数可选择SPI_I2S_IT_TXE(发送缓冲空中断)、SPI_I2S_IT_RXNE(接收缓冲非空中断)、SPI_I2S_IT_ERR(错误中断);第三个形参可选择ENABLE或DISABLE。

图9-15 SPI_I2S_ITConfig()函数说明

7.SPI获取中断标志函数SPI-I2S-GetITStatus()

SPI在使用中断时,可以通过函数SPI_I2S_GetITStatus()查询SPI中断状态。函数带返回值SET或者RESET。函数说明如图9-16所示。函数有两个形参,第一个形参是SPI号,第二个形参是状态标志位。比如读取SPI2的接收缓冲非空中断标志,编写函数如下:

图9-16 SPI_I2S_GetITStatus()函数说明

ITStatus SPI_IT_Status;

SPI_IT_Status=SPI_I2S_GetITStatus(SPI2,SPI_I2S_IT_RXNE);

8.SPI获取状态标志函数SPI-I2S-GetFlagStatus()

函数SPI_I2S_GetFlagStatus()用于获取SPI的状态信息,带返回值SET或者RESET。函数说明如图9-17所示。该函数有两个形参,第一个形参是SPI号,第二个形参是需要检查的SPI状态。比如要获取SPI2是否发送缓冲区空,编写函数如下:

图9-17 SPI_I2S_ITConfig()函数说明

FlagStatus Status;

Status=SPI_GetFlagStatus(SPI1,SPI_I2S_FLAG_TXE);

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈