事件管理器 PWM

2021-08-26 16:00:52 字數 3213 閱讀 7858

事件管理器――pwm

2023年02月15日

「簡簡單單dsp」系列學習活動―第七期事件管理器――pwm

四、 pwm電路

每乙個事件管理器有三個比較單元,每乙個比較單元有兩個互補的pwm輸出,這樣三個比較單元就可以產生6路pwm,並且死區時間和輸出極性可程式設計,能夠被靈活的應用在電機控制、三相電源變換器中。

pwm單元電路包括如下功能單元:

a、 非對稱/對稱波形發生器

b、 可程式設計的死區單元

c、 輸出邏輯

d、 空間向量pwm狀態機

pwm單元的存在就減少了cpu的開銷,只要設定好就會自動產生pwm波形,就像dma的存在一樣,也同定時器工作一樣。可以用到它的中斷去改變占空比,如果是固定輸出的配置好一切皆ok。對於eva模組產生pwm用到的暫存器主要有:cmprx、t1pr、t1cnt、t1con、comcona、actra、dbtcona(死區控制暫存器),他用的時基單元是通用定時器1,參照上面說得比較單元的設定,因此還包括通用定時器1的基本設定。

(1)時鐘設定和通用定時器1的時鐘設定操作一樣,包括選擇內部還是外部時鐘以及與分頻係數在設定這個之前要保證eva的時鐘開啟;

sysctrlregs.pclkcr.bit.evaenclk=1;// eva的時鐘開啟

evaregs.t1con.bit.tclks10=0;//選擇內部時鐘

evaregs.t1con.bit.tps=3;//預分頻8倍,如果hspclk=150m,那麼通用定時器時鐘頻率是150/8m.

(2) 設定通用定時器1,參照上面的通用定時器設定,這裡包括設定t1cnt,t1pr,通常t1cnt初始化設定為0,t1pr設定的是你的pwm的頻率,根據自己的需要計算設定。

(3) 設定cmprx,這個就是設定你的占空比

evaregs.cmpr1 = 0x0c00;

evaregs.cmpr2 = 0x3c00;

evaregs.cmpr3 = 0xfc00;

通用定時器計數器t1cnt一直與比較暫存器比較,當發生比較匹配後,輸出pwm引腳就會根據您的設定跳變,通用定時器計數器t1cnt繼續計數一直到與週期暫存器週期匹配後,pwm輸出引腳再次跳變,這樣一直迴圈下去。

(4) 設定actra

比較方式控制暫存器就是控制輸出引腳發生跳變時的極性,還有就是空間向量pwm產生的設定,這裡不作介紹。actra後12位設定pwm輸出跳變的極性,每兩位設定乙個pwm引腳,這裡設定和比較產生pwm時一樣,需要注意的是乙個比較暫存器控制的互補輸出的一對pwm設定要正好相反。

evaregs.actra.all = 0x0666;//pwm1、pwm3、pwm5輸出高有效,pwm2 pwm4 pwm6輸出低有效

(5) 設定比較控制暫存器comcona

這個暫存器包括設定比較暫存器cmprx重新裝載條件、方式控制暫存器重新裝載條件、空間向量pwm模式使能、使能比較暫存器、全比較器輸出使能,其他三個比較器輸出使能。

具體設定如下:

(5)比較器控制暫存器comcona設定

a、設定cmprx過載條件

evaregs.comcona.bit.cld=0;//當t1cnt=0(下溢)

evaregs.comcona.bit.cld=1;//當t1cnt=0或t1cnt =t1pr(下溢後週期匹配)

evaregs.comcona.bit.cld=2;//立即

evaregs.comcona.bit.cld=3;//保留,結果不可測)

b、方式控制暫存器actra過載條件設定

evaregs.comcona.bit.actrld=0;// 當t1cnt=0(下溢)

evaregs.comcona.bit.actrld=1; 當t1cnt=0或t1cnt =t1pr(下溢後週期匹配)

evaregs.comcona.bit.actrld=2;// 立即

evaregs.comcona.bit.actrld=3;// 保留,結果不可測

e、 比較器使能位設定

evaregs.comcona.bit.cenable=0;//禁止比較操作,影子暫存器變透明

evaregs.comcona.bit.cenable=1;//使能

f、 單個比較器使能

evaregs.comcona.bit.fcmp1oe=0;//全比較器1禁止

evaregs.comcona.bit.fcmp1oe=1;// 全比較器使能

g、全比較器使能

evaregs.comcona.bit.fcompoe=0;// eva的三個比較器都禁止

evaregs.comcona.bit.fcompoe=1;// eva的三個比較器都使能

h、空間向量pwm模式使能位

evaregs.comcona.bit.svenable=0;// 空間向量pwm模式禁止

evaregs.comcona.bit. svenable =1;// 空間向量pwm模式使能

(6) 死區控制暫存器dbtcona

死區控制暫存器設定的是使能死區和死區時間。可程式設計的死區單元有以下特點:

a、 乙個16位死區控制暫存器dbtcona,可讀寫

b、 乙個16位輸入時鐘預定標器,其實就是分頻器

c、 cpu時鐘輸入

d、 3個4位減計數的定時器

e、 死區時間是由cpu時鐘、分頻係數和那個3個4位減計數器共同確定的,dbtcona【4~2】分頻係數,以2的dbtcona【4~2】次方為係數,dbtcona【11~8】為遞減計數器的值。

死區配置如下:

evaregs.dbtcona.bit.dbtps=3;//2的3次方對cpu時鐘8分頻

evaregs.dbtcona.bit.dbt=15;//遞減計數器從15開始

/* /

evaregs.dbtcona.bit.edbt1=1;//死區定時器1使能

evaregs.dbtcona.bit.edbt2=1;//死區定時器2使能

evaregs.dbtcona.bit.edbt3=1;//死區定時器3使能

(7) 相應的gpio設定

要使用它的比較輸出pwm功能,相應的gpio要設定為復用功能,在dsp281x_gpio.c庫函式中void initgpio(void)子函式設定,在主函式中呼叫。

函式c**如下:

void initgpio(void)

(8)配置的c**如下,這些在dsp281x_ev.c庫函式的void initev(void)子函式中,在主函式初始化的時候呼叫即可。

void initev(void)

布局管理器 網格袋布局管理器

網格袋布局管理器中的約束條件constrains中有如下字段需要設定 1 constrains.gridx和constrains.gridy 這兩個欄位僅用於指定元件的起始網格座標。2 constrains.gridwidth和constrains.gridheight 這兩個字段用於指定元件所佔網...

儲存管理器

cpu配置儲存管理器 cpu讀操作發命令給儲存管理器,儲存管理器根據配置讀取資料 nand flash啟動方式,開機片內sram拷貝nand flash前4k執行,在這4k的程式裡需要完成sram sdram跳轉 s3c2440有8個bank,即8個片選訊號,直連可以接8個記憶體類外設 sdram,...

布局管理器

jframe 內容面板在預設的情況下自動使用邊界布局管理器。1.邊界布局 borderlayout 所謂的borderlayout 就是把邊界劃分為東西南北中,南北要貫通,中間最大,不僅指地方最大,也指權利最大,當東西南北不存在時可占領他們,也就是說中間是可以占領周邊的,但周邊是絕不能占領中間的。邊...