This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

28035的EPWM模块

在EPWM模块的CC子模块中,有几个寄存器不是很明白:

1、SHDWBFULL和SHDWAFULL

说明中说的是阴影寄存器的FIFO未满标志,阴影寄存器在32位写置位,16位对CMPA/CMPB写,也置位。

在计数器比较子模块的结构框图中,也没有标示出FIFO与CMPA/CMPB阴影寄存器的关系啊?

这样设计究竟是为什么?   如何来使用它?

2、CMPAM

Counter-compare A mirror Register   这种镜像寄存器与阴影寄存器、工作寄存器有什么关系啊?

怎么来使用的?

  • 楼主只记着这个影子寄存器,只是设置使用它时,将它的值装入CPMA(CMPB)中,并且,写入CMPA(CMPB)时,实际是对它写入的。

    如果设置为不使用它,写入CMPA(CMPB)时,将直接写入。
  • 我是想问SHDWAFULL和SHDWBFULL这两个标志位主要用来干嘛?

    因为在EPWM Refrence Guide的寄存器说明中有:

    0 CMPB shadow FIFO not full yet

    1 Indicates the CMPB shadow FIFO is full; a CPU write will overwrite current shadow value.

    在EPWM的结构框图中,未发现有关于阴影寄存器FIFO的说明,而这两个寄存器在注释中又出现了FIFO

    所以不明白这两个寄存器是怎么用的!

    //

    //

    而且在其他具有阴影寄存器的寄存器中,也没有像CMPA和CMPB一样,定义这个满标志!

  • Lzh,

            这两个标志位的主要作用是用来判断CMPA和CMPB阴影寄存器的值是否被overwrite,因为我们在实际应用中,最常用的是改变比较寄存器的值,然后将这个改变后的值写入阴影寄存器,在相关事件到达的时候装载的active 寄存器中。这两个标志位就提供这样一种功能,当更新速度更快,即用户程序改变CMP寄存器的值过快,之前的寄存器的值还没装载,这时候用户可以查询这个标志位,看之前的数据是否被装载,来决定是否要用最新的数据覆盖之前的数据。像周期寄存器其实比较少改动,所以就没有这个功能。

             另外镜子寄存器可以理解为跟active寄存器一样,都有阴影功能, 但是它提供另外的功能是,TBPRDHR and TBPRD 能够作为一个32bit的值进行写入,只能通过镜像地址来写。       

    Eric