(在阅读此帖子时、请务必阅读我的进一步回复、以澄清并有效回答我自己的问题。)
您好!
我们的设计使用两个 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;这是不同的。