$darkmode
RuiChing API 参考手册
V0.9.1

提供 I2C 总线与设备的注册、配置与读写接口,支持主从通信模式 更多...

函数

struct rt_i2c_bus_device * rt_i2c_bus_device_find (const char *bus_name)
 I2C 总线结构体 更多...
 
rt_ssize_t rt_i2c_transfer (struct rt_i2c_bus_device *bus, struct rt_i2c_msg msgs[], rt_uint32_t num)
 I2C 主机链式数据传输(发送和接收) 更多...
 
rt_ssize_t rt_i2c_master_send (struct rt_i2c_bus_device *bus, rt_uint16_t addr, rt_uint16_t flags, const rt_uint8_t *buf, rt_uint32_t count)
 I2C 主机发送数据 更多...
 
rt_ssize_t rt_i2c_master_recv (struct rt_i2c_bus_device *bus, rt_uint16_t addr, rt_uint16_t flags, rt_uint8_t *buf, rt_uint32_t count)
 I2C 主机接收数据 更多...
 
rt_err_t rt_i2c_control (struct rt_i2c_bus_device *bus, int cmd, void *args)
 控制 I2C 总线设备 更多...
 

详细描述

提供 I2C 总线与设备的注册、配置与读写接口,支持主从通信模式

函数说明

◆ rt_i2c_bus_device_find()

struct rt_i2c_bus_device* rt_i2c_bus_device_find ( const char *  bus_name)

I2C 总线结构体

查找指定名称的 I2C 总线设备

此函数通过设备名称查找已注册的 I2C 总线设备,并返回对应的总线结构体指针

参数
[in]bus_name指向 I2C 总线设备名称字符串的指针
返回值
!RT_NULLI2C 总线设备指针
RT_NULL查找失败,未找到对应名称或设备类型不是 I2C 总线

◆ rt_i2c_transfer()

rt_ssize_t rt_i2c_transfer ( struct rt_i2c_bus_device *  bus,
struct rt_i2c_msg  msgs[],
rt_uint32_t  num 
)

I2C 主机链式数据传输(发送和接收)

本函数传递的消息是链式结构,通过指定的 I2C 总线设备 bus,按照给定的 消息数组 msgs 实现连续数据收发

参数
[in]bus指向 I2C 总线设备对象的指针
[in]msgsI2C 消息数组
[in]numI2C 消息数组数量
返回值
>0成功传输的消息数组的个数
-RT_EFULL资源已满
-RT_EINVAL总线不支持传输操作
-RT_ERROR获取/释放锁失败或底层传输错误
-RT_ETIMEOUT总线操作超时
其他负值传输失败
警告
  • 此函数会调用 rt_mutex_take(), 不能在中断服务程序里面调用,会导致断言

◆ rt_i2c_master_send()

rt_ssize_t rt_i2c_master_send ( struct rt_i2c_bus_device *  bus,
rt_uint16_t  addr,
rt_uint16_t  flags,
const rt_uint8_t *  buf,
rt_uint32_t  count 
)

I2C 主机发送数据

向指定从设备发送单次数据包

参数
[in]bus已初始化的 I2C 总线设备对象指针
[in]addrI2C 从设备地址
[in]flags控制标志位
[in]buf指向发送缓冲区的指针
[in]count待发送数据大小
返回值
>0实际成功发送的字节数
-RT_EFULL资源已满
-RT_EINVAL总线或参数无效
-RT_ERROR获取/释放锁失败或底层传输错误
-RT_ETIMEOUT传输超时
其他负值发送失败
警告
  • 此函数会调用 rt_mutex_take(), 不能在中断服务程序里面调用,会导致断言

◆ rt_i2c_master_recv()

rt_ssize_t rt_i2c_master_recv ( struct rt_i2c_bus_device *  bus,
rt_uint16_t  addr,
rt_uint16_t  flags,
rt_uint8_t *  buf,
rt_uint32_t  count 
)

I2C 主机接收数据

从指定从设备接收单次数据包

参数
[in]bus指向 I2C 总线设备对象的指针
[in]addrI2C 从设备地址
[in]flags控制标志位
[out]buf指向接收缓冲区的指针
[in]count期望接收的字节数
返回值
>0实际成功接收的字节数
-RT_EFULL资源已满
-RT_EINVAL总线或参数无效
-RT_ERROR总线锁获取失败或底层传输错误
-RT_ETIMEOUT接收超时
其他负值接收失败
警告
  • 此函数会调用 rt_mutex_take(), 不能在中断服务程序里面调用,会导致断言

◆ rt_i2c_control()

rt_err_t rt_i2c_control ( struct rt_i2c_bus_device *  bus,
int  cmd,
void *  args 
)

控制 I2C 总线设备

本函数用于对指定的 I2C 总线设备执行控制命令。可用于设备参数配置、扩展操作等

参数
[in]bus指向 I2C 总线设备对象的指针
[in]cmd控制命令编号
[in]args控制命令参数指针,类型由具体命令决定
返回值
RT_EOK成功执行控制命令
-RT_EINVAL总线不支持控制操作
其他负值执行控制命令失败,由底层驱动返回