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.

[参考译文] MSP430F169:CAN#39;t 获取 MSP430和 SI514-PROG-EVB 之间的 I2C 通信

Guru**** 2521930 points
Other Parts Discussed in Thread: MSP430F169

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/917605/msp430f169-can-t-get-i2c-communication-between-msp430-and-si514-prog-evb

器件型号:MSP430F169

我首先尝试在 MSP430F169和 SI514-PROG-EVB 之间建立 I2C 通信。 这就是我如何连接它:

这是逻辑分析仪上的输出:

这就是问题、它总是提供 NAK、我无法使它得到 ACK。

下面是 SI-514-PROG-EVB 中的一句话、介绍了如何进行 I2C 连接、以检查它是否与我绘制的(和连接的)方式相匹配

此外、当我将 MSP430完全未连接到 SI514时、我将在逻辑分析仪上获得完全相同的输出(如上所示)。 但是、当我将 MSP430连接到 SI514、但我断开了 SI514中的 USB 电源时、我在逻辑分析仪上获得了以下结果:

最后、这是我的代码。 这主要来自一些示例。 从器件地址正确:

int main (空)


WDTCTL = WDTPW + WDTHOLD;

P3SEL |= 0x0A;//将 P3.3设置为 SCL、将 P3.1设置为 SDA
U0CTL |= I2C + SYNC;//将 USART0切换为 I2C 模式
U0CTL &=~I2CEN;//推荐的 I2C 初始化过程
I2CTCTL = I2CSSEL_2;// SMCLK
I2CSCLH = 0x03;// SCL 的高电平周期
I2CSCLL = 0x03;// SCL 的低电平周期
I2CNDAT = 0x01;//发送一个字节
I2CSA = 0x55;//从地址
U0CTL |= I2CEN;//启用 I2C、7位地址、

while (1)

U0CTL |= MST;
I2CTCTL |= I2CSTT + I2CSTP;

__no_operation();



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

    您好、Charles、

    SI514-PROG-EVB 的从器件地址是什么?  文档中提到了有关用户可配置地址的内容 您只看到 NACK 的原因是1)器件未连接或连接不当、或2)您发送了错误地址。

    我在您的代码中看到您发送的是0x55、它会移出= 0xAA、但逻辑探头显示的是0xAB、这会使您执行读取操作。  根据文档、您需要先执行写操作以设置寄存器、然后执行读操作。  与之相关的一些东西。

    [引用 USER="Charles Wolfe1"]但当我将 MSP430连接到 SI514,但我从 SI514中移除了 USB 电源时,我会在逻辑分析仪上得到该结果:

    关于移除 USB 电源时逻辑探头上的扁平线、很难判断10k 上拉电阻器连接到了哪个电源?

    [引用 USER="Charles Wolfe1">]此外、当我的 MSP430完全未连接到 SI514时、我会在逻辑分析仪上获得完全相同的输出(如上所示)。 [/报价]

    我不确定您是否在这样做。  在未连接 MSP430的情况下、会生成 I2C 信号的是什么?

    您是否正在使用3.3V 电源配置 SI514-PROG-EVB?

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

    1) 我会先尝试写入、但我知道我只是尝试写入(而不是写入、然后读取)、我仍然得到一个 NACK、没有其他东西。 可能我执行了错误的代码。 我会再试一次

    编辑:我尝试写入、但它只输出0xAA 和 NACK、而不是0xAB 和 NACK。 如果没有先得到 ACK、我认为我不能做任何事情、但我的代码可能是错误的、这里是:

    U0CTL |= MST;                   

    I2CTCTL |= I2CSTT + I2CSTP + I2CTRx;  

    while ((I2CIFG & TXRDYIFG)=0);   //等待发送准备就绪

    I2CDRB = 0xFF;                   //随机数据

    2) 10k 上拉电阻器连接到 MSP430的3.3V 电源

    3)  MSP430连接到计算机、因此它通电、但未连接到 SI514-PROG-EVB。 因此、MSP430会生成 I2C 主器件信号、但不会获得任何 I2C 信号进行响应、因此它只是表示 NACK。

    4) 当我通过 USB 将 SI514-PROG-EVB 连接到计算机时、它默认为1.8V。 我可以使用随附的 GUI 将其更改为3.3V、但不会保持这种状态、如果我拔下电源插头并将其插回1.8V、则会恢复到1.8V。 我想将其连接到 MSP430的3.3V 电源、但我需要合适的连接器来实现这一点、我一直在尝试获取它们。 您认为这可能是问题吗? SI514-PROG-EVB 为1.8V 而不是3.3V?

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

    您好、Charles、

    是否确定没有交换 SDA 和 SCL 线路?

    您的代码看起来正常。  主器件发送的第一个字节是从器件地址、如果它与其内部地址相匹配、从器件将 ACK。

    如果 SI514-PROG-EVB 上的1.8V 输出连接到3.3V I2C、则可能会损坏该器件、因此只要您能够在将其连接到3.3V I2C 线路之前将其配置为3.3V、就应该可以正常工作。

    这是一个疯狂的想法。  您可以尝试扫描 SI514-PROG-EVB 的从器件地址、只需简单的外观即可尝试写入 SI514-PROG-EVB、从器件地址= 0x00开始、每次通过循环时都会递增。  您可能会发现从器件地址不是0x55。  只是一个想法。

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

    我们将在没有电路板的情况下使用 SI514芯片、因此它应该更简单。 如果我遇到问题、我将发布另一个问题。 感谢你的帮助。