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

结构体

struct  i2c_data
 I2C发送/接收数据结构定义。 更多...
 
struct  i2c_wait_condition
 I2C发送/接收等待条件数据结构定义。 更多...
 

类型定义

typedef struct i2c_data i2c_data_t
 I2C发送/接收数据结构定义。
 
typedef struct i2c_wait_condition i2c_wait_condition_t
 I2C发送/接收等待条件数据结构定义。
 
typedef void(* i2c_irq_callback_t) (i2c_bus_t bus, uint8_t event)
 i2c中断事件的回调函数,通过 uapi_i2c_register_irq_callback 注册到驱动中。
 

枚举

enum  i2c_irq_event_t { I2C_IRQ_EVT_RX_DONE , I2C_IRQ_EVT_TX_DONE , I2C_IRQ_EVT_I2C_BUSY , I2C_IRQ_EVT_I2C_ERR }
 I2C中断事件枚举。 更多...
 

函数

errcode_t uapi_i2c_master_init (i2c_bus_t bus, uint32_t baudrate, uint8_t hscode)
 根据指定的参数初始化该I2C为主机。
 
errcode_t uapi_i2c_master_write (i2c_bus_t bus, uint16_t dev_addr, i2c_data_t *data)
 将数据从主机写入到从机。有两种方式,一种是手动切换模式,另外一种是自动切换模式,两种方式是静态配置的。 手动切换方式一共有以下三种传输模式,但是不能在同一bus中同时使用。
 
errcode_t uapi_i2c_master_read (i2c_bus_t bus, uint16_t dev_addr, i2c_data_t *data)
 主机接收来自目标I2C从机的数据。有两种方式,一种是手动切换模式,另外一种是自动切换模式,两种方式是静态配置的。 手动切换方式一共有以下三种传输模式,但是不能在同一bus中同时使用。
 
errcode_t uapi_i2c_master_writeread (i2c_bus_t bus, uint16_t dev_addr, i2c_data_t *data)
 主机发送数据到目标I2C从机,并接收来自此从机的数据。有两种方式,一种是手动切换模式,另外一种是自动切换模式,两种方式是静态配置的。 手动切换方式一共有以下三种传输模式,但是不能在同一bus中同时使用。
 
errcode_t uapi_i2c_slave_init (i2c_bus_t bus, uint32_t baudrate, uint16_t addr)
 根据指定的参数初始化该I2C为从机。
 
errcode_t uapi_i2c_slave_write (i2c_bus_t bus, i2c_data_t *data)
 从机将数据发送给主机。有两种方式,一种是手动切换模式,另外一种是自动切换模式,两种方式是静态配置的。 手动切换方式一共有以下三种传输模式,但是不能在同一bus中同时使用。
 
errcode_t uapi_i2c_slave_read (i2c_bus_t bus, i2c_data_t *data)
 从机从主机读取数据。有两种方式,一种是手动切换模式,另外一种是自动切换模式,两种方式是静态配置的。 手动切换方式一共有以下三种传输模式,但是不能在同一bus中同时使用。
 
errcode_t uapi_i2c_set_irq_mode (i2c_bus_t bus, bool irq_en)
 设置是否使用中断模式传输数据。
 
errcode_t uapi_i2c_register_irq_callback (i2c_bus_t bus, i2c_irq_callback_t callback)
 注册I2C中断事件回调函数。
 
errcode_t uapi_i2c_unregister_irq_callback (i2c_bus_t bus)
 取消注册I2C中断事件回调函数。
 
errcode_t uapi_i2c_set_dma_mode (i2c_bus_t bus, bool en)
 使能/去使能DMA模式下I2C传输。
 
errcode_t uapi_i2c_deinit (i2c_bus_t bus)
 去初始化I2C,支持主从机。
 
errcode_t uapi_i2c_set_baudrate (i2c_bus_t bus, uint32_t baudrate)
 对已初始化的I2C重置波特率,支持主从机。
 

详细描述

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

Description: Provides I2C driver api
History:
2022-06-01, Create file.

类型定义说明

◆ i2c_data_t

typedef struct i2c_data i2c_data_t

I2C发送/接收数据结构定义。

◆ i2c_irq_callback_t

typedef void(* i2c_irq_callback_t) (i2c_bus_t bus, uint8_t event)

i2c中断事件的回调函数,通过 uapi_i2c_register_irq_callback 注册到驱动中。

◆ i2c_wait_condition_t

I2C发送/接收等待条件数据结构定义。

枚举类型说明

◆ i2c_irq_event_t

I2C中断事件枚举。

枚举值
I2C_IRQ_EVT_RX_DONE 
I2C_IRQ_EVT_TX_DONE 
I2C_IRQ_EVT_I2C_BUSY 
I2C_IRQ_EVT_I2C_ERR 

函数说明

◆ uapi_i2c_deinit()

errcode_t uapi_i2c_deinit ( i2c_bus_t  bus)

去初始化I2C,支持主从机。

◆ uapi_i2c_master_init()

errcode_t uapi_i2c_master_init ( i2c_bus_t  bus,
uint32_t  baudrate,
uint8_t  hscode 
)

根据指定的参数初始化该I2C为主机。

◆ uapi_i2c_master_read()

errcode_t uapi_i2c_master_read ( i2c_bus_t  bus,
uint16_t  dev_addr,
i2c_data_t data 
)

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

- 手动切换模式包括:

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

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

  • 轮询模式:当传输数据长度小于等于阈值时,默认为轮询模式
  • DMA模式:当传输数据长度大于阈值时,自动切换为DMA模式
    参数
    [in]busI2C总线,参考 i2c_bus_t
    [in]dev_addr主机接收数据的目标从机地址。
    [in]data接收数据的信息指针,参考 i2c_data_t
    返回值
    ERRCODE_SUCC成功。
    Other失败,参考 errcode_t

◆ uapi_i2c_master_write()

errcode_t uapi_i2c_master_write ( i2c_bus_t  bus,
uint16_t  dev_addr,
i2c_data_t data 
)

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

- 手动切换模式包括:

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

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

  • 轮询模式:当传输数据长度小于等于阈值时,默认为轮询模式
  • DMA模式:当传输数据长度大于阈值时,自动切换为DMA模式
    参数
    [in]busI2C总线,参考 i2c_bus_t
    [in]dev_addr主机发送数据的目标从机地址。
    [in]data发送数据的信息指针,参考 i2c_data_t
    返回值
    ERRCODE_SUCC成功。
    Other失败,参考 errcode_t

◆ uapi_i2c_master_writeread()

errcode_t uapi_i2c_master_writeread ( i2c_bus_t  bus,
uint16_t  dev_addr,
i2c_data_t data 
)

主机发送数据到目标I2C从机,并接收来自此从机的数据。有两种方式,一种是手动切换模式,另外一种是自动切换模式,两种方式是静态配置的。 手动切换方式一共有以下三种传输模式,但是不能在同一bus中同时使用。

- 手动切换模式包括:

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

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

  • 轮询模式:当传输数据长度小于等于阈值时,默认为轮询模式
  • DMA模式:当传输数据长度大于阈值时,自动切换为DMA模式
    参数
    [in]busI2C总线,参考 i2c_bus_t
    [in]dev_addr主机接收数据的目标从机地址。
    [in]data接收数据的信息指针,参考 i2c_data_t
    返回值
    ERRCODE_SUCC成功。
    Other失败,参考 errcode_t

◆ uapi_i2c_register_irq_callback()

errcode_t uapi_i2c_register_irq_callback ( i2c_bus_t  bus,
i2c_irq_callback_t  callback 
)

注册I2C中断事件回调函数。

◆ uapi_i2c_set_baudrate()

errcode_t uapi_i2c_set_baudrate ( i2c_bus_t  bus,
uint32_t  baudrate 
)

对已初始化的I2C重置波特率,支持主从机。

◆ uapi_i2c_set_dma_mode()

errcode_t uapi_i2c_set_dma_mode ( i2c_bus_t  bus,
bool  en 
)

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

◆ uapi_i2c_set_irq_mode()

errcode_t uapi_i2c_set_irq_mode ( i2c_bus_t  bus,
bool  irq_en 
)

设置是否使用中断模式传输数据。

◆ uapi_i2c_slave_init()

errcode_t uapi_i2c_slave_init ( i2c_bus_t  bus,
uint32_t  baudrate,
uint16_t  addr 
)

根据指定的参数初始化该I2C为从机。

◆ uapi_i2c_slave_read()

errcode_t uapi_i2c_slave_read ( i2c_bus_t  bus,
i2c_data_t data 
)

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

- 手动切换模式包括:

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

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

  • 轮询模式:当传输数据长度小于等于阈值时,默认为轮询模式
  • DMA模式:当传输数据长度大于阈值时,自动切换为DMA模式
    参数
    [in]busI2C总线,参考 i2c_bus_t
    [in]data接收数据的信息指针,参考 i2c_data_t
    返回值
    ERRCODE_SUCC成功。
    Other失败,参考 errcode_t

◆ uapi_i2c_slave_write()

errcode_t uapi_i2c_slave_write ( i2c_bus_t  bus,
i2c_data_t data 
)

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

- 手动切换模式包括:

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

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

  • 轮询模式:当传输数据长度小于等于阈值时,默认为轮询模式
  • DMA模式:当传输数据长度大于阈值时,自动切换为DMA模式
    参数
    [in]busI2C总线,参考 i2c_bus_t
    [in]data发送数据的信息指针,参考 i2c_data_t
    返回值
    ERRCODE_SUCC成功。
    Other失败,参考 errcode_t

◆ uapi_i2c_unregister_irq_callback()

errcode_t uapi_i2c_unregister_irq_callback ( i2c_bus_t  bus)

取消注册I2C中断事件回调函数。