首页 > 产品 > 电源管理 > UCD3138数字PWM(DPWM)模块 >

PWM 控制器

最新课程

热门课程

UCD3138数字PWM(DPWM)模块:设置PWM周期

在 DPWM 模块中央 是 DPWM 周期寄存器 和 DPWM 计数器。 两个寄存器均为 14 位。 DPWM 计数器 数值递增,直至 其等于周期 寄存器中的值。 当出现此情况时, DPWM 计数器 会复位并再次启动。 DPWM 计数器 可从 PCLK 计时, PCLK 以 250 MHz 运行。 因此,DPWM 计数器数值 每 4 ns 按一定增量递增。 在开关式 电源控制上下文中, 周期值表示 一个开关周期。 现在,我将演示 如何设置周期。 四个 DPWM 模块中, 每个模块均有称作 DPWM PRD 的 周期寄存器。 该寄存器中的相关字段 称作 PRD。 它存在于 位 17(含)至位 4(含)。 寄存器中保留了 四个最低有效位, 因此,不应使用 除 0 以外的任何值 加以覆盖。 现在,我将演示 如何将 DPWM 模块的周期 设置为 0 至 10 ms。 要获取 14 位值 以置于 PRD 字段, 将周期(秒) 除以时基(秒), 并将结果 取整为最近的整数。 在我们的例子中,周期 是 10 ms, 并且时基是 4 ns。 所以结果是 2,500。 要将该值直接至于 DPWM PRD 寄存器中, 我们需要计入 周期字段的位 0 与 寄存器的 位 4 对齐这一事实。 因此,我们 需要将结果 左移 4 位,这相当于 乘以 16, 即,2 的 4 次方。 在 C 代码中 语句将是这样的。 这些寄存器本身 及其内部的字段 在 C 代码中 将以结构体的形式组织。 第一条语句 将寄存器中的所有位 设置为 常量值, 以获得 10 ms 的 开关周期。 第二条语句仅 设置寄存器内 PRD 字段中的位。 它计入寄存器内部 PRD 字段的对齐, 且不修改 任何其他位。 第一条语句 灵活度较低,但是 在处理生成的 ARM 汇编 代码方面更高效。 它仅是单 注册器写入。 第二条语句将 产生更多的汇编码, 因为其涉及将寄存器的 内容复制到 ARM 内核,使用 逻辑操作 修改与 PRD 字段关联的位, 然后将修改的值 写回寄存器。 因此,与第一个操作相比,第二个操作 将占用更多字节 并耗费更多 处理器时钟周期。 但是,第二条 C 语言更易支持, 因为您无需 担心寄存器中 其他字段的 内容。 好的做法是, 在开发过程中使用 .bit 结构, 然后,当需要 更高效的代码时, 将其改为 .all 结构。

在 DPWM 模块中央

是 DPWM 周期寄存器 和 DPWM 计数器。

两个寄存器均为 14 位。

DPWM 计数器 数值递增,直至

其等于周期 寄存器中的值。

当出现此情况时, DPWM 计数器

会复位并再次启动。

DPWM 计数器 可从 PCLK 计时,

PCLK 以 250 MHz 运行。

因此,DPWM 计数器数值 每 4 ns 按一定增量递增。

在开关式 电源控制上下文中,

周期值表示 一个开关周期。

现在,我将演示 如何设置周期。

四个 DPWM 模块中, 每个模块均有称作 DPWM PRD 的

周期寄存器。

该寄存器中的相关字段 称作 PRD。

它存在于 位 17(含)至位 4(含)。

寄存器中保留了 四个最低有效位,

因此,不应使用 除 0 以外的任何值

加以覆盖。

现在,我将演示 如何将 DPWM 模块的周期

设置为 0 至 10 ms。

要获取 14 位值 以置于 PRD 字段,

将周期(秒) 除以时基(秒),

并将结果 取整为最近的整数。

在我们的例子中,周期 是 10 ms,

并且时基是 4 ns。

所以结果是 2,500。

要将该值直接至于 DPWM PRD 寄存器中,

我们需要计入 周期字段的位 0 与

寄存器的 位 4 对齐这一事实。

因此,我们 需要将结果

左移 4 位,这相当于 乘以 16,

即,2 的 4 次方。

在 C 代码中 语句将是这样的。

这些寄存器本身 及其内部的字段

在 C 代码中 将以结构体的形式组织。

第一条语句 将寄存器中的所有位

设置为 常量值,

以获得 10 ms 的 开关周期。

第二条语句仅 设置寄存器内

PRD 字段中的位。

它计入寄存器内部 PRD 字段的对齐,

且不修改 任何其他位。

第一条语句 灵活度较低,但是

在处理生成的 ARM 汇编 代码方面更高效。

它仅是单 注册器写入。

第二条语句将 产生更多的汇编码,

因为其涉及将寄存器的 内容复制到

ARM 内核,使用 逻辑操作

修改与 PRD 字段关联的位, 然后将修改的值

写回寄存器。

因此,与第一个操作相比,第二个操作 将占用更多字节

并耗费更多 处理器时钟周期。

但是,第二条 C 语言更易支持,

因为您无需 担心寄存器中

其他字段的 内容。

好的做法是, 在开发过程中使用 .bit 结构,

然后,当需要 更高效的代码时,

将其改为 .all

结构。

视频报错
手机看
扫码用手机观看
收藏本课程

视频简介

UCD3138数字PWM(DPWM)模块:设置PWM周期

所属课程:UCD3138数字PWM(DPWM)模块 发布时间:2019.03.11 视频集数:6 本节视频时长:00:03:58
本视频介绍了三种数字电源外设,重点介绍DPWM模块。
TI培训小程序