单片机/MCU论坛
直播中

王斌

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

请问如何确定和配置 HRPWM 周期值?

你好,我想控制PWM开关频率,精度为10MHz±1%(100KHz)。
PSoC™ Control C3 可以为 PWM 外设提供 240MHz 时钟。因此,通过设置 Period=24,PWM 将以 10MHz 的频率进行传输。
然而,使用普通的PWM外设,将周期改变1将导致约400KHz的偏差。
CLK_HF3=240MHz,周期=24
输出频率=240/24=10MHz
周期f_out(MHz)
-----------------------------
23 10.43
24 10.0
25 9.6
26 9.23
问1.
请告诉我使用 HRPWM 以 100KHz 为步长控制 f_out=10MHz 的设置。
问2.
如果我还使用 HRPWM 生成死区时间,最小死区时间设置是否与 CLK_HF3 的周期相同?

回帖(1)

h1654155275.5916

2025-8-18 16:39:22

好的,我们来解决你在 PSoC™ Control C3 上使用 HRPWM 实现精确频率控制和死区时间的问题。


核心问题分析:




  1. 普通 PWM 的限制: 如你所计算,当系统时钟 CLK_HF3 = 240 MHz 时:



    • Period = 24 -> f_out = 240e6 / 24 = 10.000 MHz (完美)

    • Period = 23 -> f_out ≈ 10.435 MHz (偏差 +435 KHz)

    • Period = 25 -> f_out = 9.600 MHz (偏差 -400 KHz)

    • 你需要 ±100 KHz 的精度 (±1%),但相邻整数周期值之间的最小频率跳变高达 ~400 KHz,远超你的要求 (±100 KHz)。普通 PWM 的 频率分辨率 (Δf) 在此设置下是 f_clk / Period² ≈ 240e6 / (24*24) ≈ 416.7 KHz,确实太大。




  2. HRPWM 的作用: HRPWM (High-Resolution PWM) 的核心在于通过在一个基础时钟周期内插入微小的延时(微步),极大地提高了 PWM 信号的占空比周期/频率的分辨率。它使用一个额外的计数器(微步计数器)和精密延时线来实现亚时钟周期的控制。




解答 Q1: 使用 HRPWM 以 100KHz 为步长控制 f_out = 10MHz


目标频率 f_out = 10.000 MHz。系统时钟 f_clk = CLK_HF3 = 240 MHz




  1. 计算基础周期值 (Period):



    • 基础周期值 Period 仍然是一个整数,它决定了 PWM 频率的“骨架”。

    • 计算 Period = round(f_clk / f_out) = round(240e6 / 10e6) = round(24) = 24

    • 使用 Period = 24 作为基础值。此时,如果没有 HRPWM,输出频率正好是期望的 10.000 MHz。




  2. 理解 HRPWM 的频率微调:



    • HRPWM 允许你在基础周期值 Period 之上进行微调。

    • 这个微调通常通过一个 HRPWM 扩展寄存器 (例如 HRP_PERIOD) 来实现,这个寄存器通常是 8 位 的。

    • 微调的本质是轻微地延长或缩短每个 PWM 周期

    • 最小频率调整步长 (Δf_min) 是实现精细控制的关键:
      Δf_min ≈ f_clk / (Period * (2^N_hrp))

      • N_hrp: HRPWM 扩展寄存器的位数 (通常 8)。

      • Period: 基础周期值 (24)。

      • f_clk: 系统时钟 (240 MHz)。

      • 代入计算: Δf_min ≈ 240e6 / (24 * 256) = 240e6 / 6144 ≈ 39.0625 KHz





  3. 评估分辨率是否足够:



    • 计算得到的 Δf_min ≈ 39.06 KHz

    • 你的要求是 100 KHz 步长

    • 39.06 KHz < 100 KHz。这意味着 HRPWM 提供的分辨率 (39.06 KHz) 远高于 你要求的步长 (100 KHz)。完全满足需求。你甚至有足够的余量实现更精细的控制(如果需要)。




  4. 配置寄存器实现精确 10 MHz 和 ±100 KHz 调节:



    • 对于 精确的 10.000 MHz

      • Period = 24

      • HRP_PERIOD = 0 (或默认值,表示不对基础周期进行 HR 延长/缩短)。理论计算频率 f_out = f_clk / Period = 240e6 / 24 = 10.000 MHz


    • 对于 10.000 MHz + 100 KHz = 10.100 MHz

      • 目标频率 f_target = 10.100 MHz

      • 所需周期时间 T_target = 1 / 10.100e6 ≈ 99.0099 ns

      • 基础时钟周期 T_clk = 1 / 240e6 ≈ 4.1667 ns

      • 基础周期值 Period 仍设为 24 (对应基础时间 24 * 4.1667ns = 100ns)。

      • 目标时间比基础时间短了 100ns - 99.0099ns = 0.9901ns

      • 需要将每个周期缩短 0.9901ns

      • 计算所需的 HR 微步数 (缩短周期):
        Steps_shorten = ΔT / (T_clk / 2^N_hrp) = 0.9901ns / (4.1667ns / 256) = 0.9901 / 0.016276 ≈ 60.82

      • 由于微步数是整数,取整 Steps_shorten = 61 (通常向下取整或四舍五入取决于具体实现和效果)。

      • HRP_PERIOD 的值通常与缩短量相关。查阅 PSoC™ Control C3 TRM! 常见的方式是:

        • 设置 HRP_PERIOD = Steps_shorten (例如 61) 表示缩短周期。

        • 或者设置 HRP_PERIOD = (2^N_hrp) - Steps_shorten (例如 256 - 61 = 195)。

        • 关键:你需要查阅 PSoC™ Control C3 的寄存器手册 (TCPWM_HRPWM_CNT_PERIOD / TCPWM_HRPWM_CNT_HR_PERIOD 或类似名称) 来确定值的含义和方向(是延长还是缩短周期)。



    • 对于 10.000 MHz - 100 KHz = 9.900 MHz

      • 目标频率 f_target = 9.900 MHz

      • 所需周期时间 T_target = 1 / 9.900e6 ≈ 101.0101 ns

      • 基础周期 Period=24 对应 100ns

      • 目标时间比基础时间长了 101.0101ns - 100ns = 1.0101ns

      • 需要将每个周期延长 1.0101ns

      • 计算所需的 HR 微步数 (延长周期):
        Steps_lengthen = ΔT / (T_clk / 2^N_hrp) = 1.0101ns / (4.1667ns / 256) = 1.0101 / 0.016276 ≈ 62.06

      • 取整 Steps_lengthen = 62

      • 同样,根据 TRM 设置 HRP_PERIOD

        • 可能是 Steps_lengthen (62) 表示延长。

        • 或者 (2^N_hrp) - Steps_lengthen (256 - 62 = 194)。


      • 注意:最大延长/缩短量通常有限制(例如不超过 1 个 T_clk),102.08ns 和 97.92ns 都在 24 * T_clk ± 1 * T_clk = (96.0008ns, 104.0008ns) 的可调范围内。





  5. 配置步骤总结 (概念性):



    1. 配置 TCPWM 时钟源为 CLK_HF3 (240 MHz)

    2. 选择支持 HRPWM 的 TCPWM 实例。

    3. 配置 TCPWM 为 PWM 模式 (通常 CPWMPWM with PWM and HRPWM enabled)。

    4. 设置 Period = 24 (基础周期寄存器)。

    5. 设置所需的占空比寄存器 (Compare) 和对应的 HR 占空比寄存器 (HR_COMPARE)。即使你现在只调频率,也要正确设置占空比相关的 HR 寄存器。 如果你不需要精细调节占空比,可以将 HR_COMPARE 设为 0 或默认值匹配 Compare 值。

    6. 根据 TRM 启用 HRPWM 功能 (通常在 TCPWM 配置寄存器中有使能位)。

    7. 根据 TRM 设置 HRP_PERIOD 寄存器:

      • 对于 10.000 MHz: 设为默认值 (通常是 02^N_hrp / 2,需查 TRM)。

      • 对于 10.100 MHz: 设为 61 (或 195 ,取决于 TRM 定义)。

      • 对于 9.900 MHz: 设为 62 (或 194,取决于 TRM 定义)。


    8. 启动 TCPWM 计数器。




解答 Q2: HRPWM 死区时间最小设置



  1. 死区时间 (Dead Time, DT) 原理: 插入在互补 PWM 信号 (如 PWMH 和 PWML) 之间的一段两者都为低电平的时间,防止桥臂直通。通常通过延时开通 (Rising Edge Delay, RED) 实现。

  2. HRPWM 与死区时间: HRPWM 的高分辨率特性同样可以应用于死区时间控制,允许设置纳秒甚至亚纳秒级的精确死区时间。

  3. 最小死区时间 (DT_min):

    • DT_min 不等于 CLK_HF3 的周期 (T_clk ≈ 4.17 ns)。

    • DT_min 由 HRPWM 模块本身的分辨率决定

    • 死区时间的最小步长 ΔDT_min 与 HRPWM 频率微调的步长类似:
      ΔDT_min = T_clk / (2^N_hrp_dt)

    • N_hrp_dt 是用于死区时间控制的 HR 寄存器的位数。对于 PSoC™ 4 / Control C3,死区时间通常也使用 N_hrp_dt = 8 位的 HR 分辨率控制。

    • 因此: ΔDT_min = 4.1667 ns / 256 ≈ 16.28 ps (0.01628 ns)

    • 这个是最小可编程步长


  4. 最小可实现死区时间 (DT_min):

    • 理论上,你可以设置死区时间小到接近于 ΔDT_min (16.28 ps)。 然而,实际的最小可用死区时间受到硬件限制:

      • 比较器传播延时: 产生实际延时链输出的比较器需要一定时间做出响应。

      • 驱动器传播延时: PWM 信号从 GPIO 输出到外部功率器件的驱动电路本身也有开关延时 (Turn-On/Turn-Off Delay)。

      • 噪声裕度: 设计上需要留有余量防止噪声导致误开通。


    • 查阅 PSoC™ Control C3 的数据手册 (DS) 或 TRM: 制造商会在电气特性章节明确给出最小可保证的死区时间参数 (t_DT_min)。 这个值通常在 1ns - 5ns 范围内 (具体值请查手册),远大于 ΔDT_min (16.28 ps),但仍然显著小于基础时钟周期 T_clk (4.17 ns)。

    • 结论: 最小可配置死区时间 (DT_min) 由芯片数据手册保证的最小值决定 (可能在 1-5ns),远小于 CLK_HF3 的周期 (4.17 ns)。HRPWM 的超高分辨率 (16.28 ps) 允许你在 DT_min 以上非常精细地调节死区时间。



关键总结:



  1. Q1 (10MHz ±100KHz):

    • 使用 Period = 24 (基础周期)。

    • 利用 8 位 HRP_PERIOD 寄存器进行微调。

    • 最小频率分辨率 Δf_min ≈ 39 KHz,远小于要求的 100 KHz 步长,完全满足要求。

    • 设置 HRP_PERIOD 的值根据目标频率计算得出 (约 61 / 195 或 62 / 194),具体值含义务必查阅 PSoC™ Control C3 TRM 中 TCPWM_HRPWM_CNT_HR_PERIOD 寄存器的描述。


  2. Q2 (最小死区时间):

    • 最小死区时间 不等于 CLK_HF3 周期 (4.17 ns)。

    • 最小可配置死区时间是芯片参数 (t_DT_min),查数据手册 (可能在 1-5ns 量级)。

    • 死区时间分辨率 ΔDT_min ≈ 16.28 ps (基于 8 位 HR),允许纳秒级精细调节。



强烈建议:



  1. 仔细阅读 PSoC™ Control C3 的寄存器 TRM: 查找 TCPWM_HRPWM_CNT_PERIOD, TCPWM_HRPWM_CNT_HR_PERIOD, TCPWM_HRPWM_CNT_HR_DEAD_TIME (或类似名称) 等寄存器的详细说明,确认 Period, HRP_PERIOD 和死区时间 HR 寄存器的位宽、作用方向 (是延长还是缩短) 和配置方法。

  2. 参考 Infineon 提供的 HRPWM 示例代码和应用笔记: 这些资源通常会提供具体的配置模板和最佳实践。

  3. 验证输出: 使用示波器或逻辑分析仪测量最终的 PWM 频率和死区时间,确保其符合设计要求。HRPWM 的精度依赖于时钟质量和芯片特性。


通过正确配置 HRPWM,你可以在 240 MHz 系统时钟下轻松实现 10 MHz ±100 KHz 的精确频率控制和纳秒级的死区时间设置。

举报

更多回帖

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