Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1747577
  • 博文数量: 199
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 6186
  • 用 户 组: 普通用户
  • 注册时间: 2012-10-30 11:01
个人简介

Linuxer.

文章存档

2015年(4)

2014年(28)

2013年(167)

分类: LINUX

2013-05-23 14:09:16

在做i2c调试时,发现每次系统重启时,应用程序未运行之前,i2c芯片总是高4位输出高电平,低4位输出低电平。这样导致系统启动时,i2c控制的8路DO有4路输出高电平,对于自控系统来说,是很大的错误。
解决办法:
1.查看内核i2c驱动发现驱动代码没有问题。
2.系统启动时,进入u-boot,发现问题依然存在,觉得应该是u-boot对i2c的初始化有问题。
3.查找u-boot初始化i2c代码,在board\davinci\da8xxevm\da850evm.c中的rmii_hw_init()函数中:
.........
buf[0] = 0xf0;
ret = i2c_write(CONFIG_SYS_I2C_EXPANDER_ADDR, 6, 1, buf, 1);
if (ret) {
    printf("\nExpander @ 0x%02x write FAILED!!!\n",CONFIG_SYS_I2C_EXPANDER_ADDR);
........
这里写入0xf0,就会导致i2c高4位输出高电平。所以将buf[0] = 0x00;写入就不会出现问题了。问题解决。
如果想系统重启时不影响DO输出,这里就不要对I2c进行写操作。

阅读(2374) | 评论(2) | 转发(0) |
0

上一篇:RTC驱动模型

下一篇:mini2440驱动分析之LCD

给主人留下些什么吧!~~

wangbaolin7192014-05-28 15:52:51

suxuan1104:我在坐am1808 的移植  请问下这个函数的作用是什么 我不是很明白  rmii_hw_init 是rmii硬件初始化吗?

不好意思,我现在已经不做AM1808的开发了,手头上没有源代码了,所以也不知道这个函数里实现了什么。

回复 | 举报

suxuan11042014-05-28 15:12:01

我在坐am1808 的移植  请问下这个函数的作用是什么 我不是很明白  rmii_hw_init 是rmii硬件初始化吗?