工具/软件: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 时钟运行的东西、但我不知道这是什么
