打印
[技术问答]

修改iic源程序,变为一次可读写多个数据

[复制链接]
450|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
elephant00|  楼主 | 2020-12-10 11:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本来是来问问题,没想到问着问着就明白了。。
原程序是每次读一个数据,现在我想一次读好几个数据,所以对状态进行修改:if(u32Status == 0x08)                      //写slave address
    {
        I2C_SET_DATA(I2C0, (g_u8DeviceAddr << 1));
        I2C_SET_CONTROL_REG(I2C0, I2C_CTL_SI);
    }
    else if(u32Status == 0x18)                //写索引地址
    {

                        I2C_SET_DATA(I2C0, g_u8RegAddr);//
                    I2C_SET_CONTROL_REG(I2C0, I2C_CTL_SI);//因为之前索引为16bit,现在为8位,不需要再发数据了,就想跳过0x28这一步,直接到0x10
                //I2C_SET_CONTROL_REG(I2C0, I2C_CTL_STA_SI);

    }

else if(u32Status == 0x28)
{
              I2C_SET_CONTROL_REG(I2C0, I2C_CTL_STA_SI);
/*为什么必须有这一步:因为发送索引值,slave要回复ack,状态就一定会跳到0x28*/
}

使用特权

评论回复
沙发
gejigeji521| | 2020-12-10 23:58 | 只看该作者
非常棒,感谢分享。

使用特权

评论回复
板凳
drer| | 2021-1-7 13:02 | 只看该作者
哈哈 非常不错  这样印象深刻

使用特权

评论回复
地板
gwsan| | 2021-1-7 13:03 | 只看该作者
呵呵呵   楼主顿悟了 恭喜

使用特权

评论回复
5
kxsi| | 2021-1-7 13:04 | 只看该作者
为什么这样修改就可以了呢

使用特权

评论回复
6
nawu| | 2021-1-7 13:05 | 只看该作者
原来是哪种写法啊

使用特权

评论回复
7
qcliu| | 2021-1-7 13:06 | 只看该作者
为什么会跳到0x28这个地址呢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

964

主题

2937

帖子

7

粉丝