WS63 SDK 文档 7021f4f@fbb_ws63
ws63 和 ws63e 解决方案的 SDK 文档
载入中...
搜索中...
未找到
SPI

结构体

struct  hal_spi_xfer_qspi_param
 SPI传输中QSPI的参数。 更多...
 
struct  hal_spi_xfer_sspi_param
 SPI传输中Single SPI的参数。 更多...
 
struct  hal_spi_attr
 SPI基础配置参数定义。 更多...
 
struct  hal_spi_extra_attr
 SPI扩展配置参数定义。 更多...
 
struct  hal_spi_xfer_data
 SPI传输结构体。 更多...
 
struct  hal_spi_dma_cfg_param
 SPI传输中DMA SPI的参数。 更多...
 

类型定义

typedef enum hal_spi_ctrl_id hal_spi_ctrl_id_t
 SPI控制ID定义。
 
typedef enum hal_spi_cfg_frame_format hal_spi_cfg_frame_format_t
 帧格式。
 
typedef enum hal_spi_cfg_clk_cpol hal_spi_cfg_clk_cpol_t
 时钟极性。
 
typedef enum hal_spi_cfg_clk_cpha hal_spi_cfg_clk_cpha_t
 时钟相位。
 
typedef enum hal_spi_cfg_sste hal_spi_cfg_sste_t
 SPI 从机选择切换使能
 
typedef enum hal_spi_trans_mode hal_spi_trans_mode_t
 传输模式。
 
typedef enum hal_spi_frame_size hal_spi_frame_size_t
 数据帧长度。
 
typedef enum hal_spi_frame_format hal_spi_frame_format_t
 SPI数据帧格式。
 
typedef enum hal_spi_trans_type hal_spi_trans_type_t
 SPI传输类型。
 
typedef enum hal_spi_inst_len hal_spi_inst_len_t
 SPI指令长度定义。
 
typedef enum hal_spi_addr_len hal_spi_addr_len_t
 SPI地址长度定义。
 
typedef enum hal_spi_evt_id hal_spi_evt_id_t
 HAL层SPI事件ID的定义
 
typedef struct hal_spi_xfer_qspi_param hal_spi_xfer_qspi_param_t
 SPI传输中QSPI的参数。
 
typedef struct hal_spi_xfer_sspi_param hal_spi_xfer_sspi_param_t
 SPI传输中Single SPI的参数。
 
typedef struct hal_spi_attr hal_spi_attr_t
 SPI基础配置参数定义。
 
typedef struct hal_spi_extra_attr hal_spi_extra_attr_t
 SPI扩展配置参数定义。
 
typedef struct hal_spi_xfer_data hal_spi_xfer_data_t
 SPI传输结构体。
 
typedef struct hal_spi_dma_cfg_param hal_spi_dma_cfg_param_t
 SPI传输中DMA SPI的参数。
 
typedef errcode_t(* hal_spi_callback_t) (spi_bus_t bus, hal_spi_evt_id_t evt, uintptr_t param)
 SPI的回调函数
 
typedef errcode_t(* hal_spi_ctrl_t) (spi_bus_t bus, hal_spi_ctrl_id_t id, uintptr_t param)
 HAL层SPI控制接口。
 

枚举

enum  hal_spi_ctrl_id {
  SPI_CTRL_SET_ATTR , SPI_CTRL_GET_ATTR , SPI_CTRL_SET_EXTRA_ATTR , SPI_CTRL_GET_EXTRA_ATTR ,
  SPI_CTRL_SELECT_SLAVE , SPI_CTRL_CHECK_FIFO_BUSY , SPI_CTRL_SET_DMA_CFG , SPI_CTRL_GET_DMA_DATA_ADDR ,
  SPI_CTRL_EN_RXFI_INT , SPI_CTRL_CHECK_RX_FIFO_EMPTY , SPI_CTRL_EN_TXEI_INT , SPI_CTRL_CHECK_TX_FIFO_FULL ,
  SPI_CTRL_EN_MULTI_MASTER_ERR_INT , SPI_CTRL_SET_TMOD , SPI_CTRL_MAX , SPI_CTRL_ID_INVALID = 0xFF
}
 SPI控制ID定义。 更多...
 
enum  hal_spi_cfg_frame_format { SPI_CFG_FRAME_FORMAT_MOTOROLA_SPI , SPI_CFG_FRAME_FORMAT_TEXAS_SSP , SPI_CFG_FRAME_FORMAT_NS_MICROWIRE , SPI_CFG_FRAME_FORMAT_MAX }
 帧格式。 更多...
 
enum  hal_spi_cfg_clk_cpol { SPI_CFG_CLK_CPOL_0 , SPI_CFG_CLK_CPOL_1 , SPI_CFG_CLK_CPOL_MAX }
 时钟极性。 更多...
 
enum  hal_spi_cfg_clk_cpha { SPI_CFG_CLK_CPHA_0 , SPI_CFG_CLK_CPHA_1 , SPI_CFG_CLK_CPHA_MAX }
 时钟相位。 更多...
 
enum  hal_spi_cfg_sste { SPI_CFG_SSTE_DISABLE , SPI_CFG_SSTE_ENABLE , SPI_CFG_SSTE_MAX }
 SPI 从机选择切换使能 更多...
 
enum  hal_spi_trans_mode {
  HAL_SPI_TRANS_MODE_TXRX = 0 , HAL_SPI_TRANS_MODE_TX , HAL_SPI_TRANS_MODE_RX , HAL_SPI_TRANS_MODE_EEPROM ,
  HAL_SPI_TRANS_MODE_MAX
}
 传输模式。 更多...
 
enum  hal_spi_frame_size { HAL_SPI_FRAME_SIZE_8 = 0x07 , HAL_SPI_FRAME_SIZE_16 = 0x0F , HAL_SPI_FRAME_SIZE_24 = 0x17 , HAL_SPI_FRAME_SIZE_32 = 0x1F }
 数据帧长度。 更多...
 
enum  hal_spi_frame_format {
  HAL_SPI_FRAME_FORMAT_STANDARD = 0 , HAL_SPI_FRAME_FORMAT_DUAL , HAL_SPI_FRAME_FORMAT_QUAD , HAL_SPI_FRAME_FORMAT_OCTAL ,
  HAL_SPI_FRAME_FORMAT_DOUBLE_OCTAL , HAL_SPI_FRAME_FORMAT_SIXT , HAL_SPI_FRAME_FORMAT_MAX_NUM , HAL_SPI_FRAME_FORMAT_NONE = HAL_SPI_FRAME_FORMAT_MAX_NUM
}
 SPI数据帧格式。 更多...
 
enum  hal_spi_trans_type { HAL_SPI_TRANS_TYPE_INST_S_ADDR_S = 0 , HAL_SPI_TRANS_TYPE_INST_S_ADDR_Q , HAL_SPI_TRANS_TYPE_INST_Q_ADDR_Q , HAL_SPI_TRANS_TYPE_MAX = HAL_SPI_TRANS_TYPE_INST_Q_ADDR_Q }
 SPI传输类型。 更多...
 
enum  hal_spi_inst_len {
  HAL_SPI_INST_LEN_0 = 0 , HAL_SPI_INST_LEN_4 , HAL_SPI_INST_LEN_8 , HAL_SPI_INST_LEN_16 ,
  HAL_SPI_INST_LEN_MAX = HAL_SPI_INST_LEN_16
}
 SPI指令长度定义。 更多...
 
enum  hal_spi_addr_len {
  HAL_SPI_ADDR_LEN_0 = 0 , HAL_SPI_ADDR_LEN_4 , HAL_SPI_ADDR_LEN_8 , HAL_SPI_ADDR_LEN_12 ,
  HAL_SPI_ADDR_LEN_16 , HAL_SPI_ADDR_LEN_20 , HAL_SPI_ADDR_LEN_24 , HAL_SPI_ADDR_LEN_28 ,
  HAL_SPI_ADDR_LEN_32 , HAL_SPI_ADDR_LEN_36 , HAL_SPI_ADDR_LEN_40 , HAL_SPI_ADDR_LEN_44 ,
  HAL_SPI_ADDR_LEN_48 , HAL_SPI_ADDR_LEN_52 , HAL_SPI_ADDR_LEN_56 , HAL_SPI_ADDR_LEN_60 ,
  HAL_SPI_ADDR_LEN_MAX = HAL_SPI_ADDR_LEN_60
}
 SPI地址长度定义。 更多...
 
enum  hal_spi_evt_id {
  SPI_EVT_RX_FULL_ISR , SPI_EVT_RX_OVERFLOW_ISR , SPI_EVT_RX_UNDERFLOW_ISR , SPI_EVT_TX_EMPTY_ISR ,
  SPI_EVT_TX_OVERFLOW_ISR , SPI_EVT_MULTI_MASTER_ISR
}
 HAL层SPI事件ID的定义 更多...
 

函数

errcode_t hal_spi_init (spi_bus_t bus, const hal_spi_attr_t *attr, const hal_spi_extra_attr_t *extra_attr, hal_spi_callback_t callback)
 HAL层SPI的初始化接口。
 
errcode_t hal_spi_deinit (spi_bus_t bus)
 HAL层SPI的去初始化接口。
 
errcode_t hal_spi_write (spi_bus_t bus, hal_spi_xfer_data_t *data, uint32_t timeout)
 HAL层SPI发送数据接口。
 
errcode_t hal_spi_read (spi_bus_t bus, hal_spi_xfer_data_t *data, uint32_t timeout)
 HAL层SPI读取数据接口(当timeout为0时会在数据读满或者fifo中没有数据的时候结束)。
 
errcode_t hal_spi_ctrl (spi_bus_t bus, hal_spi_ctrl_id_t id, uintptr_t param)
 HAL层SPI控制接口。
 
errcode_t hal_spi_regs_init (void)
 初始化寄存器基地址列表。
 

详细描述

Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2022-2022. All rights reserved.

Description: Provides HAL SPI
History:
2022-08-08, Create file.

类型定义说明

◆ hal_spi_addr_len_t

SPI地址长度定义。

◆ hal_spi_attr_t

typedef struct hal_spi_attr hal_spi_attr_t

SPI基础配置参数定义。

◆ hal_spi_callback_t

typedef errcode_t(* hal_spi_callback_t) (spi_bus_t bus, hal_spi_evt_id_t evt, uintptr_t param)

SPI的回调函数

◆ hal_spi_cfg_clk_cpha_t

时钟相位。

◆ hal_spi_cfg_clk_cpol_t

时钟极性。

◆ hal_spi_cfg_frame_format_t

◆ hal_spi_cfg_sste_t

SPI 从机选择切换使能

◆ hal_spi_ctrl_id_t

SPI控制ID定义。

◆ hal_spi_ctrl_t

typedef errcode_t(* hal_spi_ctrl_t) (spi_bus_t bus, hal_spi_ctrl_id_t id, uintptr_t param)

HAL层SPI控制接口。

◆ hal_spi_dma_cfg_param_t

SPI传输中DMA SPI的参数。

◆ hal_spi_evt_id_t

HAL层SPI事件ID的定义

◆ hal_spi_extra_attr_t

SPI扩展配置参数定义。

◆ hal_spi_frame_format_t

SPI数据帧格式。

◆ hal_spi_frame_size_t

数据帧长度。

◆ hal_spi_inst_len_t

SPI指令长度定义。

◆ hal_spi_trans_mode_t

传输模式。

◆ hal_spi_trans_type_t

SPI传输类型。

◆ hal_spi_xfer_data_t

SPI传输结构体。

◆ hal_spi_xfer_qspi_param_t

SPI传输中QSPI的参数。

◆ hal_spi_xfer_sspi_param_t

SPI传输中Single SPI的参数。

枚举类型说明

◆ hal_spi_addr_len

SPI地址长度定义。

枚举值
HAL_SPI_ADDR_LEN_0 

0-位地址长度。

HAL_SPI_ADDR_LEN_4 

4-位地址长度。

HAL_SPI_ADDR_LEN_8 

8-位地址长度。

HAL_SPI_ADDR_LEN_12 

12-位地址长度。

HAL_SPI_ADDR_LEN_16 

16-位地址长度。

HAL_SPI_ADDR_LEN_20 

20-位地址长度。

HAL_SPI_ADDR_LEN_24 

24-位地址长度。

HAL_SPI_ADDR_LEN_28 

28-位地址长度。

HAL_SPI_ADDR_LEN_32 

32-位地址长度。

HAL_SPI_ADDR_LEN_36 

36-位地址长度。

HAL_SPI_ADDR_LEN_40 

40-位地址长度。

HAL_SPI_ADDR_LEN_44 

44-位地址长度。

HAL_SPI_ADDR_LEN_48 

48-位地址长度。

HAL_SPI_ADDR_LEN_52 

52-位地址长度。

HAL_SPI_ADDR_LEN_56 

56-位地址长度。

HAL_SPI_ADDR_LEN_60 

60-位地址长度。

HAL_SPI_ADDR_LEN_MAX 

◆ hal_spi_cfg_clk_cpha

时钟相位。

枚举值
SPI_CFG_CLK_CPHA_0 

SPI时钟在第一个数据位中间切换。

SPI_CFG_CLK_CPHA_1 

SPI时钟在第一个数据位开始时切换。

SPI_CFG_CLK_CPHA_MAX 

◆ hal_spi_cfg_clk_cpol

时钟极性。

枚举值
SPI_CFG_CLK_CPOL_0 

SPI的非激活状态为低电平。

SPI_CFG_CLK_CPOL_1 

SPI的非激活状态为高电平。

SPI_CFG_CLK_CPOL_MAX 

◆ hal_spi_cfg_frame_format

帧格式。

枚举值
SPI_CFG_FRAME_FORMAT_MOTOROLA_SPI 

摩托罗拉SPI帧格式。

SPI_CFG_FRAME_FORMAT_TEXAS_SSP 

德州仪器SSP帧格式。

SPI_CFG_FRAME_FORMAT_NS_MICROWIRE 

国家微线帧格式。

SPI_CFG_FRAME_FORMAT_MAX 

◆ hal_spi_cfg_sste

SPI 从机选择切换使能

枚举值
SPI_CFG_SSTE_DISABLE 

SPI 从机选择切换不使能。 当此配置不使能,主机从从机读取数据时,需要一次性将从机发送 队列中的数据读完,否则会出现丢失数据问题。

SPI_CFG_SSTE_ENABLE 

SPI 从机选择切换使能

SPI_CFG_SSTE_MAX 

◆ hal_spi_ctrl_id

SPI控制ID定义。

枚举值
SPI_CTRL_SET_ATTR 

设置基础参数。

SPI_CTRL_GET_ATTR 

获取基础参数。

SPI_CTRL_SET_EXTRA_ATTR 

设置高级参数。

SPI_CTRL_GET_EXTRA_ATTR 

获取高级参数。

SPI_CTRL_SELECT_SLAVE 

选择指定的设备。

SPI_CTRL_CHECK_FIFO_BUSY 

检查SPI是否忙碌状态。

SPI_CTRL_SET_DMA_CFG 

设置DMA的传输使能和数据level。

SPI_CTRL_GET_DMA_DATA_ADDR 

获取DMA的传输数据地址。

SPI_CTRL_EN_RXFI_INT 

使能RX FIFO是否已满中断。

SPI_CTRL_CHECK_RX_FIFO_EMPTY 

判断RX FIFO是否为空。

SPI_CTRL_EN_TXEI_INT 

使能TX FIFO是否为空中断。

SPI_CTRL_CHECK_TX_FIFO_FULL 

判断RX FIFO是否已满。

SPI_CTRL_EN_MULTI_MASTER_ERR_INT 

使能双主机竞争中断。

SPI_CTRL_SET_TMOD 

设置SPI传输模式。

SPI_CTRL_MAX 
SPI_CTRL_ID_INVALID 

◆ hal_spi_evt_id

HAL层SPI事件ID的定义

枚举值
SPI_EVT_RX_FULL_ISR 

接收满中断触发

SPI_EVT_RX_OVERFLOW_ISR 

接收溢出中断触发

SPI_EVT_RX_UNDERFLOW_ISR 

接收空读中断触发

SPI_EVT_TX_EMPTY_ISR 

TX空中断被触发

SPI_EVT_TX_OVERFLOW_ISR 

TX溢出中断被触发

SPI_EVT_MULTI_MASTER_ISR 

双主机竞争中断被触发

◆ hal_spi_frame_format

SPI数据帧格式。

枚举值
HAL_SPI_FRAME_FORMAT_STANDARD 

标准的单线SPI帧格式。

HAL_SPI_FRAME_FORMAT_DUAL 

双线SPI帧格式。

HAL_SPI_FRAME_FORMAT_QUAD 

4线SPI帧格式。

HAL_SPI_FRAME_FORMAT_OCTAL 

8线SPI帧格式。

HAL_SPI_FRAME_FORMAT_DOUBLE_OCTAL 

16线SPI帧格式。

HAL_SPI_FRAME_FORMAT_SIXT 
HAL_SPI_FRAME_FORMAT_MAX_NUM 
HAL_SPI_FRAME_FORMAT_NONE 

◆ hal_spi_frame_size

数据帧长度。

枚举值
HAL_SPI_FRAME_SIZE_8 

8-位串行数据传输。

HAL_SPI_FRAME_SIZE_16 

16-位串行数据传输(暂不支持)。

HAL_SPI_FRAME_SIZE_24 

24-位串行数据传输(暂不支持)。

HAL_SPI_FRAME_SIZE_32 

32-位串行数据传输。

◆ hal_spi_inst_len

SPI指令长度定义。

枚举值
HAL_SPI_INST_LEN_0 

不携带指令。

HAL_SPI_INST_LEN_4 

4-位指令。

HAL_SPI_INST_LEN_8 

8-位指令。

HAL_SPI_INST_LEN_16 

16-位指令。

HAL_SPI_INST_LEN_MAX 

◆ hal_spi_trans_mode

传输模式。

枚举值
HAL_SPI_TRANS_MODE_TXRX 

收发模式。

HAL_SPI_TRANS_MODE_TX 

发送模式。

HAL_SPI_TRANS_MODE_RX 

接收模式。

HAL_SPI_TRANS_MODE_EEPROM 

EEPROM模式。

HAL_SPI_TRANS_MODE_MAX 

◆ hal_spi_trans_type

SPI传输类型。

枚举值
HAL_SPI_TRANS_TYPE_INST_S_ADDR_S 

指令和地址使用单线SPI传输。

HAL_SPI_TRANS_TYPE_INST_S_ADDR_Q 

指令使用单线SPI传输, 地址按照帧格式寄存器的配置传输。

HAL_SPI_TRANS_TYPE_INST_Q_ADDR_Q 

指令和地址都按照帧格式寄存器的配置传输。

HAL_SPI_TRANS_TYPE_MAX 

函数说明

◆ hal_spi_ctrl()

errcode_t hal_spi_ctrl ( spi_bus_t  bus,
hal_spi_ctrl_id_t  id,
uintptr_t  param 
)

HAL层SPI控制接口。

◆ hal_spi_deinit()

errcode_t hal_spi_deinit ( spi_bus_t  bus)

HAL层SPI的去初始化接口。

◆ hal_spi_init()

errcode_t hal_spi_init ( spi_bus_t  bus,
const hal_spi_attr_t attr,
const hal_spi_extra_attr_t extra_attr,
hal_spi_callback_t  callback 
)

HAL层SPI的初始化接口。

◆ hal_spi_read()

errcode_t hal_spi_read ( spi_bus_t  bus,
hal_spi_xfer_data_t data,
uint32_t  timeout 
)

HAL层SPI读取数据接口(当timeout为0时会在数据读满或者fifo中没有数据的时候结束)。

◆ hal_spi_regs_init()

errcode_t hal_spi_regs_init ( void  )

初始化寄存器基地址列表。

◆ hal_spi_write()

errcode_t hal_spi_write ( spi_bus_t  bus,
hal_spi_xfer_data_t data,
uint32_t  timeout 
)

HAL层SPI发送数据接口。