- 本课程为精品课,您可以登录eeworld继续观看:
- UCD3138数字PWM(DPWM)模块:控制DPWM输出
- 登录
- 课程目录
- 相关资源
- 课程笔记
现在,我将演示如何
在开环模式下控制DPWM 的 A 和 B 两项输出。
开环模式意味着DPWM 完全由其
而非滤波器输出控制。
换句话说,电源控制环路未闭合。
我们将在稍后的实验练习中闭合环路。
在开环模式下,输出 A 的上升沿和下降沿
由事件 1 和事件 2 控制。
事件 1 和事件 2 是两个寄存器的内容。
输出 B 的上升沿和下降沿
由事件 3 和事件 4 控制。
同样,这些值存储在两个单独的寄存器中。
在此我们可以看到 DPWM 计数器从 0 增大到事件 1。
当计数器值等于事件 1 时
被置为输出 DPWM A。
当计数器值等于事件 2 时,DPWM A 会被复位。
当计数器值等于事件 3 时
被置为输出 DPWM B。
当计数器值达到事件 4 时,输出 B 会被复位。
当计数器值等于周期寄存器中的值时
计数器会复位且另一开关周期会启动。
事件 1 存储在寄存器 DPWMEV1 中。
因此,每个 DPWM 模块将具有一个独特的 DPWMEV1
寄存器与其相关联。
寄存器从 PCLK 驱动
因此具有与周期寄存器
相同的 4 ns 时基。
它还具有与周期寄存器相同的校准。
因此,事件 1 字段与 DPWMEV1 寄存器的位 4 对齐。
在上一示例中,通过将 2,500 置于 PRD 字段中
我们将周期设为 10 ms。
为将输出 A 设为在 10% 周期时处于高位
我们将事件 1 设为 250,即将 PRD 值除以 10。
事件 2 存储在称作 DPWMEV2 的寄存器中。
每个 DPWM 模块都有唯一的 DPWMEV2 寄存器。
事件 2 的周期分辨率比事件 1 高 16 倍;
即,它具有 250 ps 的时基。
通过提供 DPWM 模块可取得额外的分辨率
前提是该模块具有 16 个分别为 250 MHz 的相移时钟信号。
我们已将周期设为 10 ms
并将输出 A 的上升沿
设为在周期的 10% 时发生。
为将输出 A 在 25% 周期时复位
我们将周期除以 4。
然后,我们将结果乘以 16 以计入
事件 2 对比该周期小 16 倍的时基。
值得注意的是,即使事件 2 比事件 1
周期的分辨率高 16 倍,
事件 1 以及周期字段均会
在其相应寄存器中抵消
以计入更小的时基。
因此,您在写入整个寄存器时
无需考虑事件 2更小的时基。
这样,出于明确性和简洁性考虑
我们不建议在写入这些寄存器时
使用 .bit 结构。
使用 .all 结构并将事件寄存器
设为周期百分比。
在此代码示例中,我们使用预处理程序 #define 指令
来定义 PCLK 周期和开关周期
单位为秒。
然后,我们使用这两个值计算
要置于周期寄存器中的值。
通过将周期值简单乘以 0.1、0.25、
0.5 和 0.75,事件 1、2、3 和 4
寄存器会设为等于周期的 25%、50% 和 75%。
如果我们决定更改开关周期
我们只需更改指派给 #define 周期的秒数
然后所有事件寄存器
将自动扩展。
事件 3 和事件 4 将分别存储在 DPWMEV3 和 EV4 中。
他们具有与事件 2 相同的对齐和时基
即,它们为 18位宽且具有
250 ps 的时基。
这是 DPWM 模块的简化逻辑图
涵盖迄今为止我们已讨论的问题。
我们已了解开环模式中的 DPWM 操作
开环模式意味着DPWM 输出完全由其
自身的寄存器控制,而非由滤波器输出控制。
有多得多的逻辑以及更多的寄存器
与 DPWM操作关联,其中有些我们将在
这些实验中讨论。
现在,我们对事件寄存器的输出
直接进行大量可配置的时序逻辑计算。
我们将在稍后的实验中回顾该逻辑的某些内容。
现在,对于其他初始化
您将需要置于 C 代码中
以在开环模式下使用 DPWM 模块。
您应在初始化前关闭 DPWM0
具体方法是清除 DPWM 控制寄存器 0 中的 PWM 启用位。
默认情况下,该位实际上会被清除
因此,严格意义上讲,这不是必需的。
但是,尽管如此,这仍然是好的做法。
由于我们在开环模式下操作 DPWM 模块
因此我们需要关闭 DPWM 的滤波器输入
从而 DPWM 操作完全由
其自身的寄存器控制。
我们所采取的具体方法是清除 PWM 控制寄存器0 中的 CLA 启用位
CLA 是控制律加速器的缩写词。
这只是滤波器的另一名称。
接下来,我们需要在本地开启 DPWM 模块
具体方法是在 DPWM 控制寄存器 0 中设置 PWM 启用位。
最后,我们需要在全局开启 DPWM 模块
具体方法是在 GLB 启用模块中
设置相关全局启用位。
每个 DPWM 具有其自身的全局启用位。
我们在此为 DPWM 模块 0 设置位。
如果您要查找有关该实验目前为止
所涵盖主题的更全面的信息
请参阅 UCD3138 数字电源外设 程序员手册。
课程介绍
共计6课时,25分31秒
UCD3138数字PWM(DPWM)模块
在本教程中,我将 介绍数字电源 外设, 尤其着重介绍 数字脉冲宽度调制, 或者说 DPWM 模块。 此讲演 随实验练习二一起提供。 在上一教程中,我们已简要 介绍了 ARM 内核、 闪存以及 PMBus 接口。 现在,我们将着重介绍 DPWM 模块及其两个 关联的输出引脚。 UCD3138 系列 每个成员产品的内核 是数控 环路外设, 也称作数字 电源外设, 或简称 DPP。 这些器件用于 控制电源中的 高速电压和 电流环路。 它们旨在 替代基于 模拟电压管理 控制器 IC 的电源中 采用的模拟 补偿网络和 PWM 生成系统, 并向系统 添加增强的 数字功能。
猜你喜欢
换一换
推荐帖子
- jlink 能下载但DEBUG 没反映
- 用的KEIL 的编译器,MCU是TI的LM3S9B92 100PIN LQFP封装的C5版本芯片。 程序能下载到MCU里面,且能运行,但是DEBUG没有反映。有没有朋友遇到这种情况。急等解决。 谢谢!...
-
zhangustc
微控制器 MCU
- 430串口问题求指教
- 430 串口中断。如果只接受,不发送。而且要对所接受的数据进行分析, 是一串数据怎么办,下面这对吗,求指教谢谢。 void Uart_Init(void) { P3SEL |= 0x30; &nb...
-
cuanli007
微控制器 MCU
- MSP430+DS1302,在1602上显示
- 小弟最近刚学430不久,在弄一个把1302的时间显示到1602上的程序时,出了点问题。。。想了很久,试了几个方法,也没成功,求高手指导,谢谢~ 主要存在的问题是秒不能1秒1秒的走,要2秒跳一次。由于没有开发板,我用的是MSP430核心板+51的开发板,但是把51单片机取下来了,然后通过连线,用430驱动51板上的DS1302,并在1602上显示。 主代码如下: #include "msp43...
-
wfarlen
微控制器 MCU
- C/C++的64位整数[原]by 赤兔
- 在做ACM题时,经常都会遇到一些比较大的整数。而常用的内置整数类型常常显得太小了:其中long 和 int 范围是[-2^31,2^31),即-2147483648~2147483647。而unsigned范围是[0,2^32),即0~4294967295。也就是说,常规的32位整数只能够处理40亿以下的数。 那遇到比40亿要大的数怎么办呢?这时就要用到C++的64位扩展了。不同的编译器对64位...
-
Hellovictoria
DSP 与 ARM 处理器




























京公网安备 11010802033920号