NXP MCU 技术论坛
直播中

尚文清

8年用户 1710经验值
私信 关注
[问答]

关于S32G中LLCE时钟问题求解

我正在使用 S32G274rdb2 的硬件,并根据 AN13750 实现了 bootloader 来驱动 3 M 核 A 核,每个模块的以下版本如下:
LLCE:1.0.8, RTD:4.0.2, Linux_BSP:BSP42 (内核:5.15.158)
我在 M0内核中初始化了 LLCE,并将 llce_pe 时钟配置为40M (FXOSC_CLK),并将 LLCE_can 的波特率配置为250k,但我通过示波器捕获的 LLCE_can 输出时钟不正确,可能是什么原因?
在 u-boot 中使用 clk dump llce_can_pe clock 为 0,如下所示:
0 0 |-- llce_can_pe
2000000000 0 |-- llce_sys
80000000 0 |-- llce_per

回帖(1)

李鸿洋

2025-4-10 17:46:14

针对S32G274开发板中LLCE_CAN时钟配置异常的问题,以下是逐步排查和解决方案:


1. 确认FXOSC_CLK时钟源状态



  • 硬件检查:使用示波器测量FXOSC引脚,确保外部晶振正常工作,输出频率正确(如40MHz)。

  • 时钟源选择:检查LLCE_PE模块的时钟源配置寄存器(如CMU_LLCE_CLK_SEL),确认已选择FXOSC_CLK而非默认的PLL或其他源。


2. 检查分频器配置



  • 分频系数计算:若LLCE_CAN波特率基于40MHz,需确保分频寄存器(如CMU_LLCE_CAN_CLK_DIV)正确设置。例如,250k波特率可能需分频系数为:
     分频系数 = 时钟源频率 / (波特率 * 采样点因子)
    例如,40MHz / (250k * 16) = 10 → 分频系数设为9(寄存器值通常为分频系数-1)。

  • 寄存器值验证:核对代码中分频参数是否按硬件要求配置,避免计算错误或偏移量问题。


3. 启用时钟门控



  • 门控寄存器设置:检查LLCE_CAN和LLCE_PE的时钟门控使能位(如CMU_LLCE_CLK_EN),确保对应位被置1。Uboot中clk dump显示为0可能表明门控未开启。


4. 验证初始化顺序



  • 依赖关系:确保先配置时钟源和分频,再使能门控。部分硬件要求严格的操作顺序,如先解锁CMU模块再修改配置。

  • M0内核代码检查:确认LLCE初始化代码未被其他代码(如A核驱动)覆盖,尤其是在多核协作场景下。


5. 排查软件版本兼容性



  • 已知问题查询:参考NXP社区或版本发布说明,确认LLCE 1.0.8与RTD 4.0.2是否存在时钟配置的兼容性问题。必要时升级至修复版本。


6. 设备树(DTS)配置



  • 时钟树定义:检查Linux设备树中LLCE节点的clocks属性,确认引用正确的时钟源(如fxosc_clk)并设置合理分频参数。
     llce_can: can@40000 {
         clocks = <&llce_clk S32G_CLK_LLCE_CAN_PE>;
         clock-names = "llce_can_pe";
         ...
    };

  • Uboot时钟初始化:确认Uboot中未禁用LLCE时钟,部分平台可能在启动阶段默认关闭未用模块时钟。


7. 寄存器级调试



  • 直接读写CMU寄存器:在Uboot或M0代码中,通过寄存器读写验证配置是否生效。例如:

    • 读取CMU_LLCE_CLK_SEL确认源选择。

    • 检查CMU_LLCE_CLK_DIV是否写入预期分频值。

    • 确认CMU_LLCE_CLK_EN位被正确置位。



8. 示波器测量点选择



  • 信号探测:在LLCE_CAN的TX引脚测量波形,计算实际波特率。若为250k,位时间应为4μs(1/250,000)。若偏差较大,需回溯时钟配置。


9. 参考示例代码



  • AN13750对照:确保Bootloader中LLCE初始化流程与应用笔记完全一致,尤其是时钟相关代码段。例如:
     // 选择FXOSC作为LLCE_PE时钟源
    WRITE_REG(CMU_BASE + CMU_LLCECLKSEL, FXOSC_SEL_VALUE);
    // 设置分频系数(假设分频寄存器为1分频)
    WRITE_REG(CMU_BASE + CMU_LLCECLKDIV, 0x0);
    // 使能时钟
    SET_BIT(CMU_BASE + CMU_LLCECLKEN, LLCE_CAN_CLK_EN_BIT);


10. 联系NXP支持



  • 提交SR:若上述步骤无法解决,整理寄存器配置日志、示波器波形及代码片段,通过NXP官方支持渠道提交服务请求(SR),寻求进一步调试建议。


通过系统性地检查时钟源、分频、门控及初始化流程,通常可定位并修复LLCE_CAN时钟配置异常问题。确保软硬件配置与参考手册严格一致,并利用寄存器级调试工具验证关键配置步骤。

举报

更多回帖

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