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.

[参考译文] LAUNCHXL-F2.8377万S:I2C只能在独立按下重置按钮后工作,否则SCL为低电平

Guru**** 2551110 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/629530/launchxl-f28377s-i2c-only-works-after-pushing-reset-button-in-standalone-otherwise-scl-is-low

部件号:LAUNCHXL-F2.8377万S

您好,

我正在尝试将项目转移到独立模式。 通过CCS上载程序代码时,所有程序都工作正常(调试中)。 拔下USB电缆并重新连接,我可以确保SCL保持在低电平。 不进行I2C通信 ,因此应用程序未按预期运行。 我花了一段时间才发现在按下启动板上的重置按钮后I2C工作正常(简而言之:通过CCS ->调试视图上传的代码,所有操作都正常;退出调试会话,拔下USB并重新连接它-> SCL为低; 在USB电缆连接时按下RESET按钮-> I2C工作正常)。

我做错了什么? 我还尝试切换SCL针脚,但在插入USB电缆后应用程序无法正常工作。

注:我知道切换SCL应尝试释放从属设备,使其不再保持SDA 低电平,而不是SCL。 因此,在这种情况下,我会将其保留在初始化过程中。

////
此函数将I2C初始化为已知状态。
//
void InitI2cb (void)
{
ToggleI2cbSCL(); //这是否有影响?
I2cBGpioConfig (I2C_B_GPIO66_GPIO69); // TI源(F2837xS_I2C.c)
//初始化I2C
I2cbRegs.I2CMDR.bit.IRS = 0; //重置I2C
I2cbRegs.I2CPsc.all = 19; // I2C模块clk ~10MHz
// TODO:I2C速度高达400kHz
// I2cbRegs.I2CCLKL = 60; //设置SCL ~ 100kHz,I2C标准模式
// I2cbRegs.I2CCLKH = 30; //设置SCL ~ 100kHz,I2C标准模式
I2cbRegs.I2CCLKL = 10; //设置SCL ~ 400kHz,I2C快速模式
I2cbRegs.I2CCLKH = 5; //设置SCL ~ 400kHz,I2C快速模式
// TODO:nack create句柄
I2cbRegs.I2CIER.bit.nack = 1; //启用nack IRQ
I2cbRegs.I2CMDR.bit.IRS = 1; //解除I2C重置
I2cbRegs.I2CFFTX.ALL = 0x6000; //启用FIFO模式和TXFIFO
I2cbRegs.I2CFFRX.ALL = 0x2000; //启用RXFIFO
}

void ToggleI2cbSCL(void){

//切换(至少9次),如果从机挂机,则释放SDA (SDA低)
Int16 I = 0;
GPIO写入引脚(69,0); // P69 I2Cb_SCL引脚低
GPIO设置PIN选项(69,GPIO输出,GPIO同步); //引脚设置为输出
对于(i=18; i>0; i--)
{
GPIO _转换引脚(69);
DELAY _US(50);
}
} 

我非常感谢您的帮助。 这个问题花了我几个小时。 谢谢你。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    也许我已经解决了...
    我确实使用了GY-91分线板,我认为这也需要时间来启动(来自Lauchpad)。 将"delay_US(5000);"放在I2C初始化之前可以工作。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Ben5en,

    很高兴听到问题已经解决。 感谢您的更新。