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.

[参考译文] TMS570LC4357:void i2cNotification (i2cbase_t *i2c、Uint32标志)的示例代码

Guru**** 2200880 points
Other Parts Discussed in Thread: HALCOGEN
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1213682/tms570lc4357-sample-code-for-void-i2cnotification-i2cbase_t-i2c-uint32-flags

器件型号:TMS570LC4357
主题中讨论的其他器件:HALCOGEN

大家好

我希望您可以为 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。