您好,欢迎访问三七文档
应用说明RL78/G13群使用DMA生成多重PWM要点在单片机应用中,用户对于小型封装的产品有时会提出超出单片机纯硬件所能对应的范围而进行PWM输出的要求。本篇应用说明介绍了使用定时器和DMA控制器增加PWM输出的方法。对象MCU本篇应用说明使用RL78/G13目标板(QB-R5F100LE-TB)进行测试,同时也适用于其他具有DMA单元的RL78单片机。本篇应用说明的示例使用了TAU(定时器阵列单元)0通道0和DMA通道0,也可以使用其他定时器和DMA通道完成操作。相关应用说明使用本应用说明时,请同时参考以下相关的应用说明。•RL78/G13MultiplePWMgenerationusingDMA(R01AN0717E)应用说明R01AN1023CC0100Rev.1.002014.07.31R01AN1023CC0100Rev.1.00Page1of142014.07.31RL78/G13群使用DMA生成多重PWM目录1.多重PWM的生成..........................................................................................................................................31.1关于DMA.......................................................................................................................................................31.2本应用说明的概要.........................................................................................................................................31.3方式.................................................................................................................................................................41.4PWM参照表的构成.......................................................................................................................................51.5PWM参照表的计算.......................................................................................................................................62.本应用说明中使用的外围功能......................................................................................................................72.1TAU0通道0、间隔定时器模式中的执行时序............................................................................................72.2DMA操作和设定...........................................................................................................................................72.3PWM分辨率的增大.......................................................................................................................................82.4总线负载.........................................................................................................................................................83.结论.................................................................................................................................................................84.流程图.............................................................................................................................................................95.附录:代码列表...........................................................................................................................................106.参考文献.......................................................................................................................................................14公司主页和咨询窗口.............................................................................................................................................14R01AN1023CC0100Rev.1.00Page2of142014.07.31RL78/G13群使用DMA生成多重PWM1.多重PWM的生成1.1关于DMA直接存储器存取控制器或DMA控制器可以在支持DMA的外围硬件的SFR寄存器和内部RAM之间不经过CPU而自动传送数据。因此,可以在进行通常的CPU内部运算和数据传送的同时,进行SFR和内部RAM之间的传送。并且,还可以实现通过通信功能、定时器和A/D进行的实时控制。在本篇应用说明中,共生成了8个独立的PWM输出,而通过增加DMA通道这一操作,还可以生成更多的PWM输出。但需要注意的是,由于多个PWM输出的基准时间是同一个,因此各个PWM输出不可能完全独立。DMA通过外围硬件中断启动,然后进行数据的传送。DMA和CPU使用同一个总线,但DMA占有总线的优先级高于CPU。开始使用前,要对DMA控制器进行初始化设定。通过初始化设定,在DMA控制器寄存器中分配传送源地址、传送目标地址和传送模式。1.2本应用说明的概要在本篇应用说明中,为了生成PWM输出,要使用内部DMA通道更改端口7数据寄存器的设定值。间隔定时器模式的TAU(定时器阵列单元)作为DMA通道0设定的触发源使用。PWM输出的更新频率通过TAU单元0通道0的周期来确定。DMA将数据从RAM表传送至P7端口寄存器。RAM表通过MCU应用软件更新。图1所示的操作可以用于生成如驱动控制高亮度LED这样的特殊信号。R01AN1023CC0100Rev.1.00Page3of142014.07.31RL78/G13群使用DMA生成多重PWM图1操作框图1.3方式设定DMA通道0,使数据能够被自动从RAM的PWM参照表传送至I/O端口。DMA传送结束中断产生后,在到达参照表终端的同时,CPU再次将DMA计数器初始化。PWM参照表的深度取决于PWM的分辨率。各PWM输出通过各个TAU0通道0中断(以下称为“定时器单元”)进行更新。在本篇应用说明及参考例程中,设定端口7输出8个8位分辨率的PWM。因此,输出RAM数据应为256字节。定时器单元由每次发生下溢时作为DMA通道0触发源的TAU0通道0来决定。因此,PWM的输出频率由更新频率和用于P7端口寄存器输出的RAM内部参照表长度决定。PWM频率=1/((TAU0通道0周期)×(PWM参照表的字节数))定时器TAU0下溢周期×参照表深度PWM信号占空比由参照表数值的各个位决定11111111111111111111001011100010111000101110001011000010TAU0通道0(间隔定时器模式)DMA通道0TAU0通道0中断数据的再装入参照表(RAM)DMA通道0有效化请求DMA通道0传送目标端口7(P7)寄存器DAM通道0传送源CPU:表数据计算R01AN1023CC0100Rev.1.00Page4of142014.07.31RL78/G13群使用DMA生成多重PWM1.4PWM参照表的构成为了能更好地理解保存在DMA通道0的存取RAM里的PWM参照表,假定P7端口输出8个PWM,使用16个值。也就是说,PWM为4位分辨率。表1表示的是定时器周期每一次下溢,TAU0通道0通过DMA将RAM数据自动传送至P7数据寄存器的示例。参照表数值与生成的PWM输出值之间的关系,请参见图2。使用彩色高亮显示的位置,表示PWM输出状态发生变化的点。在以下示例中,位7(b7)为端口P77的输出,位6(b6)为端口P76的输出,位1(b1)为端口P71的输出。使用参照表这一方式的好处在于,可以在使用同一个基准定时器的情况下,分别允许各个输出通道产生不同的PWM频率。基于PWM参照表的数据,可以生成非常灵活的PWM波形,同时还可以生成功能比基本的PWM波形更加强化的波形。CPU的主要工作是初始化以及修正参照表的数值。一旦开始执行任务,DMA就开始独立地从PWM参照表向端口传送数据。表1RAM中的PWM参照表的构成索引(每个基准时间的地址)参照表数据(RAM)b7b6b5b4b3b2b1b0010XXXX1X110XXXX1X210XXXX1X310XXXX1X411XXXX1X511XXXX1X611XXXX1X701XXXX1X800XXXX1X900XXXX1X1000XXXX1X1100XXXX1X1201XXXX1X1301XXXX0X1401XXXX0X1501XXXX0XR01AN1023CC0100Rev.1.00Page5of142014.07.31RL78/G13群使用DMA生成多重PWM图2显示了DMA传送结束后引脚输出与PWM参照表数值之间的对应关系。为了便于理解,与PWM参照表表1中彩色数值相对应的输出的变化,使用了同样颜色的竖线加以表示。图2DMA传送中的引脚输出状态与PWM参照表的关系1.5PWM参照表的计算PWM参照表的初始化可以直接进行。在本应用软件中,必须将每一个PWM通道的从索引0到索引N为止的PWM参照表设定为1(表示各PWM的高电平),将从索引N+1到索引最大值为止的PWM参照表清除为0。然后,取PWM输出编号7通过新数值“156”被设定为1这一操作为
本文标题:RL78G13-群
链接地址:https://www.777doc.com/doc-5677211 .html