工具/软件:Code Composer Studio
您好!
我尝试使用 I2C 从传感器读取数据、但我没有成功。
这是我用于从传感器读取数据的函数:
空 I2CReceive (uint8_t slave_address、uint8_t reg、uint8 * buff)
{
while (i2cIsBusy (i2cREG2)=true);
i2cREG2->MDR = I2C_RESET_OUT;
i2cSetMode (i2cREG2、I2C_MASTER);
i2cSetSlaveAdd (i2cREG2、SLAVE_ADDRESS);
i2cSetDirection (i2cREG2、I2C_transmitter);
i2cSetCount (i2cREG2、1);
i2cSetStart (i2cREG2);
while ((i2cREG2->STR &(I2C_TX | I2C_ARDY))== false);//等待 TX 准备就绪和寄存器访问准备就绪
i2cSendByte (i2cREG2、reg);
//开始接收来自从设备的数据
//在开始事务的读取阶段之前等待 ARDY
while ((i2cREG2->STR & I2C_ARDY)== false);//被阻止------
i2cREG2->MDR = I2C_RESET_OUT;//设置带有"C 的 MDR 已超出复位范围
i2cSetMode (i2cREG2、I2C_MASTER);
i2cSetDirection (i2cREG2、I2C_RECEIVER);
i2cSetCount (i2cREG2、1);
i2cSetStop (i2cREG2);
i2cSetStart (i2cREG2);
//接收一个字节
while ((i2cREG2->STR &(I2C_RX | I2C_ARDY))== true);
buff [0]= i2cREG2->DRR;
while (i2cIsBusy (i2cREG2)=true);
/*等待直到检测到停止*/
while (i2cIsStopDetected (i2cREG2)== false);
/*清除停止条件*/
i2cClearSCD (i2cREG2);
}
它在以下行中仍然被阻止:
//开始接收来自从设备的数据
//在开始事务的读取阶段之前等待 ARDY
while ((i2cREG2->STR & I2C_ARDY)== false); //被阻止------
我犯了什么错误?
此致
PISC