主题 : I2C总线读写测试 复制链接 | 浏览器收藏 | 打印
雕刻自己
级别: 新手上路
UID: 106791
精华: 0
发帖: 3
金钱: 15 两
威望: 3 点
贡献值: 0 点
综合积分: 6 分
注册时间: 2014-08-04
最后登录: 2014-08-17
楼主  发表于: 2014-08-06 16:35

 I2C总线读写测试

最近在做一个WINCE下的800万MIPI接口摄像头驱动,在初始化参数写入这一步遇到了问题。用I2C写数据不成功,错误原因的打印信息如下:
[31m[IIC_IST:E] SLAVE(0x20) DETECTION IS FAILED & RECOVERY STAGE
[0m[31m[XXX] IOCTL_I2C_GENERAL_WRITE ERROR: 31
[0m[31m[IIC_IST:E] SLAVE(0x20) DETECTION IS FAILED & RECOVERY STAGE
[0m[31m[XXX] IOCTL_I2C_GENERAL_WRITE ERROR: 31
[0m[31m[IIC_IST:E] SLAVE(0x20) DETECTION IS FAILED & RECOVERY STAGE
[0m[31m[XXX] IOCTL_I2C_GENERAL_WRITE ERROR: 31

在网上找了找相似的问题,回答之一是可能是由硬件的连接引起的,硬件部分连接不正确。于是想测试一下由I2C来对芯片内部的寄存器进行一次读写,看看是否读写正常。
但是在编写测试代码时还是遇到了问题。本人对I2C了解不是很彻底,使用的是MINI210开发板,核心处理器是S5PV210,打算从用户手册里任意找一个可读写的寄存器进行测试。但是在I2C地址这部分有些问题。
以寄存器GPD1为例,用户手册中提供的内容为GPD1CON, R/W, Address = 0xE020_00C0)。我了解到I2C地址是由7位地址加1位读写位构成的,假如我想要通过I2C对这个寄存器进行读写操作,我的地址应该写多少呢?这个0xE020_00C0地址我如何利用?或者有使用过MINI210开发板的人来指导我一下最简单的I2C的读写测试如何进行。我是参考开发板附带的BSP中的WINCE下的代码,其中有一个I2C的OPEN函数是用来打开I2C的。还有WRITEREGISTERS函数是用来写数据的,此函数有2个参数分别是地址与数据。望大神给予指点。