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.

[参考译文] MSP430F5359:从模式下的 USCI_B SPI 总线接口不能正常复位

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1026248/msp430f5359-usci_b-spi-bus-interface-in-slave-mode-doesn-t-reset-correctly

器件型号:MSP430F5359

(在阅读此帖子时、请务必阅读我的进一步回复、以澄清并有效回答我自己的问题。)

您好!

我们的设计使用两个 MSP430F5359微处理器。 一个 MSP430充当 SPI 总线主器件、并与包括其他 MSP430在内的多个 SPI 总线从器件相连。 这篇文章介绍了将 其中一个 USCI_B 外设用作 SPI 总线受控器件的 MSP430。

通常、我们的系统工作正常。 加电时、两个器件将各自的 USCI_B 接口初始化为正确的模式(分别为主模式、3线制 SPI 和从模式、4线制 SPI 模式)、一切正常。 当主器件 MSP430寻址从器件 MSP430时、主器件以大约31、500Hz 的频率为 SPI 总线计时。 当主器件在同一 SPI 总线上寻址其他器件时、它的时钟频率为1MHz。 一切都好。

但 MSP430都可能发生故障并重新启动。 在这种情况下、我们发现以下明显的 MSP430F5359硬件故障:

  • 如果在 SPI 总线外设时传入的 SPI 总线时钟正在运行
    初始化为 SPI 总线从器件、然后是中的状态机
    SPI 总线受控外设初始化不正确。 结果就是这样
    永远的 MORE1、SPI 总线受控外设帧不正确
    SPI 总线字节。 对于传输和接收、它都是帧
    字节“几个时钟周期”偏离它们应被组帧的位置
    基于 SPI 总线 STE (“芯片选择”)。 请参阅下面的‘s应付镜头。

滑出的位数是任意/随机的。 在 n ü‘s范围内、滑出的位数为2。 我强调了写入从器件 SPI 总线 TXBUF 的位置、以及在 MISO 上发送这些字节的位置。 您可以看到正确的字节是如何传输的、但相对于 SPI 总线字节的帧方式、减少了两位。

虽然您认为 SPI 总线受控状态机将使用 SPI 总线 STE (“芯片选择”)的每次新断言重新初始化,但情况并非如此。 从一个 SPI 总线事务到下一个 SPI 总线事务,位打滑的值完全相同,这意味着我们的系统,正如当前编码的那样,永远不会从“位打滑”的开始中恢复。

如果在 SPI 总线主控 MSP430寻址并发送到从器件 MSP430 (或者可能是任何 SPI 总线受控器件;我没有选中)时 SPI 总线受控 MSP430发生故障并重新启动、就会发生这种情况。

我们将更改代码、以便在每次从接口的从器件侧检测到故障时执行另一个 SPI 总线从器件复位。 这可以解决问题、尽管可能需要多次尝试、因为主器件尝试 SPI 总线传输时从器件没有发言权。 但很明显、USCI_B SPI 总线受控状态机硬件2的实现存在硬件问题

Atlant

1嗯、直到你在没有运行传入 SPI 总线时钟的情况下再次复位。

2我们知道勘误表 USCI40;这是不同的。

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

    如果‘范围射门太小,我可以给你发送全分辨率射门。

    Atlant

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

    我们已经了解了 SPI 总线时钟和 STE ("芯片选择")信号的信号完整性、两者看起来都很好(尖锐边缘、良好的信号电平、没有噪声可说)。 引线的长度无论如何不能超过大约1英寸/25mm。

    在我包含的特定"范围"中、未标记的"黄色"模拟走线是 SPI 总线时钟信号。 这个特定的'热不捕获 SPI 总线 STE。

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

    啊、我现在发现了这个注释、它似乎与这个问题有关:

    https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/584953/msp430f5359-spi-slave-chip-select-behavior

    其中提到:

    https://www.ti.com/lit/an/slaa734a/slaa734a.pdf?ts=1628621258399:《MSP430 MCU 上 eUSCI 和 USCI 串行通信常见问题解决方案》

    并解释了为什么“STE”不是“芯片选择”。

    我将了解我可以从这些中学到什么!

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

    下面是另一个讨论同一问题的主题:

    https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/251036/spi-ste-functionality-confusion

    也许在我们所有人都被这种混淆的情况下、需要对 SLAU208Q MSP4305xx 和 MSP4306xx 系列用户指南进行更新? 一旦意识到“STE”不是“CS”, 本指南非常清楚,但实际上应该用大字体说明 MSP430微处理器系列的这一分支不会实现 SPI 总线从设备“CS” ,您需要在软件中自行完成,这通常需要将“STE”双接线连接到具有中断功能的 GPIO 以便您可以根据需要复位 USCI 接口。

    或者,将来,TI 是否可以为所有 USCI 接口实施“CS”功能? 非常高兴吗?

    同时,我将把我的线程标记为“已解决”,因为我想我现在已经完全理解了这个问题,幸运的是,我已经将 UCB1STE 的双接线连接到了器件中的一个中断生成 GPIO 引脚,所以我现在已经成功地测试了每次 STE 被置为有效时 UCSWRST 的代码。

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

    我们修改后的代码现在已经运行了600次以上的测试,以前失败的次数大约为4次,因此我认为我们可以安全地说这个问题已“解决”。

    我仍然想知道接口是如何以看似 TI 独有的“从发送启用”而不是 SPI 总线标准“芯片选择”来结束的。

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

    您好、Atlanta,

    非常感谢您对问题的详细描述以及您为找到解决方案而进行的检测工作。  我很抱歉您找到问题所花的时间、也很抱歉文档造成的混淆。   

    对于阅读此帖子的其他人、我将在"MSP430Tm MCU 上常见 eUSCI 和 USCI 串行通信问题的解决方案"中添加一个片段、以方便起见、因为它最好地描述了 STE 和 CS 之间的这种混淆。

    您说得非常出色、我将是火炬手、让我们的家庭用户指南在这个主题中包含更清晰的语言。

    同样、非常感谢您的意见、并对给您带来的不便深表歉意。

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

    丹尼斯:

    您说得非常出色、我将是火炬手、让我们的家庭用户指南在这个主题中包含更清晰的语言。

    谢谢! 这将非常有帮助、尤其是对我之后的文档的读者!

    同样、非常感谢您的意见、并对给您带来的不便深表歉意。

    现在它已经解决了、我在这一过程中学到了很多! 感谢您的回复!

    Atlant