Linux系统驱动之编写设备驱动之i2c_driver
2023-04-18 14:42:08 时间
资料下载
coding无法使用浏览器打开,必须用git工具下载:
git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git
视频观看
编写设备驱动之i2c_driver
参考资料:
- Linux内核文档:
Documentationi2cinstantiating-devices.rst
Documentationi2cwriting-clients.rst
- Linux内核驱动程序示例:
drivers/eeprom/at24.c
- 本节代码:GIT仓库中
- 框架:
IMX6ULLsource 4_I2C 2_i2c_driver_example
STM32MP157sourceA7 4_I2C 2_i2c_driver_example
- AP3216C
IMX6ULLsource 4_I2C 3_ap3216c
STM32MP157sourceA7 4_I2C 3_ap3216c
- 框架:
1. 套路
1.1 I2C总线-设备-驱动模型
1.2 示例
分配、设置、注册一个i2c_driver结构体,类似drivers/eeprom/at24.c
:
在probe_new函数中,分配、设置、注册file_operations结构体。 在file_operations的函数中,使用i2c_transfer等函数发起I2C传输。
2. 编写i2c_driver
2.1 先写一个框架
2.2 在为AP3216C编写代码
百问网的开发板上有光感芯片AP3216C:
AP3216C是红外、光强、距离三合一的传感器,以读出光强、距离值为例,步骤如下:
- 复位:往寄存器0写入0x4
- 使能:往寄存器0写入0x3
- 读红外:读寄存器0xA、0xB得到2字节的红外数据
- 读光强:读寄存器0xC、0xD得到2字节的光强
- 读距离:读寄存器0xE、0xF得到2字节的距离值
AP3216C的设备地址是0x1E。
3. 构造i2c_client
下节视频。
相关文章
- 在树莓派上设置家庭网络的家长控制
- Linux火眼金睛:查找两个目录之间的差异
- 大数据竞争加剧 IBM新增Hadoop服务强化影响力
- SGI将推出Cloudera Hadoop数据分析集群
- 转折点决策:微软为什么支持Hadoop?
- Cinnamon vs MATE vs Xfce:你应该选择那一个 Linux Mint 口味?
- Linux查看硬件信息超强命令sar,以及可视化工具ksar
- 适用于Linux的高级实时系统监控工具
- 太方便:Chrome 浏览器新增实时字幕功能,可自动为音视频创建字幕
- 大数据下的数据分析-Hadoop架构解析
- 炫技!Bug排查大曝光,涉及Linux内核的那种
- Asahi Linux 报告:将 Linux 移植到 M1 Mac 太难了
- Windows 10 将预装 Windows Terminal
- 64位Chrome运行至少需8GB内存:安卓网友直呼用不起
- Chrome这硬伤终于修正!内存占用将大幅下降
- 数据集成平台引入基于云的商业智能应用
- 浅析Linux进程的内存管理
- 大数据(BigData)环境下的商业智能平台技术解析
- 这次答应我,一举拿下 I/O 多路复用!
- 开源软件发展史:Hadoop的昨天与今天