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.

[参考译文] MSP430G2553:MSP430G2553使用 i2c 与 tm4c123或 TM4C1294NCPDT 进行通信

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/997603/msp430g2553-msp430g2553-communicate-with-tm4c123-or-tm4c1294ncpdt-using-i2c

器件型号:MSP430G2553
主题中讨论的其他器件:TM4C1294NCPDTTM4C123

大家好、

你好。 我们需要您的帮助来检查客户的问题。  

他们主要想 使用 msp430g2553通过 i2c 与 tm4c123/tm4c1294ncppdt 通信、其中 MSP430是主设备、tm4c123 /tm4c1294是从设备。  

请  在此处查看所附的从器件/主器件代码。  

master-tm4c1294 code.txt 和 slavemsp430 code.txt

只有5个数据在完全正常运行时发送、然后他们希望将数据数组 MSP430发送到 tm4c1294。

我们也愿意接受任何建议。  期待您的回复、并提前感谢您。  

此致、

Jonathan

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

    您好、Jonathan、

    我检查了 MSP 器件的代码。 您正在代码中将 msp430g2553用作 I2C 从设备。 它在回波模式下工作、TxData 为[0x11、0x22、0x33、0x44、0x55]。  您在这里有什么顾虑?

    此致、

    现金 Hao

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

    现金 Hao

    两个板之间的通信无法正常工作

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

    您好、现金、

    感谢您的回答、是的主要问题是两个板之间的通信不起作用。  顺便说一下、Govind 是我们的客户。   

    如果我理解正确、 代码用于通信、但失败。 它们已由 MSP430发送5个字节(0x11、0x22、0x33、0x44、0x55)、并由 tm4c1294接收、但仅接收 1个字节(0x11) 。  

    此致、

    Jonathan

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

    ---- tm4c:

    >    I2CMasterIntEnableEx (I2C0_BASE、I2C_MASTER_INT_DATA);

    由于 main()正在轮询,我希望您不应启用中断。

    ----

    我 在这里看不到对 I2CMasterBusy()的任何(活动)调用。  I2CMasterDataGet 也不会在忙时联锁。 我希望看到 A

    > while (I2CMasterBusy (I2C0_BASE));  //等待完成

     在每次调用  I2CMasterDataGet 之前。

    ---- MSP430:

    > UCB0I2CIE |= UCSTPIE + UCSTTIE;//启用 STT 和 STP 中断

    这将导致 USCIAB0RX_ISR 在启动时唤醒 main、这将导致 main 复位 PTxData、并发送第一个字节(0x11)两次。 您似乎对 STTIE 没有任何使用、因此我建议:

    >  UCB0I2CIE |= UCSTPIE;//启用 STP 中断

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

    您好、Bruce、  

    我们的客户在您的帮助下修改了代码、但仍遇到问题。

    客户仍然只接收1字节(0x11)。  

    ---- tm4c:

    >    I2CMasterIntEnableEx (I2C0_BASE、I2C_MASTER_INT_DATA);

    由于 main()正在轮询,我希望您不应启用中断。

    客户 已遵循无中断、但仍然无法通信。

    我在此处附上了经修改的代码供您检查。 谢谢你

    e2e.ti.com/.../i2c-master-or-slave-updated-code.txt

    此致、

    Jonathan

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

    我明白了:症状是您只收到一个字节(0x11)。 之后会发生什么情况? 它是挂起还是返回并再次读取同一个字节?

    >        I2CMasterControl (I2C0_BASE、I2C_MASTER_CMD_SINGLE_Receive);

    在之前的版本中、这称为 I2C_MASTER_CMD_BURST_Receive_start。 使用 single 只会读取1个字节、因为它会同时设置 START 和 STOP。 我建议您将其改回。

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

    您好、Bruce、

    很抱歉我们迟到了。 我们的客户将检查您的问题和建议、我将在他们通知我后在此处更新。  

    他们希望考虑不同的解决方案。 如果可能、您能帮助他们提供简单的示例代码吗?  MSP430和 tm4c1294之间的简单通信代码。  

    谢谢、

    Jonathan

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

    在论坛中、我找到了有关在 Tiva 上使用 I2C 的应用报告的参考。 通过 PDF 中的链接提供了一些示例(.zip)。

    https://www.ti.com/lit/an/spma073/spma073.pdf

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

    您好、Bruce、  

    感谢您分享这些信息。 接下来、我们的客户 已经能够在两个控制器之间进行通信。  

    然后遇到另一个问题。 他们在代码中添加了 CRC、但失败了。

    在 从代码 CRC8()函数中添加了 CRC 代码。

    请帮助在主器件侧添加 CRC 部分。

    我在这里附上了工作代码供您检查。 谢谢你。

    e2e.ti.com/.../i2c-master-or-slave-updated-code-crc.txt

    此致、

    Jonathan

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

    如果您在 Tm4C 上需要 CRC8()函数、我不明白为什么您不能仅复制您在 G2553上使用的函数。

    G2553看起来是将自身配置为从器件、但其其余代码则充当主器件。 我不确定这里的目标是什么。