This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

I2C没收到ACK怎么办,地址的接不到,数据的也收不到



我的I2C通信是为了与XX7299A芯片通信,为什么我的ADDR_ACK没有,DATA_ACK也没有???另外可不可以这么利用API 函数,我的从机地址是0x60,寄存器地址是0xb0,我使用singlesend也是两个ACK都没有,求助啊,周日要交程序了

unsigned int XX7299A_I2CRead(unsigned int I2C_BASE,uchar REG_ADDR,uchar ID)
{
uchar DATA;
unsigned int i;
I2CMasterInitExpClk(I2C_BASE,SysCtlClockGet()/200,false); //低速
I2CMasterSlaveAddrSet(I2C_BASE,ID,false);
I2CMasterDataPut(I2C_BASE,REG_ADDR);
//查询忙与错误
while(I2CMasterBusBusy(I2C_BASE));

I2CMasterControl(I2C_BASE,I2C_MASTER_CMD_BURST_SEND_ERROR_STOP);
i = I2CMasterErr(I2C_BASE);
//while(I2CMasterBusy(I2C_BASE));
//SysCtlDelay(2000);

//I2CMasterSlaveAddrSet(I2C_BASE,ID,true);
I2CMasterControl(I2C_BASE,I2C_MASTER_CMD_SINGLE_RECEIVE);
while(I2CMasterBusy(I2C_BASE));
i = I2CMasterErr(I2C_BASE);
switch(i)
{
case I2C_MASTER_ERR_NONE:
{
//
//I2CMasterControl(I2C_BASE,I2C_MASTER_CMD_SINGLE_RECEIVE);
//while(I2CMasterBusy(I2C_BASE));
DATA = I2CMasterDataGet(I2C_BASE);

return DATA;
};break;
case I2C_MASTER_ERR_ADDR_ACK:XX7299A_I2CRead(I2C_BASE,REG_ADDR,ID);break;
case I2C_MASTER_ERR_DATA_ACK:XX7299A_I2CRead(I2C_BASE,REG_ADDR,ID);break;
case I2C_MASTER_ERR_ARB_LOST:XX7299A_I2CRead(I2C_BASE,REG_ADDR,ID);break;
case I2C_MASTER_ERR_CLK_TOUT:XX7299A_I2CRead(I2C_BASE,REG_ADDR,ID);break;
default:XX7299A_I2CRead(I2C_BASE,REG_ADDR,ID);
}
}