|
使用的板子是https://item.taobao.com/item.htm?ft=t&id=727695718084
IIC所使用的扩展IC是AW9523B。
原理图
我使用了库中的ExI2C.c
uint8_t I2C_Master_Transmit(I2C_TypeDef * i2c_x, uint8_t mAddr,uint8_t * dat, uint8_t datLen)
{
// uint8_t ack,i;
// for(i=0; i<datLen; i++)
// {
// ack = I2C_Write(i2c_x, *dat++);
// }
// return ack;
uint8_t re = 0,i,ack;
uint8_t * p;
p = dat;
// I2C_Stop(i2c_x);
ack = I2C_Start(i2c_x, mAddr); //(mAddr << 1) | 0);
if(ack == 0)
{
I2C_Stop(i2c_x);
return ++re;
}
for(i=0; i<datLen; i++)
{
ack = I2C_Write(i2c_x, *p++);
++re;
if(ack == 0)
{
I2C_Stop(i2c_x);
return re;
}
}
I2C_Stop(i2c_x);
return re;
}
上面的I2C_Stoop(i2c_x);必须要注掉。
还有一个什么问题我一下想不起来了。
搞好之后我的I2C工作就正常了。
是不是不同的IC的特点不同?
我想起来再来补充另一个问题。
|
|