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)
  • 函数说明:获取当前中断状态
  • 参数说明:
    • 输入参数:
      • base:指定SPI模块基址
    • 返回参数: 返回当前中断状态,作为位字段枚举 以下值:
      • 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)
  • 函数说明:检查SPI基址
  • 参数说明:
    • 输入参数:
      • base指定:SPI模块基址
    • 返回参数:
15.SPI_enableModule(uint32_t base)
  • 函数说明:启用串行外围接口
  • 参数说明:
    • 输入参数:
      • base指定:SPI模块基址
    • 返回参数:
16.SPI_disableModule(uint32_t base)
  • 函数说明:禁用串行外围接口
  • 参数说明:
    • 输入参数:
      • base指定:SPI模块基址
    • 返回参数:
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)
  • 函数说明:获取传输FIFO状态
  • 参数说明:
    • 输入参数:
      • base是SPI端口的基址。
    • 返回参数:
21.SPI_getRxFIFOStatus(uint32_t base)
  • 函数说明:获取接收FIFO状态
  • 参数说明:
    • 输入参数:
      • base是SPI端口的基址。
    • 返回参数:
22.SPI_isBusy(uint32_t base)
  • 函数说明:确定SPI变送器是否繁忙。
  • 参数说明:
    • 输入参数:
      • base是SPI端口的基址。
    • 返回参数:
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中的数据,然后从接收缓冲区读取
  • 参数说明:
    • 输入参数:
      • base : SPI模块的基地址
    • 返回参数:
29.SPI_writeDataBlockingNonFIFO(uint32_t base, uint32_t data)
  • 函数说明:等待传输缓冲区清空,然后向其中写入数据
  • 参数说明:
    • 输入参数:
      • base : SPI模块的基地址
      • data:通过SPI传输的左对齐数据
    • 返回参数:
30.SPI_readDataBlockingNonFIFO(uint32_t base)
  • 函数说明:等待数据被接收,然后从缓冲区读取数据
  • 参数说明:
    • 输入参数:
      • base : SPI模块的基地址
    • 返回参数:
31.SPI_enableTriWire(uint32_t base)
  • 函数说明:启用SPI 3线模式
    • base : SPI模块的基地址
  • 参数说明:
    • 输入参数:
    • 返回参数:
32.SPI_disableTriWire(uint32_t base)
  • 函数说明:关闭SPI 3线模式
  • 参数说明:
    • 输入参数:
      • base : SPI模块的基地址
    • 返回参数:
33.SPI_enableLoopback(uint32_t base)
  • 函数说明:启用SPI环回模式
  • 参数说明:
    • 输入参数:
      • base : SPI模块的基地址
    • 返回参数:
34.SPI_disableLoopback(uint32_t base)
  • 函数说明:关闭SPI环回模式
  • 参数说明:
    • 输入参数:
      • base : SPI模块的基地址
    • 返回参数:
35.SPI_setPTESignalPolarity(uint32_t base, SPI_PTEPolarity polarity)
  • 函数说明:设置外围设备选择(SPIPTE)信号极性
  • 参数说明:
    • 输入参数:
      • param-base是SPI端口的基址
      • polarity是SPIPTE信号极性
    • 返回参数:
36.SPI_enableHighSpeedMode(uint32_t base)
  • 函数说明:启用SPI高速模式
  • 参数说明:
    • 输入参数:
      • base : SPI模块的基地址
    • 返回参数:
37.SPI_disableHighSpeedMode(uint32_t base)
  • 函数说明:关闭SPI高速模式
  • 参数说明:
    • 输入参数:
      • base : SPI模块的基地址
    • 返回参数:
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)
  • 函数说明:启用trasnmit
  • 参数说明:
    • 输入参数:
      • base : SPI模块的基地址
    • 返回参数:
41.SPI_disableTalk(uint32_t base)
  • 函数说明:关闭trasnmit
  • 参数说明:
    • 输入参数:
      • base : SPI模块的基地址
    • 返回参数:
42.SPI_reset(uint32_t base)
  • 函数说明:重置SPI
  • 参数说明:
    • 输入参数:
      • base : SPI模块的基地址
    • 返回参数: