RL78/G13 使用DMA传输PWM数据的实现

大家好,我在使用RL78/G13遇到以下问题,希望得到帮忙解决,谢谢!!

       我在使用RL78/G13来开发,现在最到的问题是怎样使用DMA将800多个数据通过PWM的方式传输到外设,用单总线的方式控制32个RGB灯,而且速度要快;

怎么用DMA将指定的RAM数据更新到TDR寄存器输出PWM,问题总结如下:

     问题1:DMA怎么确保一个PWM周期更新一次数据到TDR,一个周期大约是1200ns

     问题2: 假设启动定时器1200ns更新一次数据,怎么确认DMA更新的数据地址是递增而不是从头开始呢,最好不要启动
                定时器,太过于频繁了。"

     问题3: 如果不启动定时器更新,怎么定期的用DMA更新ram 到 TDR寄存器呢。

     问题4:首次启动PWM功能时DMA是否已经将第一个地址RAM数据更新到PWM占空比寄存器

     问题5:怎么定义一个指定地址的数组呢?
                  定义一个指定地址的变量: #pragma address RedefineVectorAddressLoByte = 0x000FFE1A
                 char RedefineVectorAddressLoByte;
                 定义一个指定地址的数组:#pragma address DMA_RGB_BUFF = 0x000FFE1A ;
                 char DMA_RGB_BUFF[800];这样是否正确。"

      问题6:这个项目的RGB的通讯时许,每一个bit的周期时1200ns,32个灯需要32*3*8个bit;

         问题7:有没有可能PWM周期完成时刻与定时器产生中断时刻不重合导致PWM输出有异常??举例,PWM周期还没到,你又通过定时器

                     中断更新占空比值时,在当前PWM周期结束前会输出一线小段高电平???


7、有没有可能PWM周期完成时刻与定时器产生中断时刻不重合导致PWM输出有异常??举例,PWM周期还没到,你又通过定时器中断更新占空比值时,在当前PWM周期结束前会输出一线小段高电平???