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.

[参考译文] MSP430F4784:I2C 时钟和从器件通信

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1110601/msp430f4784-i2c-clock-and-slave-communication

器件型号:MSP430F4784
主题中讨论的其他器件: PCA9539

您好!

我目前正在使用 MSP430F4784。 在此过程中,我尝试使用 I2C (UCB1)与两个从设备(温度传感器 TC74A0和 I/O 扩展器 PCA9539)进行通信。

到目前为止、在调试与温度传感器的通信时、执行 UCB1CTL1 &=~UCSWRST;线路 UCBBUSY 被设置为1、UCSCLLOW 被设置为1、然后在 RXBUF 中、我将获得温度数据。 但是在经过几次调试后、UCBBUSY 位被置位1、 UCSCLLOW 位变为0、并且未接收 RXBUF 的数据也一直为0。

这在 UCB1CTL1   &=~UCSWRST 行执行后发生。

在我为 IC 加电一段时间后、它仍然可以正常工作。 这种情况一再发生。

导致此问题的原因是、我必须在 I2C 中配置任何内容才能获取正确的数据。

请帮我解决这个问题。

谢谢、此致

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

    对于此症状(启用 I2C 时总线立即忙) 、第一个疑似故障是总线上拉。

    您是否使用商业分线板? 这些通常包括总线上拉。

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

    感谢您的回答。

    我将为 I2C 总线使用10k 上拉电阻器。

    UCB1CTL1 |= UCSWRST;
    UCB1CTL0 |= UCMST + UCMODE_3 + UCSYNC;
    UCB1CTL1 |= UCSSEL_3 + UCSWRST;
    UCB1BR0 = 11;// fSCL = SMCLK/10 =~100kHz、SMCLK = 1MHz
    UCB1BR1 = 0;
    UCB1CTL1 &=~UCSWRST; <--执行此行后,该问题以5:10的比率出现(在中断后它可以正常通电)。

    是的、仅限商业电路板。

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

    如果它在某些时间内仅发生故障、则表明总线上的一个器件将 SCL 保持在低电平。 如果您在交易过程中重新启动 MCU、则可能会发生这种情况(例如)。 这里的诊断是断开/关闭每个从器件(一次一个)并查看条件是否清除。

    如果您遇到这种情况(或即使尚未遇到)、您可能会考虑通过 GPIO 引脚为每个器件供电、并在 MCU 启动时对其进行下电上电。 每个引脚都声称它可以在<=200uA 的电流下运行、这远低于 GPIO 的电流限制。

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

    谢谢你  

    我会相应地进行更改

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="431635" URL"~μ C/support/microcontrollers/msp-low-power-microcontrollers-group/msp430low-power-microcontroller-forum/1110601/msp430f4784-i2c-clock-and-slave-communication /4116425#4116425]UCB1CTL1 &=~UCS10- 在断电后开始工作。]

    您好、Sai、

    您目前是否捕捉到了 I2C 总线的雕像?

    [引用 userid="431635" URL"~/support/microcontroller /msp-lower-power-microcontroller 组/msp430/f/msp-lower-microcontroller -forum/1110601/msp430f4784-i2c-clock-and-slave-communication "]行 UCBBUSY 设置为1、然后在获取数据时设置 UCSCLLOW。]

    最好捕获 I2C 波形、以查看读取操作期间的故障位置。