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.

[参考译文] TMS570LC4357:通过 pcrREG3->PSPWRDWNSET0寄存器关闭 MibSPI3

Guru**** 2477065 points
Other Parts Discussed in Thread: HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/984414/tms570lc4357-power-down-of-the-mibspi3-through-the-pcrreg3--pspwrdwnset0-register

器件型号:TMS570LC4357
主题中讨论的其他器件:HALCOGEN

您好!

这与我之前的问题有关: e2e.ti.com/.../982659
对于我们的项目、我们有一个要求、即我们应该禁用未使用的外设。 我通过为 PSPWRDWNSETx 和 PCSPWRDWNSETx 寄存器中未使用的外设写入适当的位来禁用时钟和存储器、如上面的主题所述。
为了验证时钟信号的翻转实际上会禁用未使用的外设、我还为 MibSPI3禁用了时钟信号、MibSPI3在我们的应用中用于总线主控配置。 我的期望是在 MibSPI3的输出数据线路上没有任何活动。
但是、当我对 MibSPI3进行写操作时、我仍然可以看到数据输出在 MOSI 线路上、并且 CLK 信号也存在、并且似乎与从器件的通信仍在工作。 这是预期行为吗? 我希望禁用该外设的时钟和存储器会将其关闭、对其进行写入将不起作用、尤其是在外部引脚上。

这是 pcrREG3->PSPWRDWNSET0寄存器的内容、我的理解是在该寄存器中、将4-8位置位以禁用 PS[1]位、该位是与 MibSPI3相关的位。



我正在向 PSPWRDWNSET0写入(0xF << 4)(除其他外)、这会导致值0x5出现在 PSPWRDWNSET0的 PS[1]字段中。 我认为这是可以的、因为 TRM 中有一条注释说"只有在相应位位置具有从器件的位才会被实现。 写入未执行的位无效、读取为0。"  我认为未实现未设置位。
我还通过写入 PCSPWRDWNSET0寄存器位来禁用 MibSPI3 RAM。

我不确定这是否重要、但我们的初始化过程首先通过 将 FFs 写入 PSPRWRDWNCLRx 寄存器来启用所有时钟、然后在不同的位置禁用我们不使用的模块。

谢谢、此致、

Bartek

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

    您好、Bartek、

    请在以下主题中查看 Sunil 的反馈:

    e2e.ti.com/.../tms570lc4357-peripheral-power-down-issue

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

    每个外设选择(PS)寻址一个1KB 的区域、然后将该区域分为四个象限[3 - 0]。 如果外设采用两个象限、则它由影响象限0或象限2的位控制。

    考虑 MibSPI1和 SPI2寄存器的示例:

    MibSPI3寄存器位于从0xFF7_F800到0xFF7_f9ff 的 PS1的两个象限中。

    和 MIBSPI4寄存器位于从0xFF7_fA00到0xFF7_fBff 的 PS1的两个象限中。

    PS1的四个象限的控件位于寄存器 PSPWRDWNSET0/CLR0的位7至4中。 MibSPI3由位4控制、到 MIBSPI4的时钟由位6控制。  位5和位7未使用、将读作零。

    因此 、您对 PSPWRDWNSET0的配置是正确的。

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

    那么、如果我理解正确-在完全给定外设的情况下、真的无法关闭?

    正如我提到过的-我们的项目中有禁用未使用模块的要求、如何才能实现它?

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

    另一个选项是使用 PCR 中的 PPROTx 寄存器来启用针对所选外设的意外写入的保护。 这将防止 CPU 处于用户模式时的写入(不精确的中止响应)。 不过、当 CPU 处于特权模式时、允许写入。

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

    是的、我也考虑了这一点、但不幸的是、我们在应用中不使用用户模式、我们只在特权模式下运行、这就是我询问关闭未使用的模块的原因。

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

    您好、 Bartek、

    PSPPWDSET0的第4位和第6位被置位后、我注意到它仍然会生成 SPICLK、但看不到数据信号(SOMI、SOMO)。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="447770" URL"~/support/microcontrollers/other/f/other-microcontrollers-forum/984414/tms570lc4357-power-down-of-the-mibspi3-through-the-pcrreg3--pspwrdwnset0-register。]我希望禁用该外设的时钟和存储器将会关闭该外设、写入该外设将不会产生任何影响、尤其是在外部引脚上。

    TMS570LC43x 16/32 RISC 闪存微控制器技术参考手册(修订版 A) 包含:

    即、如果您在  HALCoGen 中配置 MIBSPI3端口配置以将引脚模式设置为 GIO、则 SPI 外设应无法生成事务。

    还有 一个 nRESET 控制位、可保持为零以将 SPI 外设保持在复位状态:

    为了防止外部引脚发生变化、您还可以 清除 DIR (输出方向)位并在引脚上启用上拉或下拉 、以将引脚与驱动隔离。