3. PSoC 4 TCPWM模块
与PSoC 3、PSoC 5相比,PSoC 4增强TCPWM模块的功能。TCPWM包括四个16位的周期长度用户可编程的计数器,这些计数器之间可以进行功能同步。每个模块包含一个捕获寄存器、一个周期寄存器以及一些比较寄存器。每个模块都支持互补的可编程的死区,还支持一个关断输入信号来强迫输出信号进入预先设定的状态。与其他普通PWM模块相比,TCPWM除了支持中央对齐PWM、时钟预分频等功能外,还支持伪随机PWM以及正交解码等功能,前者可用于对电机输入的相位信号进行正交解调,后者可用于特殊情况下电机控制PWM调制。
图2是TCPWM的模块框图,以下概括了其主要特性:
● 四个16比特计时器/计数器/PWM
● TCPWM模块中的每个计数器均能够独立支持以下六种操作模式
○ 定时器/计数器
○ 捕获
○ 正交解调
○ PWM
○ 带死区的PWM(PWM-DT)
○ 伪随机PWM
● 四种计数模式——向上计数、向下计数、向上/向下计数模式0和向上/向下计数模式1
● 时钟预分频选项,支持的分频系数有2、4……64、128
● 比较/捕获(CC)寄存器和周期寄存器(period)有额外的缓冲寄存器
● 触发中断的方式:
○ 计数终止(TC)——当计数器的值达到计数终值(包括period寄存器中的值或0),能够触发中断
○ 比较/捕获(CC)——当计数器的值等于CC寄存器中的值(定时器模式中),或者计数器的值被捕获到CC寄存器中(捕获模式中)时,能够触发中断
● 计数器的同步——四个计数器能够在同一时间发生重载,开始,停止和计数等事件
● 每组计数器的上溢,下溢,捕获/比较都可以产生DSI输出
● 每组计数器都有一对互补的PWM输出
● 14个DSI输入信号,支持启动、重载、停止、计数和捕获事件,这些事件的触发条件可以是上升沿、下降沿和电平触发
图2:TCPWM的模块框图
TCPWM模块提供了多种工作模式,可满足各种复杂的需求。TCPWM中的每个计数器都可以工作在6种工作模式,可通过配置寄存器进行选择。工作模式如下表所示。
TCPWM模块中的计数器有四种计数方式,通过配置寄存器UP_DOWN_MODE可以选择计数方式。计数方式共有向上计数模式(计数寄存器的值累加,当达到周期值时,输出TC状态)、向下计数模式(计数寄存器的值递减,当达到周期值时,输出TC状态)、向上/向下计数模式0(计数寄存器的值累加,当达到周期寄存器中的值时,计数寄存器的值递减,直到达到0当计数寄存器的值达到0时,输出TC状态)、向上/向下计数模式1(计数寄存器的值累加,当达到周期寄存器中的值时,计数寄存器的值递减,直到达到0。当计数寄存器的值达到周期寄存器中的值和达到0时,输出TC状态)。
利用TCPWM多样的工作模式及计数方式可以满足一些复杂的应用需求。以电机控制为例,TCPWM提供了电机控制常用的中央对齐、边沿对齐PWM,并可实现严格的同步功能。支持灵活的死区控制,并可与ADC同步。利用PSoC灵活的可编程特性,用户可自定义在PWM周期内任一时刻触发ADC转换。TCPWM还支持正交解调模式,用于对电机输入的相位信号进行正交解调,完成电机的闭环控制。TCPWM功能强大配置灵活的特性,可帮助用户简化并加速设计工作,从而创建出功能丰富、高度差异化的产品。
PSoC 4采用PSoC Creator集成设计环境,PSoC Creator允许用户拖放预先配置好的、可随时投产的模拟和数字IP模块,也就是PSoC组件到自己的设计之中,并将其按照多种应用需求进行配置,实现软硬件协同设计,创建真正属于自己的器件。以电机控制中常用的互补对称PWM为例,在PSoC Creator中选择TCPWM模块的工作模式为“PWM”,选择PWM align为Center align(即中央对齐,向上/向下计数模式0),选择PWM mode为PWM with dead time insert(即PWM-DT模式),设置相应的死区时间,如图2所示。如此便可输出两路互补对称PWM;如图3所示,line及line_n即为带死区的两路互补对称PWM。
图3:TCPWM配置界面
图4:TCPWM输出效果图
PSoC 4 TCPWM为每路计数器提供了4路较为有用的输出信号,如图4中的OV、UN、TC和CC信号。OV是上溢信号,用来指示计数器向上计数达到周期寄存器中的值;UN是下溢信号,用来指示计数器向下计数达到“0”;TC是计数终值信号,用来指示计数器的值达到计数终值;CC是比较/捕获信号,用来指示计数器的值达到CC寄存器中的值。利用这几个信号可以灵活的触发中断或其他事件,如触发ADC采样等。以电机控制为例,我们可以在OV事件时触发ADC采样,然后在UN事件时触发中断采用上次的ADC采样值进行计算。
PSoC 4 TCPWM提供了较为灵活的PWM更新方式。TCPWM模块中的每个计数器都有周期寄存器及对应的缓存周期寄存器、比较寄存器及对应的缓存比较寄存器。更新周期寄存器及比较寄存器会立即生效。更新缓存寄存器则可让TCPWM在某一时刻进行更新。缓存寄存器的存在可以保证多路PWM更新的严格同步。在终止计数时(TC),如果有一个有效的交换(switch)事件并且TCPWM_CNTx_CTRL中的AUTO_RELOAD_CC and AUTO_RELOAD_PERIOD位置1的话,周期和比较寄存器上的值会自动与缓存周期和比较器寄存器的值更换。利用此特性,我们可以在TC事件之前更新缓存寄存器,然后用同一信号触发不同PWM的Switch事件,由此保证各路PWM更新的实时同步。
在图5中,我们用三个TCPWM模块实现了电机控制中常用的三相PWM输出功能。三路PWM采用同一时钟源,由此可避免很多同步问题。三路PWM周期一致,由第一路PWM的UN事件触发中断,在中断中进行计算,更新占空比;同时UN事件触发三路PWM的Switch信号,在TC事件时,PWM U、V、W会同时更新为上次计算的占空比。这样我们利用TCPWM强大的功能及PSoC 4灵活的可编程特性轻松实现了三对严格同步的互补对称PWM及其更新逻辑,这样可以使工程师将更多的时间专注于算法层面,提供产品的竞争力。
图5:三相PWM原理图
|