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

结构体

struct  spi_dma_config
 SPI DMA配置数据结构定义。 更多...
 

类型定义

typedef hal_spi_attr_t spi_attr_t
 SPI基本属性定义。
 
typedef hal_spi_extra_attr_t spi_extra_attr_t
 SPI扩展属性定义。
 
typedef hal_spi_xfer_data_t spi_xfer_data_t
 SPI传输结构体。
 
typedef struct spi_dma_config spi_dma_config_t
 SPI DMA配置数据结构定义。
 
typedef void(* spi_tx_callback_t) (const void *buffer, uint32_t length)
 SPI发送数据的回调函数,通过 uapi_spi_set_irq_mode 注册到驱动中。
 
typedef void(* spi_rx_callback_t) (const void *buffer, uint32_t length, bool error)
 SPI接收数据的回调函数,通过 uapi_spi_set_irq_mode 注册到驱动中。
 

函数

errcode_t uapi_spi_init (spi_bus_t bus, spi_attr_t *attr, spi_extra_attr_t *extra_attr)
 初始化 SPI。
 
errcode_t uapi_spi_deinit (spi_bus_t bus)
 去初始化 SPI。
 
errcode_t uapi_spi_set_tmod (spi_bus_t bus, hal_spi_trans_mode_t tmod, uint8_t data_frame_num)
 设置SPI的传输模式。
 
errcode_t uapi_spi_set_attr (spi_bus_t bus, spi_attr_t *attr)
 设置SPI的基础配置参数。
 
errcode_t uapi_spi_get_attr (spi_bus_t bus, spi_attr_t *attr)
 读取SPI的基础配置参数。
 
errcode_t uapi_spi_set_extra_attr (spi_bus_t bus, spi_extra_attr_t *extra_attr)
 设置SPI的高级配置参数。
 
errcode_t uapi_spi_get_extra_attr (spi_bus_t bus, spi_extra_attr_t *extra_attr)
 读取SPI的高级配置参数。
 
errcode_t uapi_spi_select_slave (spi_bus_t bus, spi_slave_t cs)
 Master模式下选择需要对通的Slave设备。
 
errcode_t uapi_spi_master_write (spi_bus_t bus, const spi_xfer_data_t *data, uint32_t timeout)
 将数据从主机写入到从机。有两种方式,一种是手动切换模式,另外一种是自动切换模式,两种方式是静态配置的。 手动切换方式一共有以下三种传输模式,但是不能在同一bus中同时使用。
 
errcode_t uapi_spi_master_read (spi_bus_t bus, const spi_xfer_data_t *data, uint32_t timeout)
 从slave读取数据。有两种方式,一种是手动切换模式,另外一种是自动切换模式,两种方式是静态配置的。 手动切换方式一共有以下三种传输模式,但是不能在同一bus中同时使用。
 
errcode_t uapi_spi_master_writeread (spi_bus_t bus, const spi_xfer_data_t *data, uint32_t timeout)
 主机写入和读取数据。有两种方式,一种是手动切换模式,另外一种是自动切换模式,两种方式是静态配置的。 手动切换方式一共有以下两种种传输模式,但是不能在同一bus中同时使用。
 
errcode_t uapi_spi_slave_write (spi_bus_t bus, const spi_xfer_data_t *data, uint32_t timeout)
 从机向主机写入数据。有两种方式,一种是手动切换模式,另外一种是自动切换模式,两种方式是静态配置的。 手动切换方式一共有以下三种传输模式,但是不能在同一bus中同时使用。
 
errcode_t uapi_spi_slave_read (spi_bus_t bus, const spi_xfer_data_t *data, uint32_t timeout)
 从主机读取数据。有两种方式,一种是手动切换模式,另外一种是自动切换模式,两种方式是静态配置的。 手动切换方式一共有以下三种传输模式,但是不能在同一bus中同时使用。
 
errcode_t uapi_spi_slave_writeread (spi_bus_t bus, const spi_xfer_data_t *data, uint32_t timeout)
 从机写入和读取数据。有两种方式,一种是手动切换模式,另外一种是自动切换模式,两种方式是静态配置的。 手动切换方式一共有以下两种种传输模式,但是不能在同一bus中同时使用。
 
errcode_t uapi_spi_set_dma_mode (spi_bus_t bus, bool en, const spi_dma_config_t *dma_cfg)
 使能/去使能DMA模式下SPI传输。
 
errcode_t uapi_spi_set_irq_mode (spi_bus_t bus, bool irq_en, spi_rx_callback_t rx_callback, spi_tx_callback_t tx_callback)
 设置是否使用中断模式在主机模式下传输数据。
 

详细描述

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

Description: Provide SPI driver API
History:
2022-09-15, Create file.

类型定义说明

◆ spi_attr_t

SPI基本属性定义。

◆ spi_dma_config_t

SPI DMA配置数据结构定义。

◆ spi_extra_attr_t

SPI扩展属性定义。

◆ spi_rx_callback_t

typedef void(* spi_rx_callback_t) (const void *buffer, uint32_t length, bool error)

SPI接收数据的回调函数,通过 uapi_spi_set_irq_mode 注册到驱动中。

◆ spi_tx_callback_t

typedef void(* spi_tx_callback_t) (const void *buffer, uint32_t length)

SPI发送数据的回调函数,通过 uapi_spi_set_irq_mode 注册到驱动中。

◆ spi_xfer_data_t

SPI传输结构体。

函数说明

◆ uapi_spi_deinit()

errcode_t uapi_spi_deinit ( spi_bus_t  bus)

去初始化 SPI。

◆ uapi_spi_get_attr()

errcode_t uapi_spi_get_attr ( spi_bus_t  bus,
spi_attr_t attr 
)

读取SPI的基础配置参数。

◆ uapi_spi_get_extra_attr()

errcode_t uapi_spi_get_extra_attr ( spi_bus_t  bus,
spi_extra_attr_t extra_attr 
)

读取SPI的高级配置参数。

◆ uapi_spi_init()

errcode_t uapi_spi_init ( spi_bus_t  bus,
spi_attr_t attr,
spi_extra_attr_t extra_attr 
)

初始化 SPI。

◆ uapi_spi_master_read()

errcode_t uapi_spi_master_read ( spi_bus_t  bus,
const spi_xfer_data_t data,
uint32_t  timeout 
)

从slave读取数据。有两种方式,一种是手动切换模式,另外一种是自动切换模式,两种方式是静态配置的。 手动切换方式一共有以下三种传输模式,但是不能在同一bus中同时使用。

- 手动切换模式包括:

  • 轮询模式
  • DMA模式
  • 中断模式

自动切换模式(通过比较数据长度和阈值的大小自动切换轮询模式与DMA模式, 阈值具体请参考SPI KCONFIG中POLL和DMA自动切换阈值设置)包括:

  • 轮询模式:当传输数据长度小于等于阈值时,默认为轮询模式
  • DMA模式:当传输数据长度大于阈值时,自动切换为DMA模式
    参数
    [in]bus指定的SPI接口,参考 spi_bus_t
    [out]data数据传输指针,参考 spi_xfer_data_t
    [in]timeout当前传输的超时时间(轮询模式下为轮询次数;DMA模式为超时时间,单位:ms;中断模式参数不生效)。
    返回值
    ERRCODE_SUCC成功。
    Other失败,参考 errcode_t

◆ uapi_spi_master_write()

errcode_t uapi_spi_master_write ( spi_bus_t  bus,
const spi_xfer_data_t data,
uint32_t  timeout 
)

将数据从主机写入到从机。有两种方式,一种是手动切换模式,另外一种是自动切换模式,两种方式是静态配置的。 手动切换方式一共有以下三种传输模式,但是不能在同一bus中同时使用。

- 手动切换模式包括:

  • 轮询模式
  • DMA模式
  • 中断模式

自动切换模式(通过比较数据长度和阈值的大小自动切换轮询模式与DMA模式, 阈值具体请参考SPI KCONFIG中POLL和DMA自动切换阈值设置)包括:

  • 轮询模式:当传输数据长度小于等于阈值时,默认为轮询模式
  • DMA模式:当传输数据长度大于阈值时,自动切换为DMA模式
    参数
    [in]bus指定的SPI接口,参考 spi_bus_t
    [in]data数据传输指针,参考 spi_xfer_data_t
    [in]timeout当前传输的超时时间(轮询模式下为轮询次数;DMA模式为超时时间,单位:ms;中断模式参数不生效)。
    返回值
    ERRCODE_SUCC成功。
    Other失败,参考 errcode_t

◆ uapi_spi_master_writeread()

errcode_t uapi_spi_master_writeread ( spi_bus_t  bus,
const spi_xfer_data_t data,
uint32_t  timeout 
)

主机写入和读取数据。有两种方式,一种是手动切换模式,另外一种是自动切换模式,两种方式是静态配置的。 手动切换方式一共有以下两种种传输模式,但是不能在同一bus中同时使用。

- 手动切换模式包括:

  • 轮询模式
  • DMA模式
  • 中断模式

自动切换模式(通过比较数据长度和阈值的大小自动切换轮询模式与DMA模式, 阈值具体请参考SPI KCONFIG中POLL和DMA自动切换阈值设置)包括:

  • 轮询模式:当传输数据长度小于等于阈值时,默认为轮询模式
  • DMA模式:当传输数据长度大于阈值时,自动切换为DMA模式
    参数
    [in]bus指定的SPI接口,参考 spi_bus_t
    [in,out]data数据传输指针,参考 spi_xfer_data_t
    [in]timeout当前传输的超时时间(轮询模式下为轮询次数;DMA模式为超时时间,单位:ms;中断模式参数不生效)。
    返回值
    ERRCODE_SUCC成功。
    Other失败,参考 errcode_t

◆ uapi_spi_select_slave()

errcode_t uapi_spi_select_slave ( spi_bus_t  bus,
spi_slave_t  cs 
)

Master模式下选择需要对通的Slave设备。

◆ uapi_spi_set_attr()

errcode_t uapi_spi_set_attr ( spi_bus_t  bus,
spi_attr_t attr 
)

设置SPI的基础配置参数。

◆ uapi_spi_set_dma_mode()

errcode_t uapi_spi_set_dma_mode ( spi_bus_t  bus,
bool  en,
const spi_dma_config_t dma_cfg 
)

使能/去使能DMA模式下SPI传输。

◆ uapi_spi_set_extra_attr()

errcode_t uapi_spi_set_extra_attr ( spi_bus_t  bus,
spi_extra_attr_t extra_attr 
)

设置SPI的高级配置参数。

◆ uapi_spi_set_irq_mode()

errcode_t uapi_spi_set_irq_mode ( spi_bus_t  bus,
bool  irq_en,
spi_rx_callback_t  rx_callback,
spi_tx_callback_t  tx_callback 
)

设置是否使用中断模式在主机模式下传输数据。

◆ uapi_spi_set_tmod()

errcode_t uapi_spi_set_tmod ( spi_bus_t  bus,
hal_spi_trans_mode_t  tmod,
uint8_t  data_frame_num 
)

设置SPI的传输模式。

◆ uapi_spi_slave_read()

errcode_t uapi_spi_slave_read ( spi_bus_t  bus,
const spi_xfer_data_t data,
uint32_t  timeout 
)

从主机读取数据。有两种方式,一种是手动切换模式,另外一种是自动切换模式,两种方式是静态配置的。 手动切换方式一共有以下三种传输模式,但是不能在同一bus中同时使用。

- 手动切换模式包括:

  • 轮询模式
  • DMA模式
  • 中断模式

自动切换模式(通过比较数据长度和阈值的大小自动切换轮询模式与DMA模式, 阈值具体请参考SPI KCONFIG中POLL和DMA自动切换阈值设置)包括:

  • 轮询模式:当传输数据长度小于等于阈值时,默认为轮询模式
  • DMA模式:当传输数据长度大于阈值时,自动切换为DMA模式
    参数
    [in]bus指定的SPI接口,参考 spi_bus_t
    [out]data数据传输指针,参考 spi_xfer_data_t
    [in]timeout当前传输的超时时间(轮询模式下为轮询次数;DMA模式为超时时间,单位:ms;中断模式参数不生效)。
    返回值
    ERRCODE_SUCC成功。
    Other失败,参考 errcode_t

◆ uapi_spi_slave_write()

errcode_t uapi_spi_slave_write ( spi_bus_t  bus,
const spi_xfer_data_t data,
uint32_t  timeout 
)

从机向主机写入数据。有两种方式,一种是手动切换模式,另外一种是自动切换模式,两种方式是静态配置的。 手动切换方式一共有以下三种传输模式,但是不能在同一bus中同时使用。

- 手动切换模式包括:

  • 轮询模式
  • DMA模式
  • 中断模式

自动切换模式(通过比较数据长度和阈值的大小自动切换轮询模式与DMA模式, 阈值具体请参考SPI KCONFIG中POLL和DMA自动切换阈值设置)包括:

  • 轮询模式:当传输数据长度小于等于阈值时,默认为轮询模式
  • DMA模式:当传输数据长度大于阈值时,自动切换为DMA模式
    参数
    [in]bus指定的SPI接口,参考 spi_bus_t
    [in]data数据传输指针,参考 spi_xfer_data_t
    [in]timeout当前传输的超时时间(轮询模式下为轮询次数;DMA模式为超时时间,单位:ms;中断模式参数不生效)。
    返回值
    ERRCODE_SUCC成功。
    Other失败,参考 errcode_t

◆ uapi_spi_slave_writeread()

errcode_t uapi_spi_slave_writeread ( spi_bus_t  bus,
const spi_xfer_data_t data,
uint32_t  timeout 
)

从机写入和读取数据。有两种方式,一种是手动切换模式,另外一种是自动切换模式,两种方式是静态配置的。 手动切换方式一共有以下两种种传输模式,但是不能在同一bus中同时使用。

- 手动切换模式包括:

  • 轮询模式
  • DMA模式
  • 中断模式

自动切换模式(通过比较数据长度和阈值的大小自动切换轮询模式与DMA模式, 阈值具体请参考SPI KCONFIG中POLL和DMA自动切换阈值设置)包括:

  • 轮询模式:当传输数据长度小于等于阈值时,默认为轮询模式
  • DMA模式:当传输数据长度大于阈值时,自动切换为DMA模式
    参数
    [in]bus指定的SPI接口,参考 spi_bus_t
    [in,out]data数据传输指针,参考 spi_xfer_data_t
    [in]timeout当前传输的超时时间(轮询模式下为轮询次数;DMA模式为超时时间,单位:ms;中断模式参数不生效)。
    返回值
    ERRCODE_SUCC成功。
    Other失败,参考 errcode_t