社区导航

 
快捷导航
  • 首页
  • 论坛
  • 查看新帖
  • 最新回复
  • 社区活动
  • 联系管理员
  • 消灭零回复
  • E金币兑换
  • 干货
搜索
查看: 5787|回复: 3

u-boot 调试 i2c

[复制链接]

23

TA的帖子

0

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

发表于 2011-2-3 09:21:41 | 显示全部楼层 |阅读模式
   有许多外设芯片都通过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总线。



702

TA的帖子

0

TA的资源

宇宙尘埃

发表于 2011-2-3 11:36:11 | 显示全部楼层
我又来坐沙发了:D

[ 本帖最后由 刘兴光 于 2011-2-3 11:37 编辑 ]

回复

使用道具 举报

6057

TA的帖子

13

TA的资源

裸片初长成(初级)

Rank: 10Rank: 10Rank: 10

荣誉会员勋章

发表于 2011-2-3 16:33:32 | 显示全部楼层

回复

使用道具 举报

131

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2011-2-3 23:53:36 | 显示全部楼层
为什么我坐不了沙发

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

小黑屋|手机版|Archiver|电子工程世界 ( 京ICP证 060456

GMT+8, 2017-9-25 17:57 , Processed in 0.269083 second(s), 17 queries , Redis On.

快速回复 返回顶部 返回列表