SPI外设
1.SPI_setConfig(uint32_t base, uint32_t lspclkHz, SPI_TransferProtocol protocol,SPI_Mode mode, uint32_t bitRate, uint16_t dataWidth)
- 函数说明:用于配置串行外设接口(SPI)。它设置了SPI的协议、操作模式、比特率和数据宽度。这是初始化或修改SPI模块设置的基础函数,允许用户根据硬件需求或特定的通信标准调整SPI的行为。
- 参数说明:
- 输入参数:
- base:SPI模块的基地址
- lspclkHz:提供给SPI模块的低速外设时钟频率
- SPI_TransferProtocol protocol: 指定数据传输协议,这个参数定义了数据帧的格式。可选值包括:
- SPI_PROT_POL0PHA0: 时钟极性0,相位0
- SPI_PROT_POL0PHA1:时钟极性0,相位1
- SPI_PROT_POL1PHA0:时钟极性1,相位0
- SPI_PROT_POL1PHA1:时钟极性1,相位1
- SPI_Mode mode:定义SPI模块的操作模式,可以是控制器模式或外设模式,以及是否禁用串行输出线。可选值包括:
- SPI_MODE_CONTROLLER:控制器模式
- SPI_MODE_PERIPHERAL:外设模式
- SPI_MODE_CONTROLLER_OD:控制器模式,输出禁用
- SPI_MODE_PERIPHERAL_OD:外设模式,输出禁用
- bitRate:SPI的通信速率,不能超过lspclkHz / 4,lspclkHz / bitRate的值不能大于128
- dataWidth:每帧传输的数据位数
- 返回参数:/
2.SPI_setBaudRate(uint32_t base, uint32_t lspclkHz, uint32_t bitRate)
- 函数说明:配置串行外围接口的波特率
- 参数说明:
- 输入参数:
- base:指定SPI模块基址
- lspclkHz:提供给SPI模块的低速外设时钟频率
- bitRate:指定时钟频率,不能超过lspclkHz / 4,lspclkHz / bitRate的值不能大于128
- 返回参数:/
3.SPI_enableInterrupt(uint32_t base, uint32_t intFlags)
- 函数说明:这个函数用于启用特定的SPI中断。它根据提供的中断标志位来启用一个或多个SPI中断类型,使得当相关的SPI事件发生时,如传输完成、接收溢出等,能够生成中断信号。
- 参数说明:
- 输入参数:
- base:指定SPI模块基址
- intFlags: 指定要启用的中断类型的标志位
- 返回参数:/
4.SPI_disableInterrupt(uint32_t base, uint32_t intFlags)
- 函数说明:用于禁用指定的SPI中断。通过清除在SPI控制器中的中断掩码寄存器相应的位,该函数阻止相应的中断类型触发中断处理器。
- 参数说明:
- 输入参数:
- base:指定SPI模块基址
- intFlags: 指定要启用的中断类型的标志位
- 返回参数:/
5.SPI_getInterruptStatus(uint32_t base)
- 函数说明:获取当前中断状态
- 参数说明:
- 输入参数:
- 返回参数:
返回当前中断状态,作为位字段枚举
以下值:
- SPI_INT_RX_OVERRUN:接收超限中断
- SPI_INT_RX_DATA_TX_EMPTY:数据已接收,传输为空
- SPI_INT_RXFF-RX FIFO:电平中断
- SPI_INT_RXFF_OVERFLOW-RX FIFO:溢出
- SPI_INT_TXFF-TX FIFO:电平中断
6.SPI_clearInterruptStatus(uint32_t base, uint32_t intFlags)
- 函数说明:清除SPI中断源
- 参数说明:
- 输入参数:
- base:指定SPI模块基址
- intFlags:是要清除的中断源的位掩码,可以由以下值的位字段组成:
- SPI_INT_RX_OVERRUN
- SPI_INT_RX_DATA_TX_EMPTY:通过读取接收信号被清除接收缓冲区,因此通常不需要使用此方法清除它
- SPI_INT_RXFF
- SPI_INT_RXFF_OVERFLOW
- SPI_INT_TXFF
- 返回参数:/
7.SPI_transmit24Bits(uint32_t base, uint32_t data, uint16_t txDelay)
- 函数说明:此函数可用于传输24位数据字,24位字数据被划分为三个字节的数据
- 参数说明:
- 输入参数:
- base:指定SPI模块基址
- Data:是通过SPI传输的数据
- txDelay:指定串行时钟周期数延迟时间
- 返回参数:/
8.SPI_transmit32Bits(uint32_t base, uint32_t data, uint16_t txDelay)
- 函数说明:
- 参数说明:
- 输入参数:此函数可用于传输32位数据字
- base:指定SPI模块基址
- Data:是通过SPI传输的数据
- txDelay:指定串行时钟周期数延迟时间
- 返回参数:/
9.SPI_receive16Bits(uint32_t base, SPI_endianess endianness, uint16_t dummyData, uint16_t txDelay)
- 函数说明:SPI_receive16Bits函数用于接收16位的数据字。通过发送虚拟数据dummyData来启动SPI事务以从SPI总线上接收实际数据
- 参数说明:
- 输入参数:
- base: SPI模块的基地址
- endianness: 指定接收数据的端序。可以使用两个值中的一个:
- SPI_LITTLE_ENDIAN - 小端
- SPI_BIG_ENDIAN - 大端
- dummyData: 虚拟数据,通过发送这个数据触发SPI事务,从而从SPI总线接收实际数据
- txDelay: 每个字完成后的串行时钟周期延迟
- 返回参数:
- SPI_readDataNonBlocking:接收到的16位数据字
10.SPI_receive24Bits(uint32_t base, SPI_endianess endianness, uint16_t dummyData, uint16_t txDelay)
- 函数说明:SPI_receive24Bits函数用于接收24位的数据字。通过发送虚拟数据dummyData来启动SPI事务以从SPI总线上接收实际数据
- 参数说明:
- 输入参数:
- base: SPI模块的基地址
- endianness: 指定接收数据的端序。可以使用两个值中的一个:
- SPI_LITTLE_ENDIAN - 小端
- SPI_BIG_ENDIAN - 大端
- dummyData: 虚拟数据,通过发送这个数据触发SPI事务,从而从SPI总线接收实际数据
- txDelay: 每个字完成后的串行时钟周期延迟
- 返回参数:
- SPI_readDataNonBlocking:接收到的24位数据字
11.SPI_receive32Bits(uint32_t base, SPI_endianess endianness, uint16_t dummyData, uint16_t txDelay)
- 函数说明:SPI_receive32Bits函数用于接收32位的数据字。通过发送虚拟数据dummyData来启动SPI事务以从SPI总线上接收实际数据
- 参数说明:
- 输入参数:
- base: SPI模块的基地址
- endianness: 指定接收数据的端序。可以使用两个值中的一个:
- SPI_LITTLE_ENDIAN - 小端
- SPI_BIG_ENDIAN - 大端
- dummyData: 虚拟数据,通过发送这个数据触发SPI事务,从而从SPI总线接收实际数据
- txDelay: 每个字完成后的串行时钟周期延迟
- 返回参数:
- SPI_readDataNonBlocking:接收到的32位数据字
12.SPI_pollingNonFIFOTransaction(uint32_t base, uint16_t charLength, uint16_t data)
- 函数说明:此函数用于启动指定字符的SPI事务
- 参数说明:
- 输入参数:
- base:指定SPI模块基址
- charLength:指定SPI事务的SPI字符长度
- data:指定了要传输的数据
- 返回参数:
0
13.SPI_pollingFIFOTransaction(uint32_t base, uint16_t charLength, uint16_t *pTxBuffer,uint16_t *pRxBuffer, uint16_t numOfWords, uint16_t txDelay)
- 函数说明:用于启动具有指定字符长度和N个数据字的SPI事务
- 参数说明:
- 输入参数:
- base指定:SPI模块基址
- charLength:指定SPI事务的SPI字符长度
- pTxBuffer:指定传输缓冲区的指针
- pRxBuffer:指定接收缓冲区的指针
- numOfWords:指定要发送/接收的数据数量
- txDelay: 每个字完成后的串行时钟周期延迟
- 返回参数:/
14.SPI_isBaseValid(uint32_t base)
15.SPI_enableModule(uint32_t base)
16.SPI_disableModule(uint32_t base)
17.SPI_setcharLength(uint32_t base, uint16_t charLength)
- 函数说明:设置SPI事务的字符长度
- 参数说明:
- 输入参数:
- base指定:SPI模块基址
- charLength指定SPI事务的字符长度
- 返回参数:
18.SPI_setFIFOInterruptLevel(uint32_t base, SPI_TxFIFOLevel txLevel, SPI_RxFIFOLevel rxLevel)
- 函数说明:设置生成中断的FIFO级别
- 参数说明:
- 输入参数:
- base是SPI端口的基址。
- txLevel是传输FIFO中断级别,指定为:
- SPI_FIFO_TX0
- SPI_FIFO _TX1
- SPI _FIFO_TX2
- SPI_FIFO_TX16
- rxLevel是接收FIFO中断级别,指定为:
- SPI_FIFO_RX0
- SPI_FIFO _RX1
- SPI _FIFO_RX2
- SPI_FIFO_RX16
- 返回参数:
19.SPI_getFIFOInterruptLevel(uint32_t base, SPI_TxFIFOLevel *txLevel, SPI_RxFIFOLevel *rxLevel)
- 函数说明:获取生成中断的FIFO级别
- 参数说明:
- 输入参数:
- base是SPI端口的基址。
- txLevel是传输FIFO中断级别,指定为:
- SPI_FIFO_TX0
- SPI_FIFO _TX1
- SPI _FIFO_TX2
- SPI_FIFO_TX16
- rxLevel是接收FIFO中断级别,指定为:
- SPI_FIFO_RX0
- SPI_FIFO _RX1
- SPI _FIFO_RX2
- SPI_FIFO_RX16
- 返回参数:
20.SPI_getTxFIFOStatus(uint32_t base)
21.SPI_getRxFIFOStatus(uint32_t base)
22.SPI_isBusy(uint32_t base)
23.SPI_enableDMA(uint32_t base, bool tx, bool rx)
- 函数说明:启用指定的SPI模块的DMA功能
- 参数说明:
- 输入参数:
- base : SPI模块的基地址
- tx : 一个布尔值,用于指示是否启用发送(Tx)DMA功能
- rx : 一个布尔值,用于指示是否启用接收(Rx)DMA功能
- 返回参数:
24.SPI_disableDMA(uint32_t base, bool tx, bool rx)
- 函数说明:关闭指定的SPI模块的DMA功能
- 参数说明:
- 输入参数:
- base : SPI模块的基地址
- tx : 一个布尔值,用于指示是否启用发送(Tx)DMA功能
- rx : 一个布尔值,用于指示是否启用接收(Rx)DMA功能
- 返回参数:
25.SPI_writeDataNonBlocking(uint32_t base, uint32_t data)
- 函数说明:将数据元素放入SPI传输缓冲区。
- 参数说明:
- 输入参数:
- base : SPI模块的基地址
- data:通过SPI传输的左对齐数据
- 返回参数:
26.SPI_readDataNonBlocking(uint32_t base)
- 函数说明:从SPI接收缓冲区获取数据元素
- 参数说明:
- 输入参数:base : SPI模块的基地址
- 返回参数:
27.SPI_writeDataBlockingFIFO(uint32_t base, uint32_t data)
- 函数说明:等待FIFO中的空间,然后将数据放入传输缓冲区
- 参数说明:
- 输入参数:
- base : SPI模块的基地址
- data:通过SPI传输的左对齐数据
- 返回参数:
28.SPI_readDataBlockingFIFO(uint32_t base)
- 函数说明:等待FIFO中的数据,然后从接收缓冲区读取
- 参数说明:
29.SPI_writeDataBlockingNonFIFO(uint32_t base, uint32_t data)
- 函数说明:等待传输缓冲区清空,然后向其中写入数据
- 参数说明:
- 输入参数:
- base : SPI模块的基地址
- data:通过SPI传输的左对齐数据
- 返回参数:
30.SPI_readDataBlockingNonFIFO(uint32_t base)
- 函数说明:等待数据被接收,然后从缓冲区读取数据
- 参数说明:
31.SPI_enableTriWire(uint32_t base)
32.SPI_disableTriWire(uint32_t base)
33.SPI_enableLoopback(uint32_t base)
34.SPI_disableLoopback(uint32_t base)
35.SPI_setPTESignalPolarity(uint32_t base, SPI_PTEPolarity polarity)
- 函数说明:设置外围设备选择(SPIPTE)信号极性
- 参数说明:
- 输入参数:
- param-base是SPI端口的基址
- polarity是SPIPTE信号极性
- 返回参数:
36.SPI_enableHighSpeedMode(uint32_t base)
37.SPI_disableHighSpeedMode(uint32_t base)
38.SPI_setTxFifoTransmitDelay(uint32_t base, uint16_t delay)
- 函数说明:配置FIFO传输延迟
- 参数说明:
- 输入参数:
- base:是SPI端口的基址
- delay:Tx FIFO延迟按周期配置
- 返回参数:
39.SPI_setEmulationMode(uint32_t base, SPI_EmulationMode mode)
- 函数说明:设置SPI仿真模式
- 参数说明:
- 输入参数:
- base:是SPI端口的基址
- mode是仿真模式,参数可以是以下之一:
- SPI_EMULATION_STOP_MIDWAY
- SPI_EMULATION_STOP_AFTER_TRANSMIT
- SPI_EMULATION_FREE_RUN-SPI
- 返回参数:
40.SPI_enableTalk(uint32_t base)
41.SPI_disableTalk(uint32_t base)
42.SPI_reset(uint32_t base)