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.

[参考译文] MSP430F2274:UCB0的I2C从代码不会将预期数据发送到I2C主设备

Guru**** 2611705 points
Other Parts Discussed in Thread: MSP430F2274, MSP-TS430DA38

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/665506/msp430f2274-i2c-slave-code-for-ucb0-does-not-send-expected-data-to-an-i2c-master

部件号:MSP430F2274
主题中讨论的其他部件: MSP-TS430DA38

有两个具有MSP430F2274的卡,一个使用UCB0作为I2C主卡,从需要成为从属设备的相同卡读取所选数据。 从UCB0代码似乎响应,但未返回正确的数据。 卡或I2C总线上均不涉及其它设备。

 

卡是自定义的,基本上是TI MSP-TS430DA38的子集,在过去5年里,在多个项目中都没有出现任何问题。

 

两个‘-2274都运行时DCO =8MHz,SMCLK =1MHz,I2C时钟=100KHz。 10K的I2C上拉位于主控制器上,2个卡通过电线连接~6英寸长。

 

当仅连接到具有代表性的I2C设备(特别是TCS3.4725万颜色传感器芯片)时,Master 430按预期工作,在该设备上,Master发送一个标识目标寄存器的“命令”字节,而TCS3.4725万响应从指定寄存器返回2个字节的数据。 ‘S此类交易的处理图:

用我的原型'430 Slave替换TCS3.4725万,相同的'430 Master会看到以下内容;请注意I2C数据字节0x7F, 0xFF:

 

工具是CCS v 5.5 .0.0.0077万 ,带有MSP-FET430-UIF,并且与-2274有2线“SBW”连接。

 

从代码如下所示(已尝试了多种变体),在从接收模式到传输模式的过渡过程中,我必须缺少一些详细信息:

初始化在“init_430”文件中为:

从机主电源为

请注意,此从属代码的第29行和第33行尝试发送0x55和0xAA的数据,而‘sCOPE显示0x7F,0xFF。

 

感谢您提供帮助/解释…

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

    我提交的代码的'scope Plots和"clips (剪辑)"未显示-正在尝试修复...

    '从TCS3.4725万读取的COPE图解:

    但是从从属设备430读取时显示0x7F 0xFF的数据:

    从机初始化代码:

    从机主菜单:

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

    要检查的一件事:请在启用中断之前尝试清除USCI软件重置。

    此外,请确保您不需要使用任何USCI中断(您的代码目前不包括任何中断)。 您可以使用产品页面上的用户指南和软件示例了解详细信息。 具体而言,请参见示例msp430x22x4_uscib0_i2c_05.c,它是I2C从属方示例。

    有关调试常见串行通信问题的指南,请访问:www.ti.com/lit/an/slaa734/slaa734.pdf

    此致,
    Nathan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Nathan,谢谢你的答复。
    我目前没有使用中断(当我让计时器A闪烁LED作为"心跳"时,"启用中断"是剩余的)-我现在也取消了启用... 我避免了中断的复杂性,因为处理器没有其他事情可做,这不是一个功耗最低的应用程序。
    我还在回路结束时添加了一个短延迟,以便在恢复操作之前保持UCB0重置。 这两个变化都不会影响结果。
    我之前查看过示例项目,但没有看到与我需要的"command"字节(稍后)相匹配的项目,该字节将告诉从机主机要读取的小数组中的哪些字节。 现在来看这些示例(...UCB0_I2C_05.c,_11.c和_13.c),我注意到它们使用的是UCSTPIFG和UCSTIFG标志,所以我将沿着这条路走一段时间。
    我正在使用《用户指南》,并已阅读SLAA734.pdf以及-274勘误表文档
    如果时间允许,我会坚持下去(其他摩尔不断出现),如果成功,我会重新发布;同时,我也会感谢其他意见。