C2000中ePWM模塊間同步延時的問題

在C2000 DSP的ePWM模塊與EV模塊有很大的差別,EV模塊各路PWM共用一個時基,而ePWM模塊則有各自的時基,通過同步信號來同步。但同步是有時間開銷的:


The delay from internal master module to slave modules is given by:
– if ( TBCLK = EPWMCLK): 2 x EPWMCLK
– if ( TBCLK != EPWMCLK):1 TBCLK


這個開銷表現爲主模塊已經計數到1或者2了,才發出同步信號,這時從模塊其實也已經計數到1或者2了,但在接收到同步信號以後從模塊又把TBPHS寄存器的值Load到TBCTR,造成從模塊與主模塊之間的相位延時,同時週期也會發生異常(多了兩個時鐘)。因此在這種應用場合下不能把TBPHS設成0(官方文檔示例代碼),而要根據分頻設置把TBPHS設成1或者2.



對F28075芯片來說上述引用的文字也不正確,F28075的TBCLK實際上經過了三級分頻:


SysClk------ClkCfgRegs.PERCLKDIVSEL.bit.EPWMCLKDIV------EPWMCLK---TBCTL.HSPCLKDIV-----Clk1-------TBCTL.CLKDIV---------TBCLK


而當TBCLK!=EPWMCLK時的1個時鐘延時並不是1個TBCLK,而是1個Clk1,但是TBPHS的單位又是TBCLK,因而如果要做這個延時補償一定要把TBCTL.CLKDIV設成0,否則無法補償




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章