CN117459035A - 一种pwm生成装置 - Google Patents

一种pwm生成装置 Download PDF

Info

Publication number
CN117459035A
CN117459035A CN202311349454.5A CN202311349454A CN117459035A CN 117459035 A CN117459035 A CN 117459035A CN 202311349454 A CN202311349454 A CN 202311349454A CN 117459035 A CN117459035 A CN 117459035A
Authority
CN
China
Prior art keywords
pwm
control
timer
output
dma
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202311349454.5A
Other languages
English (en)
Inventor
王渤
陈永利
赵钟炎
王海彦
叶玉翠
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xi'an Zhengli Electromechanical Technology Co ltd
Original Assignee
Xi'an Zhengli Electromechanical Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xi'an Zhengli Electromechanical Technology Co ltd filed Critical Xi'an Zhengli Electromechanical Technology Co ltd
Priority to CN202311349454.5A priority Critical patent/CN117459035A/zh
Publication of CN117459035A publication Critical patent/CN117459035A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K7/00Modulating pulses with a continuously-variable modulating signal
    • H03K7/08Duration or width modulation ; Duty cycle modulation

Landscapes

  • Manipulation Of Pulses (AREA)

Abstract

一种PWM生成装置,采用MCU作为控制器产生所需PWM;采用支持DMA触发的多通道定时器,作为计数器并触发DMA传输,通过DMA传输内存数据到特定的输出寄存器,从而控制对应输出端口GPIO的电平高低,进一步实现灵活多样的PWM信号输出,由于使用DMA传输,避免了CPU指令执行时相互竞争的情况,故本发明所指装置生成的PWM具有灵活性高,输出稳定等特点。

Description

一种PWM生成装置
技术领域
本发明涉及到电学领域,特别涉及到一种使用通用MCU生成PWM的装置。
背景技术
PWM作为一种常用的控制信号,常用于无刷电机控制,DC-DC转换器,电磁阀控制器等系统。
无刷电机控制系统有专用的控制芯片用于接收电机反馈信号并触发PWM输出,DC-DC转换器亦有诸多的控制芯片,实现接收反馈信号控制PWM输出,电磁阀的控制往往需要整个随系统的设计,由MCU接收控制反馈信号,并有MCU或者专用芯片生成控制的PWM。
专用芯片具有工作稳定,可靠性高等特点,但并不能满足所有的应用场景,在专用芯片不能满足应用时,PWM生成采用最多的方式是使用通用MCU,软件的方式实现PWM控制信号的输出。
MCU配合软件生成PWM具有灵活性高,适应性强的特点,但其缺点在于控制PWM的输出是由CPU指令完成的,通常还需要配合定时器中断触发,以产生周期符合要求的PWM,由于CPU指令的执行是顺序逐条进行的,当系统有多个中断源时,中断的产生,及存在中断嵌套时,由定时器触发,到实际CPU控制输出的时间会受到当前CPU执行状况的影响,即指令执行竞争和中断竞争的情况产生,这些竞争的存在会导致定时器触发中断,到实际CPU控制输出之间的延迟不稳定,少则十几个指令周期,多则几十个指令周期,这种延迟的差异,对于低速PWM影响并不很大,但对于高速PWM将产生严重的抖动现象。
此外,由于CPU指令执行的特点是顺序完成的,一旦MCU受到外界干扰或者其他位置因素而导致程序跑飞时,软件控制的PWM输出将被终止,此时若不能实现即时的刹车控制,PWM信号将会出现异常,极可能对外部控制造成异常,甚至损害控制机构。
在专利号:ZL201610234397.X的发明专利《一种多极双向DC-DC的锂电池组无损平衡方法》中,公开了一种用于锂电池组无损平衡的技术,其控制部分使用到一种多相位PWM,是若干个占空比为T/N,相位相差2π/N,的PWM构成,其中N是串联电池组的单体电池数量,T是DC-DC转换器的PWM周期;目前针对这一应用,尚无专用控制芯片可以生成需要的PWM,而使用MCU软件方式,对于多通道,多相位差的PWM,其弊端更为突出。
发明内容
本发明旨在解决上述问题,提供一种可实现灵活多样的PWM信号输出PWM生成装置。
本发明所述PWM生成装置,采用MCU产生所需PWM;采用支持多通道DMA触发的定时器;按照设定的顺序,多个定时器通道逐次触发硬件的DMA传输,将内存中预先计算的GPIO管脚控制数据,通过DMA传输到GPIO管脚输出端口的控制寄存器,实现对MCU的GPIO管脚输出的控制,进一步实现PWM的输出。
进一步,本发明所述PWM生成装置,所述定时器包含至少3个可触发DMA传输的独立通道:CC1、CC2、CC3;从时序上满足:CC1的触发时间早于CC2,CC2的触发时间早于CC3,所有通道的触发时间,必须早于定时器的计数器溢出时。
例如:CC1触发时间为定时器计数器溢出复位后5个时钟周期,CC2触发时间为定时器计数器溢出复位后10个时钟周期,CC3为定时器计数器溢出复位后15个时钟周期,定时器的计数器溢出复位为100个时钟周期。
进一步,本发明所述PWM生成装置,所述定时器的三个通道CC1、CC2、CC3分别触发三个不同的DMA通道,完成单次数据传输;其中CC1触发的DMA传输,用于将预先计算的定时器溢出值,传输到该定时器的计数器溢出寄存器,不同的计数器溢出值,会改变定时器的计数器溢出周期,形成对PWM占空比的控制;CC2用于将预先计算的需要置低电平的GPIO管脚控制数据传输到对应的GPIO管脚输出端口的控制寄存器,完成对应GPIO管脚低电平的设置;CC3用于将预先计算的需要置高电平的GPIO管脚控制数据传输到对应的GPIO管脚输出端口的控制寄存器,完成对应GPIO管脚高电平的设置;CC2和CC3控制时序上的时间差,为PWM的死区时间。
因为在实际输出的PWM中,形成不同PWM输出通道,下降沿和上升沿有对应的时间差,控制中被称作PWM死区。
进一步,本发明所述PWM生成装置,输出多路相互关联的PWM控制信号时,预先计算的用于设置ARR寄存器的数据数组长度至少和要输出的PWM控制信号的通道数相同;或者为输出PWM控制信号通道数的整数倍,当倍数大于等于2时,等效的ARR值为各个PWM周期内实际ARR值的平均值,通过设置各个PWM周期内不同的ARR值,生成等效的ARR值为非整数倍时钟周期的PWM,亦可以提高PWM输出的EMC指标。
进一步,本发明所述PWM生成装置,输出多路相互关联的PWM控制信号时,预先计算的用于CC1和CC2触发的设置BSRR寄存器的数据数组长度至少和要输出的PWM控制信号的通道数相同;或者为输出PWM控制信号通道数的整数倍,当倍数大于等于2时,通过改变各个PWM周期内CC1和CC2触发的数据内容,改变每个PWM周期内各个PWM通道的信号关系,生成更复杂的PWM控制波形。
本发明所述PWM生成装置,由于使用DMA传输,避免了CPU指令执行时相互竞争的情况,采用本发明所述PWM生成装置生成的PWM具有灵活性高,输出稳定的优点,可适用于对PWM信号有特殊需求的应用场景。
附图说明
图1是本发明实施例所述PWM生成装置的原理框图;
图2是本发明实施例所述四相位PWM控制波形图;
图3是本发明实施例所述四相位PWM控制波形实现的时序图;
图4是本发明实施例所述扩展应用的第一个PWM周期时序图;
图5是本发明实施例所述扩展应用的第二个PWM周期时序图;
图6是本发明实施例所述扩展应用的实际输出PWM波形示意图。
具体实施方式
下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行进一步描述,显然,所描述的实施例仅仅是本发明的部分实施例。基于本发明中的实施例,本领域中的普通技术人员在没有做出创造性劳动的前提下所获得的所有其它实施例,都属于本发明保护的范围。
通常使用MCU生成PWM,基本实现装置是按照一定时序,控制MCU的相应GPIO管脚输出高或低的电平;MCU通常带有定时器,大部分定时器自身带有多个通道的输出,可以由定时器硬件完成特定的PWM输出;存在的问题是定时器硬件的PWM仅能实现MCU所提供的输出方式,当输出不能满足应用要求时,通常采用定时器作为时序控制器,CPU根据定时器触发的中断,由软件控制对应的GPIO管脚的输出。
在本公开实施例中,亦使用定时器作为时序控制器,并且采用支持多通道DMA触发的定时器,按照设定的顺序,多个定时器通道逐次触发硬件的DMA传输,将内存中预先计算的GPIO管脚控制数据,通过DMA传输到GPIO管脚输出端口的控制寄存器,从而实现对MCU的GPIO管脚输出的控制,进一步实现所需要的PWM输出。
在本公开实施例中所选择的定时器,包含3个可触发DMA传输的独立通道:CC1、CC2、CC3;从时序上满足:CC1的触发时间早于CC2,CC2的触发时间早于CC3,所有通道的触发时间,必须早于定时器的计数器溢出时间。
如图1所示,定时器的三个通道CC1、CC2、CC3分别触发三个不同的DMA通道,完成单次数据传输;其中CC1触发的DMA传输,用于将预先计算的定时器溢出值,传输到该定时器的计数器溢出寄存器,不同的计数器溢出值,会改变定时器的计数器溢出周期,形成对PWM占空比的控制;CC2用于将预先计算的需要置低电平的GPIO管脚控制数据传输到对应的GPIO管脚输出端口的控制寄存器,完成对应GPIO管脚低电平的设置;CC3用于将预先计算的需要置高电平的GPIO管脚控制数据传输到对应的GPIO管脚输出端口的控制寄存器,完成对应GPIO管脚高电平的设置;CC2和CC3控制时序上的时间差,在实际输出的PWM中,形成不同PWM输出通道,下降沿和上升沿有对应的时间差,控制中被称作PWM死区。在实际应用中,不需要PWM死区时,则CC2和CC3可以合并成一个通道,触发时将预先计算的需要设置的GPIO管脚控制数据传输到对应的GPIO管脚输出端口的控制寄存器,完成对应GPIO管脚电平的设置。
大多数MCU对GPIO管脚输出端口的控制寄存器都包含ODR,输出数据寄存器、BRR置位寄存器和BSRR置/复位寄存器;以Arm-ContexM3为例:其中ODR寄存器数据位和GPIO管脚的高低电平对应,如ODR的bit0对应GPIO_Pin0管脚的电平,ODR的bit1对应GPIO_Pin1管脚的电平,一次类推;BRR用于设置某些GPIO管脚的电平为低,类似的BRR数据位和需要设置电平的GPIO管脚对应,如BRR的bit0为高对应设置GPIO_Pin0管脚为低电平,BRR的bit1为高对应设置GPIO_Pin1的管脚为低电平,以此类推;BSRR用于同时设置某些GPIO端口为高电平,或者低电平,BSRR寄存器的高16位用于设置对应GPIO端口为低电平,BSRR寄存器的低16位用于设置对应GPIO端口为高电平,如BSRR寄存器的bit16为高时,设置GPIO_Pin0管脚为低电平,BSRR寄存器的bit17为高时,设置GPIO_Pin1管脚为低电平,BSRR寄存器的bit0为高时,设置GPIO_Pin0管脚为高电平,BSRR寄存器的bit1为高时,设置GPIO_Pin1管脚为高电平,一次类推;根据实际需要DMA传输数据控制GPIO管脚的输出为低电平时,可以使用ODR,也可以使用BSRR,控制GPIO管脚的输出为高电平时,可以使用ODR、BRR或者BSRR,使用不同的寄存器只在预先计算的数据上有差异,实际控制上无本质差异。
DMA作为直接内存访问控制器,通常用于内存到内存的数据传输,以及内存到外设之间的数据传输,定时器的计数器溢出寄存器ARR,GPIO管脚的控制寄存器同属于外设寄存器,大多数MCU的DMA支持ARR、ODR、BRR、BSRR寄存器作为DMA传输通道的目标外设,本发明所述的PWM生成装置,所使用的MCU必须满足DMA支持从内存向ARR和ODR寄存器,或者内存向ARR和BSRR寄存器传输数据。
DMA传输通道的源内存为预选计算的ARR数据和GPIO管脚控制数据,为了简明扼要的说明本发明的技术方案,在本公开实施例中仅以使用BSRR寄存器作为GPIO管脚控制寄存器进行说明,使用其它寄存器与之类似,仅在预先计算的数据上有所差异,本领域普通技术人员不需额外创造性劳动的情况下,亦能构造出所需要的数据。
在本公开实施例中,选择Arm Context M3核心的MCU,STM32F103系列来实现背景技术所述参考文献ZL201610234397.X中所指的四相位PWM控制波形,并且在PWM中加入适当的死区。
STM32F103的Timer1具备本发明所需要的DMA触发功能,Timer1的通道1对应触发的DMA通道为DMA1_Channel2;Timer1的通道2对应触发的DMA通道为DMA1_Channel3;Timer1的通道3对应触发的DMA通道为DMA1_Channel6;使用STM32F103的GPIO端口A,即GPIOA作为PWM输出端口,GPIO_Pin0为PWM第一输出管脚,对应图2中K4波形,GPIO_Pin1为PWM第二输出管脚,对应图2中K3波形;GPIO_Pin2为PWM第三输出管脚,对应图2中K2波形;GPIO_Pin3为第四输出管脚,对应图2中K1波形;如图3中所示。
按照图3时序,Timer1使用系统主频作为定时器时钟,最大可使用72Mhz,Timer的通道1设置CC1为5个时钟周期,Timer1的通道2设置CC2为10个时钟周期,Timer1的通道3设置CC3为15个时钟周期;
配置DMA1_Channel2的传输源内存为CC1Data,是一个长度为4的32位无符号整型数组,配置DMA1_Channel2的目的外设为Timer1的ARR寄存器;配置DMA1_Channel3的传输源内存为CC2Data,时一个长度为4的32位无符号整型数组,配置DMA1_Channel3的传输目的外设为GPIOA的BSRR寄存器;配置DMA1_Channel6的传输源内存为CC3Data,是一个长度为4的32位无符号整型数组,DMA1_Channel6的传输目的外设为GPIOA的BSRR寄存器;所有DMA通道均设置工作于循环模式,禁止内存到内存传输。
表1给出CC1Data、CC2Data、CC3Data的预置数据:
表中CC1Data的数据1为按照CC2Data和CC3Data的数据2设置GPIO端口后所保持的时钟周期;CC1Data的数据2为按照CC2Data和CC3Data的数据3设置GPIO端口后所保持的时钟周期;CC1Data的数据3为按照CC2Data和CC3Data的数据4设置GPIO端口后所保持的时钟周期;CC1Data的数据4为按照CC2Data和CC3Data的数据1设置GPIO端口后所保持的时钟周期;DMA设置工作在循环模式,当数据4被传输结束后,DMA自动从数据1开始重新传输,如此周而复始,每一个DMA循环即为一个PWM周期。
CC2Data的数据用于设置BSRR寄存器时,数据1将设置GPIO_Pin0为低电平,数据2将设置GPIO_Pin1为低电平,数据3将设置GPIO_Pin2为低电平,数据4将设置GPIO_Pin3为低电平;CC3Data的数据用于设置BSRR寄存器时,数据1将设置GPIO_Pin1为高电平,数据2将设置GPIO_Pin2为高电平,数据3将设置GPIO_Pin3为高电平,数据4将设置GPIO_Pin1为高电平。
开启DMA传输,并打开Timer1后,GPIOA的GPIO_Pin0、GPIO_Pin1、GPIO_Pin2、GPIO_Pin3将输出如图3时序中所示的波形,当STM32F103使用72MHz主频时,对应的GPIO_Pin0的低电平时间为144+5=149个时钟周期,约为2.069μs;GPIO_Pin1的低电平时间为128+5=133个时钟周期,约为1.847μs;GPIO_Pin2的低电平时间为136+5=141个时钟周期,约为1.958μs;GPIO_Pin3的低电平时间为150+5=160个时钟周期,约为2.222μs;死区固定为CC3-CC2=5个时钟周期,约为0.069μs。
实现如图2所示参考文献ZL 2016 1 0234397.X中四相位PWM控制波形图,CC1Data、CC2Data、CC3Data数组的长度为4,和所实现的PWM输出通道数相同,使用数组长度为4的整数倍,可以实现更为复杂的PWM控制波形;例如将CC1Data长度设定为8,并填充表2中数据:
此时,在第一个PWM周期内,产生的波形和图3相同,在第二个PWM周期内,GPIO_Pin0的低电平时间为144+5=149个时钟周期;GPIO_Pin1的低电平时间为150+5=160个时钟周期;GPIO_Pin2的低电平时间为136+5=141个时钟周期;GPIO_Pin3的低电平时间为128+5=131个时钟周期。
对于DC-DC转换电路,以及参考文献ZL 2016 1 0234397.X所实现的多极双向DC-DC电路,按照表2中的CC1Data实现的PWM波形,等效的PWM低电平为第一个PWM周期内和第二个PWM周期内,对应PWM通道低电平时钟周期的平均值,即GPIO_Pin0的等效低电平时间为(149+149)/2=149个时钟周期;GPIO_Pin1的等效低电平时间为(133+160)/2=146.5个时钟周期;GPIO_Pin2的等效低电平时间为(141+141)/2=141个时钟周期;GPIO_Pin3的等效低电平时间为(160+131)/2=146.5个时钟周期;很显然,这样的处理结果,可以使实际产生的PWM等效低电平时间,不等于时钟周期的整数倍,对于PWM调节的精细度有所提升;使用更复杂的CC1Data组合将产生更精细的等效PWM低电平周期。
除此之外,同为139个时钟周期的低电平,若分作130个时钟周期和148个时钟周期的组合,其效果和一直使用139个时钟周期相同,但前者可以有效的将PWM的频谱拓宽,降低特定频率点上的频谱功率密度,提高EMC指标。
与CC1Data类似的,CC2Data和CC3Data亦可以使用长度为8的数组,并填充表3的数据:
按照以上CC1Data和CC2Data数据所生成的PWM波如图4和图5所示,其中图4是第一个PWM周期的输出波形,图5是第二个PWM周期的波形,第一个PWM周期和第二个PWM周期的波形连接起来如图6所示,四个PWM通道的低电平周期呈现三角波状震荡。

Claims (5)

1.一种PWM生成装置,其特征在于:采用MCU产生所需PWM;采用支持多通道DMA触发的定时器;按照设定的顺序,多个定时器通道逐次触发硬件的DMA传输,将内存中预先计算的GPIO管脚控制数据,通过DMA传输到GPIO管脚输出端口的控制寄存器,实现对MCU的GPIO管脚输出的控制,进一步实现PWM的输出。
2.根据权利要求1所述PWM生成装置,其特征在于:所述定时器,包含至少3个可触发DMA传输的独立通道:CC1、CC2、CC3;从时序上满足:CC1的触发时间早于CC2,CC2的触发时间早于CC3;所有通道的触发时间早于定时器的计数器溢出时间。
3.根据权利要求2所述PWM生成装置,其特征在于:所述定时器的三个通道CC1、CC2、CC3分别触发三个不同的DMA通道,完成单次数据传输;其中CC1触发的DMA传输,用于将预先计算的定时器溢出值,传输到该定时器的计数器溢出寄存器ARR,不同的计数器溢出值,会改变定时器的计数器溢出周期,形成对PWM占空比的控制;CC2用于将预先计算的需置低电平的GPIO管脚控制数据传输到对应的GPIO管脚输出端口的控制寄存器,完成对应GPIO管脚低电平的设置;CC3用于将预先计算的需置高电平的GPIO管脚控制数据传输到对应的GPIO管脚输出端口的控制寄存器,完成对应GPIO管脚高电平的设置;CC2和CC3控制时序上的时间差,为PWM的死区时间。
4.根据权利要求1或3所述PWM生成装置,其特征在于:输出多路相互关联的PWM控制信号时,预先计算的用于设置ARR寄存器的数据数组长度至少和要输出的PWM控制信号的通道数相同;或者为输出PWM控制信号通道数的整数倍,当倍数大于等于2时,等效的ARR值为各个PWM周期内实际ARR值的平均值,通过设置各个PWM周期内不同的ARR值,生成等效的ARR值为非整数倍时钟周期的PWM,亦可以提高PWM输出的EMC指标。
5.根据权利要求2或3所述PWM生成装置,其特征在于:输出多路相互关联的PWM控制信号时,预先计算的用于CC1和CC2触发的设置BSRR寄存器的数据数组长度至少和要输出的PWM控制信号的通道数相同;或者为输出PWM控制信号通道数的整数倍,当倍数大于等于2时,通过改变各个PWM周期内CC1和CC2触发的数据内容,改变每个PWM周期内各个PWM通道的信号关系,生成更复杂的PWM控制波形。
CN202311349454.5A 2023-10-18 2023-10-18 一种pwm生成装置 Pending CN117459035A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311349454.5A CN117459035A (zh) 2023-10-18 2023-10-18 一种pwm生成装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311349454.5A CN117459035A (zh) 2023-10-18 2023-10-18 一种pwm生成装置

Publications (1)

Publication Number Publication Date
CN117459035A true CN117459035A (zh) 2024-01-26

Family

ID=89586545

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311349454.5A Pending CN117459035A (zh) 2023-10-18 2023-10-18 一种pwm生成装置

Country Status (1)

Country Link
CN (1) CN117459035A (zh)

Similar Documents

Publication Publication Date Title
EP1650673B1 (en) Method and system for creating an extented bit timer on a time processing unit
EP1226505B1 (en) Generic serial port architecture and system
US4509120A (en) Variable cycle-time microcomputer
US20100272162A1 (en) Synchronous serial programmable interface
CN112051758A (zh) 一种io扩展芯片
US6026498A (en) Clock signal generator circuit using a logical result of an output of a computer and a source clock to generate plurality of clock signals
US20190347237A1 (en) Serial port communication mode conversion method, system, and circuit
CN110413558A (zh) 一种实现低功耗串口模块动态分频方法
US11004331B2 (en) Infrared protocol-based infrared code transmission circuit, chip, remote control device and air conditioner
WO2012122315A1 (en) Microcontroller of a power adapter
CN117459035A (zh) 一种pwm生成装置
US6748475B1 (en) Programmable serial port architecture and system
US6664833B1 (en) Dual-edge function clock generator and method of deriving clocking signals for executing reduced instruction sequences in a re-programmable I/O interface
US20070067605A1 (en) Architecture of a parallel-processing multi-microcontroller system and timing control method thereof
US6871292B1 (en) Sequencer and method of selectively inhibiting clock signals to execute reduced instruction sequences in a re-programmable I/O interface
CN102736951B (zh) 一种模块调用方法和装置
US8731042B2 (en) Generating pulse width modulated signals
US7058149B2 (en) System for providing a calibrated clock and methods thereof
WO2007023456A2 (en) Microcontroller waveform generation
CN111245206B (zh) 变频器igbt驱动控制方法和控制装置
CN112532210A (zh) 一种可调节脉冲信号发生器
CN216649703U (zh) 一种多类复杂信号快速切换的干扰信号源模块
CN217693281U (zh) 一种pwm死区精度控制电路及soc芯片
CN218387535U (zh) 一种基于EtherCAT的扩展工业网关模块和系统
US20240118893A1 (en) Pulse modulation control system, device, and method

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination