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.

[参考译文] LP-MSP430FR2476:Code Composer Studio 上的调试会话之间的 I2C 通信中断

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/982611/lp-msp430fr2476-i2c-communication-breaks-between-debug-sessions-on-code-composer-studio

器件型号:LP-MSP430FR2476
主题中讨论的其他器件: LP5569MSP430WARE

您好、TI 专家、

我一直致力于在 LP-MSP430FR2476和 LP-5569 EVM (LED 驱动器)这两个 TI 器件之间实现多字节 I2C 通信。 我在向电路板写入基本值方面取得了一些成功、但我注意到调试会话之间存在一些困难。 也就是说、当我第一次打开调试会话时、两个器件之间的 I2C 通信操作没有问题。 但是、当我关闭一个调试会话并重新打开一个新的调试会话时、我注意到代码在开始生成后立即在对 EUSCI_B_I2C_masterMultiByteSendStart 的行中被阻止。

我使用 MSP430Ware 中提供的示例代码中 I2C 模块的基本配置。 下面是我用于写入 LP5569控制寄存器的函数的大致草图:

EUSCI_B_I2C_masterSendMultiByteStart (EUSCI_B0_BASE、CONTRAL_reg);

//优化等待(如果没有 NACK 或仲裁丢失、继续将下一个值写入总线
__DELAY_CYCLES (100);

EUSCI_B_I2C_masterSendMultiByteFinish (EUSCI_B0_BASE、VALUE); 

当我第一次调用上述函数时,我发现代码通常停留在 MSP430Ware driverlib 的 eusci_b_i2c.c 中的以下代码行上:while (!(HWREG16 (baseAddress + OFS_UCBxIFG)& UCTXIFG));

我们非常感谢您的任何帮助!

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

    如果总线挂起可承受(调试器)重启周期、这表明从器件(LP5569)将 SCL 和/或 SDA 保持在低电平、因此主器件(MSP430)无法发出启动(或停止)命令。 LP5569数据表中没有提到时钟展宽、但这并不意味着它不这么做。

    如果您使用的是 Booster Pack (LP5569EVM)、我看不到任何复位从器件的编程方式。 一个快速实验可能是移除然后更换 VINSEL 跳线、我认为这将导致(从器件)下电上电。

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

    感谢您的回答!

    我正在使用 Booster Pack。 我还注意到、当我拔下两个器件(通过计算机上的 USB 供电)时、I2C 通信会再次开始工作。 通过编程方式、是否有办法使从器件停止将 SDA/SCL 线路保持在低电平? 在开始任何通信之前,我曾尝试向从器件发送一个停止条件,但这只是让程序挂起等待一个中断,就像在一个启动条件下一样(例如在 while (!(HWREG16 (baseAddress + OFS_UCBxIFG)& UCTXIFG);代码行)。

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

    在一般情况下、您可以做的事情不多。 [参考 I2C 规范(UM10204 R6第3.1.16节)

    重新阅读 L5569/EVM 数据表、看起来您可以通过(我认为) P4.7访问 EN/PWM 引脚。 如果您将这个低电平保持15ms、芯片将变为"禁用"状态、我怀疑这意味着它脱离总线。 [参考 L5569数据表 Secs 8.3.1.2.4和7.9]。

    虽然我希望这会让你绕过直接的路障、但奴隶的行为就像这样、这表明你以某种微妙的方式对它进行了重新起雾。 为此、有趣的示波器跟踪将是最后成功的事务、我怀疑它没有按照从器件所需的方式完成。