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.

[参考译文] TMS570LS3137:关闭外设时出现问题

Guru**** 2555630 points
Other Parts Discussed in Thread: TMS570LS3137, HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1232405/tms570ls3137-issue-with-turning-off-periferals

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

您好! 我叫 Leandro
在我的当前项目中、我使用的是 TMS570LS3137微控制器、我需要关闭某些
外设以节省功耗(我的意思是、禁用外设时钟)。 我发现这个应用报告
通知如何操作: www.ti.com/.../spna173.pdf
TS=1681316353136&ref_url=https%253A%252F%252Fwww.google.com%252F。 名为"减少
的超低功耗"。
该报告建议使用外设关闭设置寄存器0 (PSPWRDWNSET0)并
外设断电设置寄存器1 (PSPWRDWNSET1)来禁用给定外设的时钟。
这32位寄存器代表每4位的"外设选择"、而这4位代表
通信。 幸运的是、应用程序报告提供了一个表格(表5)、说明了哪些位
必须进行设置以有效禁用某些外设的时钟。
该报告还举例说明:
"禁用 MibSPI1的示例
相应的 PS 解码0xFFF7F400和0xFFF7F7FF 之间的所有地址。 MIBSPI1和
SPI2按如下方式映射至此 PS2:
•PS2象限0和象限1用于 MibSPI1、总共512字节
•PS2象限2和象限3用于 SPI2、总共512字节
为了禁用 MibSPI1、外设断电设定寄存器0 (PSPWRDWNSET0)的位8和9
"我得走了。"
我面临的问题是我无法设置这些位。 事实上、不仅是这些、而且还有更多。
在一个简单的示例中、我尝试设置寄存器中的所有位、但只有少数几个进行了响应。
我可以在 tryng 之后读取 PSPWRDWNSET0寄存器来设置所有位:
01010000000100010000000100000101b
我们可以看到位8和位9没有被设置、所以关闭 MibSPI1的示例对我来说失败了。
当我尝试设置所有这些位时、我处于管理员模式。
那么、问题是、为什么不所有位都进行设置? 我如何才能知道外设时钟是否确实
是否禁用?
关于我使用的项目,我刚才做了以下操作:
1-以 TMS570LS3137为目标、创建了一个新的 Compose Studio Code 项目。
创建了一个新的 HalCoGen 项目(与 CSS 项目相关联)并且禁用了所有可用的驱动程序
外设。 我使用这些设置生成了代码。 我尝试过使用和不使用 FreeRTOS 的方法。
我唯一添加到 main 函数的内容就是置位外设断电设置中的所有位
寄存器1 (PSPWRDWNSET1)和外设断电置位寄存器0 (PSPWRDWNSET0)
您能帮助我意识到我做错了什么吗?

提前感谢!

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

    PSPWRDWNSET0寄存器控制 PS0-PS7。 因此、PS[0]由 PSPWRDWNSET0[3]的低4位控制,而 PS[2] 由 PSPWRDWNSET0[11:8]控制。 每个 PS 由4位控制。  

    MibSPI1 -- PS[2]-- PSPWRDWNSET0[10]应该被置位,第11位不被置位。

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

    QJWANG 你好!!


    让我看看我是否理解。 我认为您的回答中有一个小错误、但这让我意识到了可能的解决方案。
    因此、MibSPI1位于0xFFF7F400和0xFFF7F5FF (512B)之间、SPI2在0xFFF7F600和0xFFF7FFF (再次为512B)之间。 两个都属于 PS[2](PSPWRDWNSET0[11:8])、但是因为 MibSPI1首先出现、MibSPI1由位8和9控制、而 SPI2由位10和11控制。 (我认为这是一个小错误)。 如果我是正确的、那么在禁用 MibSPI1示例中的应用报告也是正确的。
    必须设置位8和位9、但由于您在答案中发布了该图像、我知道只有第一个位(位8)会做出响应并有效地进行设置、对吗?
    这就是我尝试设置整个寄存器、只有位8响应此外设的原因。 相同情况适用于其他外设、也许每个外设仅响应1个。 在此提醒、以下是尝试设置所有32位后整个寄存器 PSPWRDWNSET0的读取结果:
    01010000000100010000000100000101b


    如果您同意我的推理、请告诉我。


    非常感谢!

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

    是的,MibSPI1 --  PSPWRDWNSET0[9:8]=[0,1]

    我知道只有第一位(第8位)会响应并有效地获得设置,我是不是正确吗?

    您的理解是正确的。

     未设置例如位9的未实现位。