STM32之SPI库函数介绍
来源:互联网 发布:域名 购买 编辑:程序博客网 时间:2024/06/06 04:02
首先SPI的一些基本介绍参照相关芯片的库函数或者使用手册,以下介绍SPI库函数的基本用法和参数的定义。
1.SPI_DeInit函数的功能是将外设SPIx寄存器重设为默认值。输入参数SPIx可以是1和2,是用来选择SPI外设的。
2.SPI_Init函数的功能是根据SPI_InitStruct中指定的参数初始化外设SPIx寄存器。SPI_InitDefType的结构体是定义在文件stm32f10x_spi.h里。
typedef struct
{
u16 SPI_Direction;//用于设置SPI单向或者双向数据模式。
u16 SPI_Mode;//用于设置SPI的工作模式;
u16 SPI_DataSize;//用于设置SPI数据大小;
u16 SPI_CPOL;//用于选择串行时钟的稳态;
u16 SPI_CPHA;//用于设置位捕捉的时钟活动沿;
u16 SPI_NSS;//用于指定NSS信号由硬件(NSS引脚)还是软件(SSI位)管理
u16 SPI_BaudRatePrescaler;//用于定义比特率预分频的值,该值用于设置发送和接收的SCK时钟
u16 SPI_FirstBit;//用于指定数据传输从MSB位还是LSB位开始
u16 SPI_CRCPolynomial;//定义用于CRC值计算的多项式
}SPI_InitTypeDef;
其中每一个参数初始化可取的值可以查询相关的手册得到,以下用一个例子来说明每一个参数的初始化使用情况。
/*依据SPI_InitTsructure中指定的参数初始化SPI1
SPI_InitTypeDef SPI_InitStructure;
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;//SPI设置双线双向全双工
SPI_InitStructure.SPI_Mode = SPI_Mode_Master;//设置为主SPI;
SPI_InitStructure.SPI_DataSize = SPI_DataSize_16b;//SPI发送接收16位帧;
SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;//时钟悬空高;
SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;//数据捕获于第2个时钟沿;
SPI_InitStructure.SPI_NSS = SPI_NSS_Hard;//NSS由外部引脚管理
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_128;//比特率预分频为128;
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;//数据传输从MSB位开始
SPI_InitStructure.SPI_CRCPolynomial =7;//CRC计算的初值为7;
SPI(SPI1,SPI_InitStructure);
3.SPI_Cmd函数的功能是使能或者失能SPI外设。
SPI_Cmd(SPI1,ENABLE);
4.SPI_ITCinfig函数的功能是使能或者失能指定的SPI中断,该函数可取的参数值是SPI_IT_TXE/RXNE/ERR:发送缓存空中断频屏蔽/接受缓存非空中断屏蔽/错误中断屏蔽。
SPI_ITConfig(SPI2,SPI_IT_TXE,ENABLE);
5.SPI_DMACmd函数的功能是使能或者失能指定SPI的DMA请求。该函数可取的值为SPI_DMAReq_Tx/Rx:选择Tx/Rx缓存DMA传输请求。
SPI_DMACmd(SPI2,SPI_CmdRq_Tx,ENABLE);
6.SPI_SendData函数的功能是通过外设SIPx发送一个数据
SPI_SendData(SPI1,0XA5);
7.SPI_ReceiveData函数的功能是返回通过SPIx最近接受的数据,其中接收到的数据是16位的数据。
u16 ReceiveData;
ReceiveData = SPI_ReceiveData(SPI2);
8.SPI_GetFlagStatus函数的功能是检查指定的SPI标志位置位与否。一共有4种可取值:SPI_FLAG_BSY/OVR/MODF/RXNE:忙/超出/模式错误/接收缓存非空标志位。
9.SPI_ClearFlag函数的功能是清楚SPIx的待处理标志位。
SPI_ClearFlag(SPI2,SPI_FLAG_OVER);
10.spi_GetITStatus函数的功能是检查指定的SP中断发生与否。参数可取的值为:SPI_IT_OVR/MODF/CRC/RXNE/TXE.
ITStatus = Status;
Status = SPI_GetITStatus(SPI1,SPI_IT_OVR);
11.SPI_ClearITPendingBit函数的功能是清除SPIx的中断处理位。
SPI_ClearITPendingBit(SPI2,SPI_IT_CRCERR);
- STM32之SPI库函数介绍
- STM32之RCC库函数介绍以及应用
- STM32之RCC库函数介绍2
- STM32之BKP后备域库函数介绍
- STM32之ADC库函数的介绍
- STM32的SPI初始化 库函数3.5
- STM32之RTC实时时钟库函数介绍(1)
- STM32之SPI
- STM32之SPI
- STM32之SPI模式
- STM32-SPI之OLED
- STM32之SPI通信
- STM32时钟库函数RCC_DeInit介绍
- STM32时钟库函数RCC_DeInit介绍
- STM32 USART库函数介绍2
- STM32之SPI的思考
- stm32之spi总结1
- STM32之SPI的使用
- 软件测试工程师基础技能+
- 请求被中止: 未能创建 SSL/TLS 安全通道,以及解决方法。
- 可以进行在线编程的网站
- 【NOIP 2011 Day1 T1】铺地毯(模拟)
- java基本类型(内置类型)取值范围
- STM32之SPI库函数介绍
- 如何使用 Xcode8 进行开发调试
- Material Design下面的Toolbar的一些使用
- JVM性能调优监控工具jps、jstack、jmap、jhat、jstat使用详解
- SimulateIDFA,新一代iOS设备的广告追踪解决方案
- jedis操作redis
- ES6学习10(Generator)
- 移动端的自适配/js控制
- BZOJ 1878: [SDOI2009]HH的项链 树状数组+乱搞