NXP MCU 技术论坛
直播中

南风一号

9年用户 1048经验值
擅长:EMC/EMI设计
私信 关注
[问答]

是否可以在没有RTC时钟输入的情况下在基于LS1043的定制板上使看门狗正常工作?

是否可以在没有 RTC 时钟输入的情况下在基于 LS1043的定制板上使看门狗正常工作?
我们可以将另一个内部 clock source 设置为看门狗的 input 吗?
提前致谢

回帖(1)

张宇

2025-4-16 18:05:21

在基于LS1043的定制板上,即使没有外部RTC时钟输入,也可以通过以下方式使看门狗正常工作:


1. 确认看门狗的时钟源选项



  • 根据LS1043参考手册,看门狗模块(通常为SWDT或类似模块)的时钟源通常支持内部时钟(如总线时钟分频或内部RC振荡器),而非强制依赖外部RTC。

  • 关键步骤:查阅手册的"Watchdog Timer"和"Clock Configuration"章节,确认看门狗时钟源的可选项。例如,LS1043的看门狗可能默认使用平台时钟(如platform_clk)或通过寄存器配置选择内部源。


2. 配置内部时钟源



  • 修改寄存器设置:如果看门狗支持多路时钟输入,需在初始化代码中配置相关寄存器以选择内部时钟。例如:
     // 伪代码示例:设置看门狗时钟源为内部RC振荡器
    WDT->CLK_SRC_SEL = 0x1;  // 假设0x1对应内部时钟

  • 分频处理:若内部时钟频率较高(如系统主频),可能需要配置分频器以延长超时周期:
     WDT->PRESCALE = 0x10;  // 分频系数


3. 超时时间计算



  • 假设选择内部时钟频率为40 MHz,分频系数为1024,则看门狗时钟频率为:
    [
    f_{wdt} = frac{40 text{MHz}}{1024} approx 39.0625 text{kHz}
    ]

  • 若需设置超时时间为1秒,则计数器值应为:
    [
    text{Timeout Count} = 39.0625 text{kHz} times 1 text{s} = 39062.5 approx 39063
    ]

  • 代码配置示例:
     WDT->LOAD_VALUE = 39063;  // 设置超时计数值


4. 验证与测试



  • 喂狗测试:在代码中定期喂狗,确认系统不重启。

  • 强制超时测试:注释掉喂狗代码,观察看门狗是否在预期时间内触发复位。

  • 测量复位时间:使用逻辑分析仪或GPIO翻转信号测量复位间隔,验证实际超时时间是否符合计算值。


5. 注意事项



  • 时钟稳定性:内部RC振荡器可能存在温漂或精度问题,但对看门狗功能影响较小,因其核心目标是检测系统卡死而非精确计时。

  • 低功耗模式影响:若系统进入低功耗模式导致内部时钟关闭,需确保看门狗时钟源在低功耗下仍有效(例如使用独立低功耗振荡器)。


结论


可行。LS1043的看门狗无需外部RTC时钟,可通过内部时钟源(如平台时钟或RC振荡器)配置实现。需通过寄存器选择时钟源并计算超时值,最终通过硬件测试验证功能。具体寄存器地址和位定义需参考LS1043参考手册的Chapter 12: Watchdog TimerChapter 5: Clocking部分。

举报

更多回帖

发帖
×
20
完善资料,
赚取积分