arm的i2c接口读,需要连读2次才可以吗?

[复制链接]
2587|8
 楼主| quarticarm 发表于 2011-11-15 13:32 | 显示全部楼层 |阅读模式
int i2c_read(int reg_offset)
{
    int data;
        int activity;
      //        reg_offset = reg_offset | 0x100 ;
    //        mem_wr_i2c(0x10, reg_offset);        // IC_DATA_CMD: set register address
    *(volatile UINT32 *)0x18500010 = reg_offset;
    //        mem_wr_i2c(0x10, 0x100);                // IC_DATA_CMD: set read bit
    *(volatile UINT32 *)0x18500010 = 0x100;

    ic_status = mem_rd_i2c(0x70);        // IC STATUS register. LSB is the common activity bit
    activity = ic_status & 0x1;
    while (activity == 0)
    {
        ic_status = mem_rd_i2c(0x70);        // IC STATUS register. LSB is the common activity bit
        activity = ic_status & 0x1;
    }
data = mem_rd_i2c(0x10);                // IC_DATA_CMD: read returned register value
    //printf("1:%d\n",data);
    ic_status = mem_rd_i2c(0x70);        // IC STATUS register. LSB is the common activity bit
    activity = ic_status & 0x1;
    while (activity == 1)
    {
        readCounter++;
        ic_status = mem_rd_i2c(0x70);        // IC STATUS register. LSB is the common activity bit
        activity = ic_status & 0x1;
    }
       data = mem_rd_i2c(0x10);                // IC_DATA_CMD: read returned register value
    printf("2:%d\n",data);
        return (data);
}
 楼主| quarticarm 发表于 2011-11-15 13:34 | 显示全部楼层
这段代码,就是i2c状态关闭的时候,从data线读一次:
data = mem_rd_i2c(0x10);       
然后i2c从激活状态到未激活状态在读一次,这次的值才真正的返回,这段代码如果把第一处代码注释,
data = mem_rd_i2c(0x10);       
程序i2c通讯不正确了。。。
   也就是必须读2次,问题是,为什么??
核心是arm内核
 楼主| quarticarm 发表于 2011-11-15 14:15 | 显示全部楼层
自己顶。。。。。。
李富贵 发表于 2011-11-15 15:01 | 显示全部楼层
arm和iic没有关系。
 楼主| quarticarm 发表于 2011-11-15 15:35 | 显示全部楼层
arm和iic没有关系。
李富贵 发表于 2011-11-15 15:01

那通常应该不需要read 2次的吧?
 楼主| quarticarm 发表于 2011-11-16 09:39 | 显示全部楼层
那通常应该不需要read 2次的吧
 楼主| quarticarm 发表于 2011-11-16 09:39 | 显示全部楼层
核是arm 926的
ckfgf 发表于 2012-11-26 13:41 | 显示全部楼层
每次写完等待5ms才可以读,写完加个延迟就ok
阿南 发表于 2012-11-26 14:06 | 显示全部楼层
和核及哪个处理器没关系,如果是IO口模拟时序,通常时间响应等问题,可以加些延时。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

32

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部