RT-Thread I2C 驱动框架学习笔记

RT-Thread I2C 驱动框架 (5.1.0)

II2C驱动包括两大部分,I2C驱动总线驱动和I2C设备驱动。
I2C总线驱动负责控制I2C总线的硬件,包括发送和接收数据的时序控制,以及处理总线冲突等。它与嵌入式系统的硬件层交互,实现对I2C总线的底层操作,使得应用程序可以通过I2C总线与外部设备进行通信。
I2C设备驱动负责管理和控制连接在I2C总线上的具体外部设备。它与I2C总线驱动和嵌入式系统的驱动框架交互,向上提供I2C设备的抽象接口,使得应用程序可以通过这个接口与I2C设备进行交互。它还负责解析I2C设备的寄存器和数据格式,并提供相应的API供应用程序调用,实现对I2C设备的读写操作。

I2C总线驱动

(I2C总线驱动一般IC或开发板产检会直接提供)
RTT将MCU能够控制I2C总线的外设抽象为I2C总线设备。一个I2C总线设备对应一条I2C总线,也对应一个I2C控制器。
RTT中有软件I2C总线设备(GPIO时序模拟)和硬件总线设备。

1. I2C设备应用层

一般是由开发者编写的业务代码,这一层处于I2C设备驱动框架层之上,通过调用I2C设备驱动框架提供的统一接口完成具体业务代码的编写,如EEPROM、I2C液晶屏等的驱动代码。

2. I2C设备框架层

i2c_core.c

I2C核心代码,包含为应用层提供的I2C收发通用通信接口rt_i2c_transfer,为总线驱动层提供的I2C总线设备结构struct rt_i2c_bus_device,为硬件I2C总线设备驱动提供的操作方法struct rt_i2c_bus_device_ops,以及注册接口rt_i2c_bus_device_register

注意:该设备结构也将作为硬件I2C总线设备软件I2C总线设备基类使用

//components/drivers/include/drivers/i2c.h
/*for i2c bus driver*/
struct rt_i2c_bus_device_ops
{
   
    rt_ssize_t (*master_xfer)(struct rt_i2c_bus_device *bus,
                             struct rt_i2c_msg msgs[],
                             rt_uint32_t num

你可能感兴趣的:(RT-Thread,mcu,单片机)