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.

[参考译文] RTOS/AM3352:访问 RTC 寄存器时出现问题

Guru**** 2553260 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/599305/rtos-am3352-trouble-accessing-rtc-registers

器件型号:AM3352

工具/软件:TI-RTOS

是的、我又来了...

我们有一个新的定制板、我似乎无法访问 RTC 寄存器

我正在尝试使用 TI RTOS 和一些自定义代码来启动此操作

我知道我需要打开功能时钟才能访问寄存器。 我在技术手册的 RTC 集成部分中看到、功能时钟为 PD_RTC_RTC32KCLK (当您进行搜索时、它不会在文档的其他位置显示、因此很难跟踪)和 CLK_32K_RTC

我的问题从两个器件开始、我不知道是由哪个器件导致的。  当我在电路板上电时查看我的晶体(电路板中未加载代码)时、我不会得到任何信号。  当我尝试使用调用启用时钟时:

enableModule (CM_RTC_RTC_CLKCTRL、
CM_RTC_CLKSTCTRL、
CM_RTC_CLKSTCTRL_CLKACTIVITY_L4_RTC_GCLK);

它调用此例程:

void enableModule (volatile U32 * clkCtrlReg、volatile U32 * clkStCtrlReg、U32 clkActMask)

/*启用模块*/
*clkCtrlReg = PRCM_MODULEMODE_ENABLE;
/*检查模块启用状态*/
while (PRCM_MODULEMODE_ENABLE!=(* clkCtrlReg & PRCM_MODULEMODE_MASK));
/*检查时钟活动-已取消*/
while (clkActMask!=(* clkStCtrlReg & clkActMask));
/*检查空闲状态值-应该处于功能状态*/
while (((PRCM_MODULE_IDLEST_FUNC << PRCM_IDLE_ST_SHIFT)!=(* clkCtrlReg & PRCM_IDLE_ST_MASK));

它在最后一个 while 循环中被捕获:

while (((PRCM_MODULE_IDLEST_FUNC << PRCM_IDLE_ST_SHIFT)!=(* clkCtrlReg & PRCM_IDLE_ST_MASK));

我不知道代码是因为没有信号而被捕获、还是因为时钟未启用而没有信号。 或者、我可能会先启用错误的选项。

因此、我无法看到或访问 RTC 寄存器。 当我查看 CM_RTC_CLKSTCTRL 寄存器时、我看到时钟处于激活状态、模块处于 SW_WKUP 模式。 当我查看 CM_RTC_CLKCTRL 时、它处于"事务"状态、从不离开

我的 GEL 文件基于 Beagle Bone Black GEL 文件、当我使用相同的代码、使用相同的仿真器(我添加了 JTAG 头)在 Beagle Bone Black 板上进行仿真时、我可以使用 Beagle Bone Black GEL 文件获取 RTC 寄存器。 当我将我们的硬件原理图与 Beagle Bone 进行比较时、它们非常相似。  

我想、由于 Beagle Bone Black 开发板上有代码、它会在我有机会对 RTC 时钟进行仿真之前对其进行初始化、并且在我运行代码时、所有内容都已启用、因此看起来不错。 因此、我想我缺少一些允许 RTC 时钟运行的东西、但我不知道这是什么

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    RTOS 团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    此问题是否与您在2016年11月发布的问题相关?
    e2e.ti.com/.../555507
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    从某种意义上说、是的。 我们有一个新的板、它纠正了 RTC 的问题(对1.8V 引脚施加3.3V 电压)、但同样的问题仍然存在、因此修复该引脚上的电压电平不能修复我们希望的问题。 我又回到了思考这可能是一个软件问题、因为 RTC 电路看起来非常像 Beagle Bone Black、我知道这是可行的。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我的内核 M4时钟(200MHz)似乎已选通(ST_HSDIVIDER_CLKOUT1)、但 GATE _CTRL 设置为 CLK_Autogate、我认为这就是我无法访问我的寄存器的原因。

    我的值为(具有19.2MHz 器件)
    N = 38
    M = 2031

    M4 = 10
    M5 = 8
    M6 = 4

    这些值是否存在任何问题? 当我显然尝试使用时钟时、是否有理由对其进行门控? 要解锁时钟、我必须怎么做? 在时钟树工具中、它始终显示为已取消

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

    最好尝试使用 TRM 的"20.3.4用例"部分中显示的步骤对此进行测试、但看起来您甚至无法通过步骤1。  一旦您启用到 RTC 模块的时钟、您至少应该能够打开一个内存窗口并查看 RTC 模块上的内容。  由于您无法为板上的 RTC 模块供电、我想知道您是否遇到问题。  

    查看原理图检查清单的 RTC 部分

    并查看您是否已正确连接所有组件。  该表描述了 RTC 的相关信号及其连接方式(根据您的用例)。  

    此致、

    James

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您验证我没有错过软件中的任何内容。

    我们似乎在原理图检查清单中使用了错误的列。 我们没有将 CAP 线路连接到 Vcore、一旦建立连接、我就能够毫无问题地激活时钟、现在我可以看到寄存器。 谢谢你