1. Linux值I2C设备驱动
Linux之I2C驱动
一、I2C 驱动框架简介
Linux内核中I2C的架构涉及三个主要部分:核心、总线驱动和设备驱动。
1.I2C 核心:负责I2C总线驱动和设备驱动的注册、注销。
2.I2C 总线驱动:实现I2C硬件适配器端,如CPU控制器或内置控制器。
3.I2C 设备驱动:实现I2C硬件设备端,通常连接适配器与CPU交换数据。
二、I2C 设备驱动流程
1.设备信息描述
对于不使用设备树的场景,平台文件中添加设备信息,包括类型和地址。
对于使用设备树的场景,设备树文件中直接添加设备节点描述。
2. I2C 设备数据收发和处理
在设备驱动中创建、初始化并注册I2C驱动,当匹配成功后执行探查函数,执行字符设备驱动流程。
初始化I2C设备通常通过I2C总线传输函数实现,调用I2C适配器中的相应函数完成数据读写。
构建i2c_msg结构体描述消息,使用i2c_transfer函数完成数据收发。
读取或写入多个寄存器时,需创建多个i2c_msg实例,分别对应发送地址和数据。
提供I2C数据发送和接收API,同样调用i2c_transfer函数完成操作。