15_具体芯片的I2C_Adapter驱动分析
2023-04-18 14:42:17 时间
资料下载
coding无法使用浏览器打开,必须用git工具下载:
git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git
视频观看
具体芯片的I2C_Adapter驱动分析
参考资料:
- Linux内核真正的I2C控制器驱动程序
- IMX6ULL:
Linux-4.9.88driversi2cussesi2c-imx.c
- STM32MP157:
Linux-5.4driversi2cussesi2c-stm32f7.c
- IMX6ULL:
- 芯片手册
- IMXX6ULL:
IMX6ULLRM.pdf
Chapter 31: I2C Controller (I2C)
- STM32MP157:
DM00327659.pdf
52 Inter-integrated circuit (I2C) interface
- IMXX6ULL:
1. I2C控制器内部结构
1.1 通用的简化结构
1.2 IMX6ULL的I2C控制器内部结构
1.3 STM32MP157的I2C控制器内部结构
2. I2C控制器操作方法
- 使能时钟、设置时钟
- 发送数据:
- 把数据写入tx_register,等待中断发生
- 中断发生后,判断状态:是否发生错误、是否得到回应信号(ACK)
- 把下一个数据写入tx_register,等待中断:如此循环
- 接收数据:
- 设置controller_register,进入接收模式,启动接收,等待中断发生
- 中断发生后,判断状态,读取rx_register得到数据
- 如此循环
3. 分析代码
3.1 设备树
3.2 驱动程序分析
读I2C数据时,要先发出设备地址,这是写操作,然后再发起读操作,涉及写、读操作。所以以读I2C数据为例讲解核心代码。
- IMX6ULL:函数
i2c_imx_xfer
分析:
- STM32MP157:函数
stm32f7_i2c_xfer
分析 这函数完全有驱动程序来驱动:启动传输后,就等待;在中断服务程序里传输下一个数据,知道传输完毕。- 启动传输 通过中断进行后续传输 断服务程序里传输下一个数据,知道传输完毕。
- 启动传输
- 通过中断进行后续传输
相关文章
- 直接在代码里面对list集合进行分页
- .NET Framework 4.5新特性详解
- 大数据的简要介绍
- 大数据的由来
- 高斯混合模型的自然梯度变量推理
- timing-wheel 仿Kafka实现的时间轮算法
- 使用Navicat软件连接自建数据库(Linux系统)
- 那一天,我被Redis主从架构支配的恐惧
- Redis 深入了解键的过期时间
- C#使用委托调用实现用户端等待闪屏
- 基于流计算 Oceanus 和 Elasticsearch Service 构建百亿级实时监控系统
- GRAND | 转录调控网络预测数据库
- JFreeChart API中文文档
- 临床相关突变查询数据库
- TIGER | 人类胰岛基因变化查询数据库
- 视频边缘计算网关EasyNVR在视频整体监控解决方案中的应用分析
- Apache Arrow - 大数据在数据湖后的下一个风向标
- 常见的电商数据指标体系
- AKShare-艺人数据-艺人流量价值
- MySQL中多表联合查询与子查询的这些区别,你可能不知道!