HW SPI

来自拉普兰德Wiki
跳转至: 导航搜索

固件说明

HW_SPI.c和HW_SPI.h是SPI模块的固件驱动文件,这里定义了SPI初始化函数、SPI主机读写函数等相关函数。

结构体

SPI_InitTypeDef

SPI初始化结构体
变量 描述 取值 初始化
SPI_Type *SPI_SPIx 选择SPIx SPI0、SPI1、SPI2 必须初始化
uint8 SPI_ModeSelect 选择SPIx 工作模式(主机\从机) SPI_MODE_MASTER、SPI_MODE_SLAVE 不必须初始化,默认主机工作模式
uint8 SPI_SckDivider 选择SPIx SCK总线分频系数,SCK总线频率 = BUS_CLK_MHZ/ SCK_DIV_XX SPI_SCK_DIV_2、SPI_SCK_DIV_4、SPI_SCK_DIV_6、SPI_SCK_DIV_8、SPI_SCK_DIV_16、SPI_SCK_DIV_32、SPI_SCK_DIV_64、SPI_SCK_DIV_128、

SPI_SCK_DIV_256、SPI_SCK_DIV_512、SPI_SCK_DIV_1024、SPI_SCK_DIV_2048、SPI_SCK_DIV_4096 、SPI_SCK_DIV_8192、SPI_SCK_DIV_16384 、SPI_SCK_DIV_32768

必须初始化
boolean SPI_EnableTxFIFO 使能Tx FIFO方式 TRUE - 使能Tx FIFO方式

FALSE - 禁止Tx FIFO方式

不必须初始化,默认禁止Tx FIFO方式,采用传统SPI方式
boolean SPI_EnableRxFIFO 使能Rx FIFO方式 TRUE - 使能Rx FIFO方式

FALSE - 禁止Rx FIFO方式

不必须初始化,默认禁止Rx FIFO方式
boolean SPI_TxCompleteIntEnable 使能发送完成中断 TRUE - 使能发送完成中断

FALSE - 禁止发送完成中断

不必须初始化,默认禁止发送完成中断
boolean SPI_QueueEndIntEnable 选择使能发送队列结束中断 TRUE -使能发送队列结束中断

FALSE - 禁止发送队列结束中断

不必须初始化,默认禁止发送完成中断
boolean SPI_TxFIFO_UnderflowIntEnable 选择使能txFIFO为空中断 TRUE -使能txFIFO为空中断

FALSE - 禁止txFIFO为空中断

不必须初始化,默认禁止txFIFO为空中断
boolean SPI_RxFIFO_OverflowIntEnable 选择使能rxFIFO溢出中断 TRUE -使能rxFIFO溢出中断

FALSE - 禁止rxFIFO溢出中断

不必须初始化,默认禁止rxFIFO溢出中断
boolean SPI_TxFIFO_FillIntEnable 选择使能txFIFO填充中断 TRUE -使能txFIFO填充中断

FALSE - 禁止txFIFO填充中断

不必须初始化,默认禁止txFIFO填充中断
boolean SPI_RxFIFO_DrainIntEnable 选择使能rxFIFO提取中断 TRUE -使能rxFIFO提取中断

FALSE - 禁止rxFIFO提取中断

不必须初始化,默认禁止rxFIFO提取中断
boolean SPI_TxFIFO_RequestSelect TxFIFO请求方式选择 SPI_FIFO_INTREQUEST -产生中断请求

SPI_FIFO_DMAREQUEST - 产生DMA请求

不必须初始化,默认为SPI_FIFO_INTREQUEST
boolean SPI_RxFIFO_RequestSelect RxFIFO请求方式选择 SPI_FIFO_INTREQUEST -产生中断请求

SPI_FIFO_DMAREQUEST - 产生DMA请求

不必须初始化,默认为SPI_FIFO_INTREQUEST
PortPinsEnum_Type SPI_Pcs0Pin Pcs0引脚,每个SPIx对应不同的Pcs0Pin SPI0-PTA14、*PTC4

SPI1-PTB10、*PTE4
SPI2-PTD11、*PTB20

不必须初始化、默认值为带*的引脚
PortPinsEnum_Type SPI_Pcs1Pin Pcs1引脚,每个SPIx对应不同的Pcs1Pin SPI0-PTC3、*PTD4

SPI1-PTB9、*PTE0
SPI2-*PTD15

不必须初始化、默认值为带*的引脚
PortPinsEnum_Type SPI_Pcs2Pin Pcs2引脚,每个SPIx对应不同的Pcs2Pin SPI0-PTC2、*PTD5

SPI1-*PTE5

不必须初始化、默认值为带*的引脚
PortPinsEnum_Type SPI_Pcs3Pin Pcs3引脚,每个SPIx对应不同的Pcs3Pin SPI0-PTC1、*PTD6

SPI1-*PTE6

不必须初始化、默认值为带*的引脚
PortPinsEnum_Type SPI_Pcs4Pin Pcs4引脚,每个SPIx对应不同的Pcs4Pin SPI0-*PTC0 不必须初始化、默认值为带*的引脚
PortPinsEnum_Type SPI_Pcs5Pin Pcs5引脚,每个SPIx对应不同的Pcs5Pin SPI0-*PTB23 不必须初始化、默认值为带*的引脚
PortPinsEnum_Type SPI_SckPin Sck引脚,每个SPIx对应不同的SckPin SPI0-PTA15、*PTC5

SPI1-PTB11、*PTE2
SPI2-PTD12、*PTB21

不必须初始化、默认值为带*的引脚
PortPinsEnum_Type SPI_MosiPin MOSI引脚,每个SPIx对应不同的MosiPin SPI0-PTA16、*PTC6

SPI1-PTB16、*PTE1
SPI2-PTD13、*PTB22

不必须初始化、默认值为带*的引脚
PortPinsEnum_Type SPI_MisoPin MISO引脚,每个SPIx对应不同的MisoPin SPI0-PTA17、*PTC7

SPI1-PTB17、*PTE3
SPI2-PTD14、*PTB23

不必须初始化、默认值为带*的引脚
SPI_ISR_CALLBACK SPI_TxCompleteIntIsr 发送完成中断回调函数 函数必须为无返回值,无参数(eg. void isr(void);) 不必须初始化、如未初始化则不会触发中断
SPI_ISR_CALLBACK SPI_QueueEndIntIsr 发送队列结束中断回调函数 函数必须为无返回值,无参数(eg. void isr(void);) 不必须初始化、如未初始化则不会触发中断
SPI_ISR_CALLBACK SPI_TxFIFO_UnderflowIntIsr txFIFO为空中断回调函数 函数必须为无返回值,无参数(eg. void isr(void);) 不必须初始化、如未初始化则不会触发中断
SPI_ISR_CALLBACK SPI_RxFIFO_OverflowIntIsr rxFIFO溢出中断回调函数 函数必须为无返回值,无参数(eg. void isr(void);) 不必须初始化、如未初始化则不会触发中断
SPI_ISR_CALLBACK SPI_TxFIFO_FillIntIsr txFIFO填充中断回调函数 函数必须为无返回值,无参数(eg. void isr(void);) 不必须初始化、如未初始化则不会触发中断
SPI_ISR_CALLBACK SPI_RxFIFO_DrainIntIsr rxFIFO提取中断回调函数 函数必须为无返回值,无参数(eg. void isr(void);) 不必须初始化、如未初始化则不会触发中断

变量

函数

LPLD_SPI_Init()

函数原型

uint8 LPLD_SPI_Init(SPI_InitTypeDef )

描述

SPI初始化函数

形参

类型 名称 描述 取值
SPI_InitTypeDef spi_init_structure SPI初始化结构体 结构体定义见SPI_InitTypeDef

输出

0--配置错误
1--配置成功

LPLD_SPI_Deinit()

函数原型

uint8 LPLD_SPI_Deinit(SPI_InitTypeDef )

描述

SPI反初始化函数

形参

类型 名称 描述 取值
SPI_InitTypeDef spi_init_structure SPI初始化结构体 结构体定义见SPI_InitTypeDef

输出

0--配置错误
1--配置成功

LPLD_SPI_EnableIrq()

函数原型

uint8 LPLD_SPI_EnableIrq(SPI_InitTypeDef )

描述

SPI使能外设中断

形参

类型 名称 描述 取值
SPI_InitTypeDef spi_init_structure SPI初始化结构体 结构体定义见SPI_InitTypeDef

输出

0--配置错误
1--配置成功

LPLD_SPI_DisableIrq()

函数原型

uint8 LPLD_SPI_DisableIrq(SPI_InitTypeDef )

描述

SPI禁止外设中断

形参

类型 名称 描述 取值
SPI_InitTypeDef spi_init_structure SPI初始化结构体 结构体定义见SPI_InitTypeDef

输出

0--配置错误
1--配置成功

LPLD_SPI_Master_WriteRead()

函数原型

uint8 LPLD_SPI_Master_WriteRead(SPI_Type * ,uint8 ,uint8 ,uint8)

描述

SPI主机读写函数

形参

类型 名称 描述 取值
SPI_Type* spix SPI选择 SPI0 -选择SPI0模块

SPI1 -选择SPI1模块
SPI2 -选择SPI2模块

uint8 data 要发送数据 单位为一个字节,8位
uint8 pcsx CS片选端口号 SPI_PCS0 -0号片选(SPI0、SPI1、SPI2含有)

SPI_PCS1 -1号片选(SPI0、SPI1、SPI2含有)
SPI_PCS2 -2号片选(SPI0、SPI1含有)
SPI_PCS3 -3号片选(SPI0、SPI1含有)
SPI_PCS4 -4号片选(SPI0含有)
SPI_PCS5 -5号片选(SPI0含有)

uint8 pcs_state 一帧数据传输完成后CS的状态 SPI_PCS_ASSERTED -保持片选有效,PCS信号保持为低电平

SPI_PCS_INACTIVE -片选无效,PCS信号变为高电平

输出

读取从机8位的数据

LPLD_SPI_Master_Read()

函数原型

uint8 LPLD_SPI_Master_Read(SPI_Type *)

描述

SPI主机读取从机数据

形参

类型 名称 描述 取值
SPI_Type* spix SPI选择 SPI0 -选择SPI0模块

SPI1 -选择SPI1模块
SPI2 -选择SPI2模块

输出

读取从机8位的数据

LPLD_SPI_Master_Write(()

函数原型

void LPLD_SPI_Master_Write(SPI_Type * ,uint8 ,uint8 ,uint8)

描述

SPI主机写函数

形参

类型 名称 描述 取值
SPI_Type* spix SPI选择 SPI0 -选择SPI0模块

SPI1 -选择SPI1模块
SPI2 -选择SPI2模块

uint8 data 要发送数据 单位为一个字节,8位
uint8 pcsx CS片选端口号 SPI_PCS0 -0号片选(SPI0、SPI1、SPI2含有)

SPI_PCS1 -1号片选(SPI0、SPI1、SPI2含有)
SPI_PCS2 -2号片选(SPI0、SPI1含有)
SPI_PCS3 -3号片选(SPI0、SPI1含有)
SPI_PCS4 -4号片选(SPI0含有)
SPI_PCS5 -5号片选(SPI0含有)

uint8 pcs_state 一帧数据传输完成后CS的状态 SPI_PCS_ASSERTED -保持片选有效,PCS信号保持为低电平

SPI_PCS_INACTIVE -片选无效,PCS信号变为高电平

其他

一帧数据传输完成后PCS状态宏定义

该宏定义用于确定一帧数据传输完成后SPI片选信号的状态,以下是该宏定义的取值。
宏定义名 描述
SPI_PCS_ASSERTED 一帧数据传输完成后,PCS片选信号继续保持选中状态,即为低工作电平
SPI_PCS_INACTIVE 一帧数据传输完成后,PCS片选信号由低电平变为高电平,片选失效

SPI PCS宏定义

该宏定义用于选取PCS片选通道,每次调用时可以用“或”的方式选取多个片选通道。
宏定义名 描述
SPI_PCS0 SPI片选0通道,SPI0、SPI1、SPI2均含有,取值为0x01
SPI_PCS1 SPI片选1通道,SPI0、SPI1、SPI2均含有,取值为0x02
SPI_PCS2 SPI片选2通道,SPI0、SPI1含有,取值为0x04
SPI_PCS3 SPI片选3通道,SPI0、SPI1含有,取值为0x08
SPI_PCS4 SPI片选4通道,仅SPI0含有,取值为0x10
SPI_PCS5 SPI片选5通道,仅SPI0含有,取值为0x20

wangsong