XFusion API v1.3.0
载入中...
搜索中...
未找到

同步半双工串行通信总线。 更多...

i2c 的协作图:

结构体

struct  _xf_hal_i2c_config_t
 对移植者,用于对接 i2c 设置的参数。 更多...
 

类型定义

typedef uint32_t xf_i2c_num_t
 i2c 序号。
 
typedef enum _xf_hal_i2c_address_width_t xf_hal_i2c_address_width_t
 i2c 从机地址宽度。
 
typedef enum _xf_hal_i2c_hosts_t xf_hal_i2c_hosts_t
 i2c 主从模式。
 
typedef enum _xf_hal_i2c_mem_addr_en_t xf_hal_i2c_mem_addr_en_t
 i2c 从机内存地址是否启用。
 
typedef enum _xf_hal_i2c_mem_addr_width_t xf_hal_i2c_mem_addr_width_t
 i2c 从机内存地址宽度。
 
typedef enum _xf_hal_i2c_cmd_t xf_hal_i2c_cmd_t
 对移植者,用于对接 i2c 指令的命令。
 
typedef struct _xf_hal_i2c_config_t xf_hal_i2c_config_t
 对移植者,用于对接 i2c 设置的参数。
 

枚举

enum  _xf_hal_i2c_address_width_t { _XF_HAL_I2C_ADDRESS_WIDTH_BASE = 0 , XF_HAL_I2C_ADDRESS_WIDTH_7BIT = _XF_HAL_I2C_ADDRESS_WIDTH_BASE , XF_HAL_I2C_ADDRESS_WIDTH_10BIT , _XF_HAL_I2C_ADDRESS_WIDTH_MAX }
 i2c 从机地址宽度。 更多...
 
enum  _xf_hal_i2c_hosts_t { _XF_HAL_I2C_HOSTS_BASE = 0 , XF_HAL_I2C_HOSTS_MASTER = _XF_HAL_I2C_HOSTS_BASE , XF_HAL_I2C_HOSTS_SLAVE , _XF_HAL_I2C_HOSTS_MAX }
 i2c 主从模式。 更多...
 
enum  _xf_hal_i2c_mem_addr_en_t { _XF_HAL_I2C_MEM_ADDR_BASE = 0 , XF_HAL_I2C_MEM_ADDR_DISABLE = _XF_HAL_I2C_MEM_ADDR_BASE , XF_HAL_I2C_MEM_ADDR_ENABLE , _XF_HAL_I2C_MEM_ADDR_MAX }
 i2c 从机内存地址是否启用。 更多...
 
enum  _xf_hal_i2c_mem_addr_width_t {
  _XF_HAL_I2C_MEM_ADDR_WIDTH_BASE = 0 , XF_HAL_I2C_MEM_ADDR_WIDTH_8BIT = _XF_HAL_I2C_MEM_ADDR_WIDTH_BASE , XF_HAL_I2C_MEM_ADDR_WIDTH_16BIT , XF_HAL_I2C_MEM_ADDR_WIDTH_24BIT ,
  XF_HAL_I2C_MEM_ADDR_WIDTH_32BIT , _XF_HAL_I2C_MEM_ADDR_WIDTH_MAX
}
 i2c 从机内存地址宽度。 更多...
 
enum  _xf_hal_i2c_cmd_t {
  XF_HAL_I2C_CMD_DEFAULT = 0x0 , XF_HAL_I2C_CMD_HOSTS = 0x1 << 0 , XF_HAL_I2C_CMD_ENABLE = 0x1 << 1 , XF_HAL_I2C_CMD_ADDRESS_WIDTH = 0x1 << 2 ,
  XF_HAL_I2C_CMD_ADDRESS = 0x1 << 3 , XF_HAL_I2C_CMD_MEM_ADDR_EN = 0x1 << 4 , XF_HAL_I2C_CMD_MEM_ADDR_WIDTH = 0x1 << 5 , XF_HAL_I2C_CMD_MEM_ADDR = 0x1 << 6 ,
  XF_HAL_I2C_CMD_SPEED = 0x1 << 7 , XF_HAL_I2C_CMD_TIMEOUT = 0x1 << 8 , XF_HAL_I2C_CMD_SCL_NUM = 0x1 << 9 , XF_HAL_I2C_CMD_SDA_NUM = 0x1 << 10 ,
  XF_HAL_I2C_CMD_ALL = 0x7FFFFFFF
}
 对移植者,用于对接 i2c 指令的命令。 更多...
 

函数

xf_err_t xf_hal_i2c_init (xf_i2c_num_t i2c_num, xf_hal_i2c_hosts_t hosts, uint32_t speed)
 i2c 初始化函数。使用 i2c 之前必须要进行初始化。
 
xf_err_t xf_hal_i2c_deinit (xf_i2c_num_t i2c_num)
 i2c 反初始化函数,恢复到未初始化状态且回收相关资源。
 
xf_err_t xf_hal_i2c_enable (xf_i2c_num_t i2c_num)
 i2c 启用函数。i2c 配置好功能后,可以调用 i2c 启用函数进行激活。
 
xf_err_t xf_hal_i2c_disable (xf_i2c_num_t i2c_num)
 i2c 禁用函数。
 
xf_err_t xf_hal_i2c_set_gpio (xf_i2c_num_t i2c_num, xf_gpio_num_t scl_num, xf_gpio_num_t sda_num)
 i2c 设置 gpio。
 
xf_err_t xf_hal_i2c_set_address_width (xf_i2c_num_t i2c_num, xf_hal_i2c_address_width_t address_width)
 i2c 设置地址宽度。
 
xf_err_t xf_hal_i2c_set_address (xf_i2c_num_t i2c_num, uint16_t address)
 i2c 设置 i2c 从机地址。
 
xf_err_t xf_hal_i2c_set_mem_addr_width (xf_i2c_num_t i2c_num, xf_hal_i2c_mem_addr_width_t mem_addr_widths)
 i2c 设置 i2c 内存地址宽度。
 
int xf_hal_i2c_write_mem (xf_i2c_num_t i2c_num, uint32_t mem_addr, const uint8_t *buffer, uint32_t size, uint32_t timeout_ms)
 i2c 指定从机内存写入。
 
int xf_hal_i2c_read_mem (xf_i2c_num_t i2c_num, uint32_t mem_addr, uint8_t *buffer, uint32_t size, uint32_t timeout_ms)
 i2c 指定从机内存读取。
 
int xf_hal_i2c_write (xf_i2c_num_t i2c_num, const uint8_t *buffer, uint32_t size, uint32_t timeout_ms)
 i2c 写入数据。
 
int xf_hal_i2c_read (xf_i2c_num_t i2c_num, uint8_t *buffer, uint32_t size, uint32_t timeout_ms)
 i2c 读取数据。
 

详细描述

同步半双工串行通信总线。

类型定义说明

◆ xf_i2c_num_t

typedef uint32_t xf_i2c_num_t

i2c 序号。

在文件 xf_hal_i2c.h43 行定义.

◆ xf_hal_i2c_address_width_t

i2c 从机地址宽度。

◆ xf_hal_i2c_hosts_t

i2c 主从模式。

◆ xf_hal_i2c_mem_addr_en_t

i2c 从机内存地址是否启用。

◆ xf_hal_i2c_mem_addr_width_t

i2c 从机内存地址宽度。

◆ xf_hal_i2c_cmd_t

对移植者,用于对接 i2c 指令的命令。

◆ xf_hal_i2c_config_t

对移植者,用于对接 i2c 设置的参数。

枚举类型说明

◆ _xf_hal_i2c_address_width_t

i2c 从机地址宽度。

枚举值
_XF_HAL_I2C_ADDRESS_WIDTH_BASE 
XF_HAL_I2C_ADDRESS_WIDTH_7BIT 

7 位地址宽度

XF_HAL_I2C_ADDRESS_WIDTH_10BIT 

10 位地址宽度模式

_XF_HAL_I2C_ADDRESS_WIDTH_MAX 

在文件 xf_hal_i2c.h48 行定义.

◆ _xf_hal_i2c_hosts_t

i2c 主从模式。

枚举值
_XF_HAL_I2C_HOSTS_BASE 
XF_HAL_I2C_HOSTS_MASTER 

i2c主机模式

XF_HAL_I2C_HOSTS_SLAVE 

i2c从机模式

_XF_HAL_I2C_HOSTS_MAX 

在文件 xf_hal_i2c.h60 行定义.

◆ _xf_hal_i2c_mem_addr_en_t

i2c 从机内存地址是否启用。

枚举值
_XF_HAL_I2C_MEM_ADDR_BASE 
XF_HAL_I2C_MEM_ADDR_DISABLE 

i2c 禁用从机内存地址

XF_HAL_I2C_MEM_ADDR_ENABLE 

i2c 启用从机内存地址

_XF_HAL_I2C_MEM_ADDR_MAX 

在文件 xf_hal_i2c.h72 行定义.

◆ _xf_hal_i2c_mem_addr_width_t

i2c 从机内存地址宽度。

枚举值
_XF_HAL_I2C_MEM_ADDR_WIDTH_BASE 
XF_HAL_I2C_MEM_ADDR_WIDTH_8BIT 

i2c 从机内存地址 8 位宽度

XF_HAL_I2C_MEM_ADDR_WIDTH_16BIT 

i2c 从机内存地址 16 位宽度

XF_HAL_I2C_MEM_ADDR_WIDTH_24BIT 

i2c 从机内存地址 24 位宽度

XF_HAL_I2C_MEM_ADDR_WIDTH_32BIT 

i2c 从机内存地址 32 位宽度

_XF_HAL_I2C_MEM_ADDR_WIDTH_MAX 

在文件 xf_hal_i2c.h84 行定义.

◆ _xf_hal_i2c_cmd_t

对移植者,用于对接 i2c 指令的命令。

枚举值
XF_HAL_I2C_CMD_DEFAULT 

默认参数命令,在创建设备时优先执行

XF_HAL_I2C_CMD_HOSTS 

主从命令,见 xf_hal_i2c_config_t::hosts

XF_HAL_I2C_CMD_ENABLE 

启用命令,见 xf_hal_i2c_config_t::enable

XF_HAL_I2C_CMD_ADDRESS_WIDTH 

地址宽度命令,见 xf_hal_i2c_config_t::address_width

XF_HAL_I2C_CMD_ADDRESS 

地址命令,见 xf_hal_i2c_config_t::address

XF_HAL_I2C_CMD_MEM_ADDR_EN 

内存地址启用命令,见 xf_hal_i2c_config_t::mem_addr_en

XF_HAL_I2C_CMD_MEM_ADDR_WIDTH 

内存地址宽度命令,见 xf_hal_i2c_config_t::mem_addr_width

XF_HAL_I2C_CMD_MEM_ADDR 

内存地址命令,见 xf_hal_i2c_config_t::mem_addr

XF_HAL_I2C_CMD_SPEED 

速度命令,见 xf_hal_i2c_config_t::speed

XF_HAL_I2C_CMD_TIMEOUT 

超时命令,见 xf_hal_i2c_config_t::timeout_ms

XF_HAL_I2C_CMD_SCL_NUM 

scl io 命令,见 xf_hal_i2c_config_t::scl_num

XF_HAL_I2C_CMD_SDA_NUM 

sda io 命令,见 xf_hal_i2c_config_t::sda_num

XF_HAL_I2C_CMD_ALL 

默认设置命令,在创建设备时其次执行

在文件 xf_hal_i2c.h98 行定义.

函数说明

◆ xf_hal_i2c_init()

xf_err_t xf_hal_i2c_init ( xf_i2c_num_t  i2c_num,
xf_hal_i2c_hosts_t  hosts,
uint32_t  speed 
)

i2c 初始化函数。使用 i2c 之前必须要进行初始化。

参数
i2c_numi2c 的序号。
hosts设置主机或从机。见 xf_hal_i2c_hosts_t.
speedi2c 速度。单位 hz
返回
xf_err_t
  • XF_OK 成功初始化
  • other 初始化失败

在文件 xf_hal_i2c.c50 行定义.

◆ xf_hal_i2c_deinit()

xf_err_t xf_hal_i2c_deinit ( xf_i2c_num_t  i2c_num)

i2c 反初始化函数,恢复到未初始化状态且回收相关资源。

参数
i2c_numi2c 的序号。
返回
xf_err_t
  • XF_OK 成功反初始化
  • XF_ERR_UNINIT 该 i2c 未初始化
  • other 反初始化失败

在文件 xf_hal_i2c.c77 行定义.

◆ xf_hal_i2c_enable()

xf_err_t xf_hal_i2c_enable ( xf_i2c_num_t  i2c_num)

i2c 启用函数。i2c 配置好功能后,可以调用 i2c 启用函数进行激活。

注解
激活后,方可使用 xf_hal_i2c_write 等函数。激活之前的配置是静态配置。
参数
i2c_numi2c 的序号。
返回
xf_err_t
  • XF_OK 成功启用
  • XF_ERR_UNINIT 该 i2c 未初始化
  • other 启用失败

在文件 xf_hal_i2c.c92 行定义.

◆ xf_hal_i2c_disable()

xf_err_t xf_hal_i2c_disable ( xf_i2c_num_t  i2c_num)

i2c 禁用函数。

如果 i2c 正在启用状态,且不支持动态配置。 则需要该函数先将 i2c 禁用,然后进行配置。再次进行启用。

参数
i2c_numi2c 的序号。
返回
xf_err_t
  • XF_OK 成功禁用
  • XF_ERR_UNINIT 该 i2c 未初始化
  • other 禁用失败

在文件 xf_hal_i2c.c117 行定义.

◆ xf_hal_i2c_set_gpio()

xf_err_t xf_hal_i2c_set_gpio ( xf_i2c_num_t  i2c_num,
xf_gpio_num_t  scl_num,
xf_gpio_num_t  sda_num 
)

i2c 设置 gpio。

注解
不是所有芯片都支持这个功能。
参数
i2c_numi2c 的序号
scl_numscl 的 io 序号
sda_numsda 的 io 序号
返回
xf_err_t
  • XF_OK 成功设置
  • XF_ERR_UNINIT 该 i2c 未初始化
  • other 设置失败

在文件 xf_hal_i2c.c142 行定义.

◆ xf_hal_i2c_set_address_width()

xf_err_t xf_hal_i2c_set_address_width ( xf_i2c_num_t  i2c_num,
xf_hal_i2c_address_width_t  address_width 
)

i2c 设置地址宽度。

参数
i2c_numi2c 的序号。
address_width地址宽度。可以设置 7 bit 或者是 10 bit。 见 xf_hal_i2c_address_width_t.
返回
xf_err_t
  • XF_OK 成功设置
  • XF_ERR_UNINIT 该 i2c 未初始化
  • other 设置失败

在文件 xf_hal_i2c.c169 行定义.

◆ xf_hal_i2c_set_address()

xf_err_t xf_hal_i2c_set_address ( xf_i2c_num_t  i2c_num,
uint16_t  address 
)

i2c 设置 i2c 从机地址。

参数
i2c_numi2c 的序号。
addressi2c 地址。需要根据之前设置的宽度填写地址。
返回
xf_err_t
  • XF_OK 成功设置
  • XF_ERR_UNINIT 该 i2c 未初始化
  • other 设置失败

在文件 xf_hal_i2c.c194 行定义.

◆ xf_hal_i2c_set_mem_addr_width()

xf_err_t xf_hal_i2c_set_mem_addr_width ( xf_i2c_num_t  i2c_num,
xf_hal_i2c_mem_addr_width_t  mem_addr_widths 
)

i2c 设置 i2c 内存地址宽度。

参数
i2c_numi2c 的序号。
mem_addr_widths内存地址宽度。
返回
xf_err_t
  • XF_OK 成功设置
  • XF_ERR_UNINIT 该 i2c 未初始化
  • other 设置失败

在文件 xf_hal_i2c.c219 行定义.

◆ xf_hal_i2c_write_mem()

int xf_hal_i2c_write_mem ( xf_i2c_num_t  i2c_num,
uint32_t  mem_addr,
const uint8_t *  buffer,
uint32_t  size,
uint32_t  timeout_ms 
)

i2c 指定从机内存写入。

参数
i2c_numi2c 的序号。
mem_addr写入内存地址指针。
buffer写入数据的指针。
size写入数据的大小。
timeout_ms超时时间,单位为 ms(针对有RTOS的底层)。
返回
xf_err_t
  • XF_OK 成功写入
  • XF_ERR_UNINIT 该 i2c 未初始化
  • other 写入失败

在文件 xf_hal_i2c.c244 行定义.

◆ xf_hal_i2c_read_mem()

int xf_hal_i2c_read_mem ( xf_i2c_num_t  i2c_num,
uint32_t  mem_addr,
uint8_t *  buffer,
uint32_t  size,
uint32_t  timeout_ms 
)

i2c 指定从机内存读取。

参数
i2c_numi2c 的序号。
mem_addr读取内存地址指针。
buffer读取的数据指针。
size读取数据的大小。
timeout_ms超时时间,单位为 ms(针对有RTOS的底层)。
返回
int 返回实际读取大小。

在文件 xf_hal_i2c.c280 行定义.

◆ xf_hal_i2c_write()

int xf_hal_i2c_write ( xf_i2c_num_t  i2c_num,
const uint8_t *  buffer,
uint32_t  size,
uint32_t  timeout_ms 
)

i2c 写入数据。

参数
i2c_numi2c 的序号。
buffer写入的数据指针。
size写入数据的大小。
timeout_ms超时时间,单位为ms(针对有RTOS的底层)。
返回
int 返回实际写入大小。

在文件 xf_hal_i2c.c315 行定义.

◆ xf_hal_i2c_read()

int xf_hal_i2c_read ( xf_i2c_num_t  i2c_num,
uint8_t *  buffer,
uint32_t  size,
uint32_t  timeout_ms 
)

i2c 读取数据。

参数
i2c_numi2c 的序号。
buffer读取的数据指针。
size读取数据的大小。
timeout_ms超时时间,单位为ms(针对有RTOS的底层)。
返回
int 返回实际读取大小。

在文件 xf_hal_i2c.c347 行定义.