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.
大家好
我希望您可以为 i2cNotification (i2cbase_t *i2c、uint32标志)提供示例代码以帮助我进行软件开发。
我想测试 NOACK 是否存在损坏的 IC 或不存在的 IC。 我只想发送一个 i2c 从器件地址并等待 noack。 如果存在确认、我将继续发送数据。 下面是用于测试 ack 的代码。 我正在使用位 TSS_BErrorIC 包含错误/非错误状态。 请告诉我是否正确。 谢谢你。
void TSS_Vinit (){
//设置要发送到 TCAN75的寄存器
//设置从机地址
uint32_t delay = 0u;
i2cbase_t *i2c=i2cREG2;
vGpioSetBit (N2HET1_27、1);//使用 N2HET1[27]引脚 A9作为测试输出。 将其设置为输出高电平
i2cClearSCD (i2c);
i2cSetSlaveAdd (i2c、TCAN75_I2C_ADDR);//温度传感器正在使用 i2c2
i2cSetMode (i2c、I2C_master);
i2cSetDirection (i2c、I2C_transmit);
/*发送启动条件*/
i2cSetStart (i2c);
TSS_BErrorIC=true;
for (delay=0;delay<100;delay++);
{
if ((i2c->STR 和 I2C_NACK)!= I2C_NACK)
{
TSS_BErrorIC=false;
}
}
i2cSetStop (i2c);
/*等待总线忙状态被清除*/
while (i2cIsBusy (i2c)== true);
/*清除停止条件*/
i2cClearSCD (i2c);
//vGpioSetBit (N2HET1_27、u8ReadGpioPinVal (N2HET1_27)^ 1);
VGpioSetBit (N2HET1_27、0);
//printf ("TSS_Vinit 2");
}
尊敬的 LayEng:
Unknown 说:我想测试是否有坏 IC 或不存在 IC。 我只想发送一个 i2c 从器件地址并等待 noack。 如果有确认,我将继续发送数据。
这是您在 HALCoGen 中未启用忽略 NACK 时会观察到的行为
如果我们不启用这个、那么如果从器件地址没有 ACK、主器件将不会发送任何数据。
示例:
如果您看到我的代码我正在发送0x57从地址、然后我将尝试发送0x10数据字节
这是我禁用忽略 NACK 选项时得到的波形。
请参阅主器件由于未从从器件获取 ACK 而未发送数据字节。
这是我启用忽略 NACK 选项时得到的波形。
如您所见、此处主器件无论 ACK 状态如何发送数据字节。
--
谢谢。此致、
Jagadish。