u-boot i2c 的调试
来源:互联网 发布:云熙软件 编辑:程序博客网 时间:2024/06/07 02:49
转载:http://bbs.ednchina.com/BLOG_ARTICLE_1981597.HTM
有许多外设芯片都通过i2c总线接到主芯片上,主芯片通过i2c发命令去初始化外设芯片。
I.MX5x 至少有3个外设芯片需要接到i2c总线上,由主芯片在初始化时配置外围芯片。分别是音频codec sgtl5000, 方向传感器mma7660, 还有EInk屏的pmic 芯片tps65180。我们都把它们接到I2C1 上。
1. u-boot 有i2c驱动,命令行有i2c命令。不过命令行的i2c命令只能针对一条i2c总线,针对不同的i2c总线,需要修改头文件宏定义,在 u-boot-xx/include/configs/mx50_arm2.h
#define CONFIG_SYS_I2C_PORT I2C2_BASE_ADDR
2. 硬件连线. I2C总线只有两条连线,一条时钟线SCL,一条数据线DAT。所有的i2c外设都要有一个独立的地址。注意:I2C总线硬件初始化状态必须是SCL和DAT均为高电平,如果两个中有一个或两个不是高电平,说明硬件电路有问题。要先排除硬件故障。
3. I2c命令
3.1 i2c总线搜索
u-boot> i2c probe
搜索某条i2c(如i2c2)总线上连接的所有i2c设备。
3.2 读i2c外设
举例:读取i2c地址为0x20的外设芯片,从第0个寄存器开始读,共读16个寄存器。
u-boot> i2c md 0x20 0 16
md ---- i2c 读
0x20 ---- i2c外设的地址,每个i2c外设都有一个独立的地址,一般是外设芯片出厂时就已经定好。
0 ---- 从外设芯片的第0号寄存器开始读
16 ---- 总共读16个寄存器
3.3 写i2c外设
举例:写i2c地址为0x20的外设芯片,写它的第01号寄存器,将它第01号寄存器的值写为0x12。
u-boot> i2c mw 0x20 01 0x12
mw ---- i2c 写
0x20 ---- i2c外设的地址,每个i2c外设都有一个独立的地址,一般是外设芯片出厂时就已经定好。
01 ---- 写外设芯片的第01号寄存器
0x12 ---- 将它的值写为0x12
4.不足之处
只能写单条I2C总线,对不在同一条I2C总线上的设备读写还要改头文件,不方便,有时间改改程序,改成可以读写任意一条I2C总线。
- u-boot i2c 的调试
- 调试u-boot的方法
- u-boot 的调试方法
- U-Boot下的I2C设备的读写
- 使用AXD调试U-BOOT的方法
- u-boot下s29gl128p的调试
- 关于U-boot调试
- openjtag 调试 u-boot
- AXD调试u-boot
- U-Boot的移植之(四)调试篇:下载U-Boot到目标板进行调试
- U-Boot的移植之(四)调试篇:下载U-Boot到目标板进行调试
- U-Boot的移植之(四)调试篇:下载U-Boot到目标板进行调试
- U-boot 调试中的command
- 使用CodeWarrior调试U-Boot
- u-boot下nand调试
- Micro2440 调试运行U-boot
- u-boot start.S调试
- 使用AXD调试u-boot
- 一键离线地图发布(工具软件下载) 使用教程
- MyBatis(7)--spring boot集成MyBatis,集成Druid批量更新报错multi-statement not allow
- 关于使用Genymotion运行安装app失败的问题
- 关于Android架构组件,Android Architecture Components,使用AAC构建项目
- easyui表格datagrid居中不齐的问题
- u-boot i2c 的调试
- 等着涉嫌醉驾的郎永淳的会是什么?
- Android 如何在设置字体大小不统一的情况下,设置全局字体大小
- 【CCF】201604_2俄罗斯方块
- scikit-learn 中文文档-神经网络模型-监督学习|ApacheCN
- spring MVC 原理
- 静默推送
- vue如何更改默认端口号8080为指定端口
- 云监控的应用及概览