DM6437只有一个I2C总线,由于挂在总线上的摄像头的影响,导致不能正常读取ADS1000芯片,具体原因未能查明。现在只能用GPIO去模拟I2C总线。
下面是ADS1000中的I2C的介绍关键的说明:
之前由于没有注意到在SCL为高的时候不能更改状态,导致连续读取字节的时候只是正常读取了一个或两个字节(最后输出的高低有影响)。
下面是具体的程序代码:
#define SET_SCL_HIGH EVMDM6437_GPIO_setOutput(SCL,1);
#define SET_SCL_LOW EVMDM6437_GPIO_setOutput(SCL,0);
#define SET_SDA_HIGH {\
EVMDM6437_GPIO_setOutput(SDA,1);\
}
#define SET_SDA_LOW {\
EVMDM6437_GPIO_setOutput(SDA,0);\
}
//typedef EVMDM6437_GPIO_setDir(SDA,GPIO_IN);EVMDM6437_GPIO_getInput(SDA); SET_SDA_HIGH
//typedef EVMDM6437_GPIO_setDir(SDA,GPIO_OUT);EVMDM6437_GPIO_setOutput(SDA,0); SET_SDA_LOW
#ifdef __cplusplus
extern "C" {

DM6437芯片的I2C总线因摄像头干扰无法正常读取ADS1000,故采用GPIO模拟I2C。问题在于SCL高电平时不能改变状态,导致读取异常。通过调整GPIO程序代码,实现了连续读取字节的功能。
最低0.47元/天 解锁文章
818

被折叠的 条评论
为什么被折叠?



