非托管外设系统(UPS)

支持的 IC[ RTL8721Dx ][ RTL8720E ][ RTL8710E ][ RTL8726E ][ RTL8713E ][ RTL8721F ][ RTL8720F ]

简介

UPS 是面向 AC 调光与同步控制场景的专用外设,核心实现多路触发源信号调理与精准触发脉冲生成。通过源选择、数字滤波及逻辑合成,输出可配置的触发信号,驱动调光器工作,全程无需 CPU 干预,保障驱动信号的稳定性与实时性。

特性

  • 可配置的信号源

  • 可配置的输入反向

  • 上升沿检测

  • 多种调光输入信号类型

框图

  • 多路触发源调理

    模块支持多类型触发源输入,包括外部 GPIO 过零检测信号、片内比较器输出信号、音频通道过零检测信号及定时器溢出信号,通过源选择接口灵活切换触发来源。输入信号经极性反向配置、数字去抖滤波处理后,滤除外部信号噪声与毛刺,生成稳定的有效触发信号,为调光同步提供可靠触发基础。

  • 双路触发输出与调光同步逻辑

    稳定后的触发信号分两路输出,直接支撑 AC 调光核心原理: 一路经边沿检测生成触发脉冲,驱动后端定时器启动计数,实现外部过零事件首次触发,对应 AC 市电周期的过零同步节点,为调光脉冲输出锚定基准;

    另一路将稳定触发信号与定时器溢出反馈信号进行或逻辑合成,输出综合触发信号驱动 PWM 模块。既响应外部过零首次触发生成调光脉冲,又在定时器定时到期后二次触发 PWM,生成第二路调光脉冲,精准匹配 AC 调光 “过零同步 + 延时调光” 的双脉冲控制需求。

  • 核心调光原理

    AC 调光的核心是通过控制脉冲输出相位,调节市电半周期内的导通时间,从而改变负载端的平均电压,实现亮度调节。UPS 模块作为触发核心,以 AC 市电过零信号为基准,通过定时器精准控制延时,配合 PWM 生成两路调光脉冲,精准锁定调光相位区间,确保在市电同步周期内完成亮度调节,同时避免过零干扰导致的灯光闪烁,保障调光效果的平滑与稳定。

UPS 的模块框图如下所示。

../../_images/ups_block_diagram.svg

功能描述

定时器

定时器主要用于在接收到外界激励之后,延迟一个固定的时间,重新产生一次激励事件给到 PWM。在实际电路中,定时器的激励不止给到 PWM,还会作为定时器停止的输入信号,以控制定时器每次计时溢出后可以自动停止。 实际调光应用中,定时器经常被配置在电网周期的 1/2, 例如 50 Hz 的电网下,调光定时器的溢出时间往往是 10 ms。

下图是定时器的框图和定时器的时序图。

定时器工作方式如下:

  • 如果定时器在输入端检测到高电平,定时器内部的计数器从 0 开始向上计数。检测到低电平,定时器停止工作。

  • edg_dtc 电路检测到前级激励信号,会触发定时器开始计数。

  • 如果计数器溢出,of_out 溢出信号会输出一个时钟周期的高电平信号。一个周期结束会拉低。

  • edg_dtc 电路检测到 of_out 的脉冲信号会触发定时器停止计数。

../../_images/timer_block_diagram.svg

定时器框图

../../_images/timer_timing_diagram.svg

定时器时序图

RTL8721Dx:

在 UPS 的实际应用中,TIM10 用作固定的定时器。

去毛刺滤波与信号反向

为了减少信号毛刺对数字电路的影响,去毛刺滤波器用于使用 XTAL_40MHz 采样时钟对信号进行去抖动。dbc_cnt 越大,可以滤除的毛刺越宽,延迟也会越长。对于不同的 UPS 信号源,适当调整 dbc_cnt 的值可以滤除毛刺,同时最大限度地减少数字滤波引起的延迟。 外部 ZCD 信号和 CMP 输出可以是正脉冲或负脉冲。当为正脉冲信号时,系统正常工作;当为负脉冲信号时,将 rvs_en 配置为 1 以反向负脉冲信号,确保系统正常工作。

边沿检测

下图是边沿检测的框图。edg_dtc 模块的输入信号包括 clk、start_in 和 stop_in,输出是 dtc_out。

edg_dtc 模块工作方式如下:

  • edg_dtc 检测 start_in 和 stop_in 的上升沿。

  • 当在 start_in 检测到上升沿时,edg_dtc 在一个时钟周期后拉高 dtc_out 信号。

  • 当在 stop_in 检测到上升沿时,edg_dtc 在一个时钟周期后拉低 dtc_out 信号;否则,dtc_out 信号保持高电平。

../../_images/edge_detection_block_diagram.svg

边沿检测的时序图如下图所示。

../../_images/edge_detection_timing_diagram.svg

调光信号类型

为配合 UPS 电路工作,PWM 需要配置工作在 One Pulse Mode。为了满足各种需求,针对不同的控制需求,可以在配置 PWM 的时候灵活调节 PWM 输出的默认电平等配置。

  • OPM_DefaultLevelx = low, CCxPolarity = active_low: 在第二个过零点之前拉低控制信号。

  • OPM_DefaultLevelx = high, CCxPolarity = active_low: 在第二个过零点处拉低控制信号。

  • OPM_DefaultLevelx = high, CCxPolarity = active_high: 在第二个过零点之后拉低控制信号。

../../_images/various_pwm_output_types.svg

寄存器

RTL8721Dx:

REG_UPS_CTRL

  • Size: 32

  • Address: 0x410082C4

  • Read/write access: R/W

31:28 UPS_SRC_SEL 21 UPS_OUT_PWM_TRIG 20 UPS_OUT_TIM_EN 19 UPS_IN_TIM_OF 18 UPS_RVS_EN 17:2 UPS_DBC_CNT

Bit

Symbol

Access

INI

Description

31:28

UPS_SRC_SEL

R/W

0

UPS trigger source select:

  • 000: none

  • 001: gpio trigger

  • 010: comparator output

  • 011: audio zcd_0

  • 100: audio zcd_1

  • 101: audio zcd_2

21

UPS_OUT_PWM_TRIG

R/W

0

Enable for output trigger to pwm

20

UPS_OUT_TIM_EN

R/W

0

Enable for output en signal to basic timer

19

UPS_IN_TIM_OF

R/W

0

Enable for basic timer overflow input

18

UPS_RVS_EN

R/W

0

Invert polarity for UPS input

  • 0: posedge polarity

  • 1: negedge polarity

17:2

UPS_DBC_CNT

R/W

0

Debounce count for UPS funciton