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.

[参考译文] MSP430FR2433:当 FR2433用作 SPI 从器件时、MISO 上有时会出现第一位错误

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/714790/msp430fr2433-sometimes-first-bit-error-on-miso-when-fr2433-acts-as-spi-slave

器件型号:MSP430FR2433
主题中讨论的其他器件:MSP430F5232MSP430FR2311

香榭丽舍

我向我们的客户提出这一问题。

我们使用 FR2433作为 eUSCI_A 的 SPI 从器件、其中 UCCKPH=1、UCCKPL=0;

奇怪的是、有时 MISO 的第一个位是错误的。

如下所示、FR2433应发送0x40、但发送0xC0、这是错误的、主机 MCU (SPI 主设备)也读取0xC0。

此症状仅在我们连接 到主机 MCU 时出现、但我们不通过将外部 SPI 主仿真器与 TI FR2433 Launchpad 配合使用并手动逐一发送 SPI 命令来观察。

我们注意到勘误表上的 USCI47。

http://www.ti.com/lit/er/slaz664l/slaz664l.pdf#page8

但是、即使我们尝试通过先将 SCK 强制为低电平、然后将 MSP430复位来使用该变通办法、它也不起作用。

请注意、相同的主机 MCU (相同的 SPI 代码)可用于连接到 MSP430F5232 (USCI 充当 SPI 从器件)、但其电路板设计有所不同。

我们刚刚将 F5232代码移植到 FR2433上。

您是否有任何建议让我们来调试它?

您认为这是 USCI47勘误表吗?

这是主机 MCU 和 MSP430FR2433之间的时序相关问题吗?

F5232 SPI 从设备和 FR2433 SPI 从设备有何区别?

韦恩

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

    我已经设置了 MSP430FR2311的测试、该测试具有相同的勘误表 USCI47、代码示例为"msp430fr231x_euscia0_SPI_10.c"、只需更改 UCCKPH=1、UCCKPL=0。 结果没有问题。 我再次通电三次。 您的 EUSCI 中还有什么其他配置、如时钟速度和 MSB 优先选择?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Gary、

    对不起、我不小心碰到了解决的问题、但这个问题尚未解决。

    1.我想确认 USCI47好像第一个位丢失了、然后数据被移位了、但有时我们只是错过了第一个位。 您是否认为这与 USCI47有关。

    我们的时钟为 SMCLK/2 = 8MHz。 SPI 主时钟大约为1.2MHz。

    3.我在下面上传更多图片。

    在下面、数据0x48是预期值、但您可以看到 MISO 数据非常接近时钟上升沿的时序。 是的、时间非常紧。

    在下面、数据0xE2不正确。 (正确应为0x62)。

    您可以看到 MISO 数据引脚的变化晚于上升时钟。

    您是否有任何关于我们进行调试的建议?

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

    MSP430在接收数据后是否会进入低功耗模式? 第二张图片很奇怪。 主器件和摊铺机之间的导线是长还是仅在同一 PCB 上? 我将尝试在我的一侧重现此错误。
    客户是否可以更改 SPI 的配置,如更改 UCCKPH=0?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好

    也许我找到了原因。您能帮我验证一下吗?

    由于 MISO 上的第一个位变化、您将数据移动到 UCxTXBUF 的时间如下所示:

    原因可能是没有足够 的数据将数据移动到 UCxTXBUF。

    要验证这一点、您可以按照下面的测试进行操作

    1、使能 RX 中断、 在发送之前的数据时立即更新 UCxTXBUF。

    2.增加两字节数据传输之间的间隔时间。

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

    我已经检查过这个问题不是 USCI47的情况。 因为这个问题不满足 USCI47条件的第二个。 故障模式是不同的(这个问题只是漏掉了第一个位而没有移位)。
    对于您的用例(您无法在主器件端进行更改)、我在这里提出了一些建议:
    1.将 MCLK 配置为16MHz 以提高数据处理能力
    2、尽快将输出数据移入 UCxTXBUF、只需输出0xf0和0x62即可进行测试
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Gary、

    你的是对的。
    在测试后、我们通过任一方法解决了这一问题
    1) 1) SPI 主器件增加字节之间的时间间隔
    2) 2)将 MCLK 配置为16MHz

    非常感谢您的支持。

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

    更多更新。
    在进行更多测试后、如果我们仅将 MCLK 配置为16MHz、我们发现仍然存在第一个缺失的位。
    因此、我们将要求 SPI 主器件增加字节之间的时间间隔。

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

    你(们)好

    这听起来我们找到了根本原因:MSP430的处理时间不够。
    MSP430过程中优化的代码也将解决问题。
    我现在将关闭此主题、您无需回复此主题。


    此致
    Gary