我现在 有两个 问题:
1:我在使用硬件i2c 访问 我的外设的时候,使用的代码如下:
void myIIC_init(u8 mpu_add)
{
I2C_init();
I2C_Params_init(&i2cParams);
i2cParams.bitRate = I2C_400kHz;
i2c = I2C_open(Board_I2C_TMP, &i2cParams);
i2cTransaction.slaveAddress = mpu_add;
if (i2c == NULL)
{ while (1);}
}
bool iic_read_Register(uint8_t add,u8 *buff,uint8_t len)
{
i2cTransaction.writeBuf = &add;
i2cTransaction.writeCount = 1;
i2cTransaction.readBuf = buff;
i2cTransaction.readCount = len;
return I2C_transfer(i2c,&i2cTransaction);
}
我在调用 iic_read_Register(0x00,&test,1); 的时候,test返回值是0x00;
但是 我用示波器 查看了波形:
显然 波形 是我所期望的数据 (0x11);
那么为什么我会读不到 这个 0x11呢?
第二个问题:
在尝试使用硬件i2c失败之后,我试了试 io模拟i2c;
读数始终是0xFF,我查到最后 用示波器 发现 在我写地址的时候 有一位 被莫名其妙的 拉高了电平;
于是我用官方的板子 试了一下附件 里面的程序,示波器 显示结果:
请问一下 这一位被拉高电平是怎么回事啊?
io_iic.c
灰小子:
你用的什么mcu?和什么器件进行的通讯?
Viki Shi:
请提供一下芯片型号,一般有相应的I2C driver的
user5993042:
回复 Viki Shi:
我是用的TI1310 和 国产芯片VC51,我自己 IO口模拟的 时候因为 用的是官方的板子 都没有接上器件,就是 使用的 IO操作,但是 示波器 效果有错~