SAM4E單片機(jī)之旅——4、LED閃爍之PWM
兩個LED燈雖然可以閃了,但是總是需要CPU的參與?,F(xiàn)在嘗試使用一種更為自動化的方法:讓脈寬調(diào)制(PWM)控制器輸出具有一定周期和占空比的方波,以此控制LED燈的亮滅。
一、實現(xiàn)思路
依然使用藍(lán)色和琥珀色的LED燈。開發(fā)板上能啟用四個PWM通道,每個通道能輸出兩個互補的方波。我們會啟用其中的一個通道,然后讓這個通道的兩個輸出分別控制一個LED燈。但是由于這兩個引腳上不存在同一通道的輸出,所以需要第三個引腳輔助。
我們將使用PWM的通道0。
1. PWMH0輸出至引腳PA0(外設(shè)A)。
2. PWML0輸出至引腳PC0(外設(shè)B)。
3. 引腳PD20配置為純輸入引腳。
4. 將PC0和PD20兩個引腳短接起來。
這樣就可以使這兩個LED燈交替閃爍了。
在PMC中啟用PWM時鐘。
1234/* PMC 啟用* PWM的ID大于31,需要在PMC_PCER1中啟用*/PMC->PMC_PCER1 = 1 << (ID_PWM - 32);禁用PWM通道。
通道在啟用時不能進(jìn)行完整的控制,先禁用通道。
設(shè)置時鐘。
通道選擇的時鐘直接或間接由主時鐘分頻得到。由于主時鐘頻率較高,所以為保證能產(chǎn)生肉眼可見的閃爍,這里會選擇盡可能大的分頻數(shù)。為對PWM的特性有更多的了解,我們將開啟它的Clock A。
通過向PWM時鐘控制器的(PWM_CLK)中的PERA字段寫入 9,以配置Clock A的輸入時鐘為MCK / 512;通過向DIVA字段寫入125,再將輸入時鐘進(jìn)行125分頻。配置完成后,CLKA輸出的時鐘的頻率即為MCK / (512 * 125)。初始化時,MCK的頻率為4MHz(4000000Hz),所以CLKA輸出頻率即為62.5 Hz。
選擇通道的模式。
為簡單起見,將使用默認(rèn)的屬性:周期為左對齊,極性為先輸出低電平,不使用中斷以及死區(qū)發(fā)生器。同時,在這里為通道選擇時鐘CLKA。
配置周期和占空比。
為觀察方便,將輸出脈沖方波的周期設(shè)置為2秒,占空比50%。因為使用的時鐘頻率為62.5Hz,所以需要將計數(shù)器的周期設(shè)置為62.5 * 2 = 125。將比較器閥值設(shè)置為63,使占空比大約為50%。
使能PWM通道。
12/* 使能 PWM */PWM->PWM_ENA = PWM_ENA_CHID0;三、PIO設(shè)置在實現(xiàn)思路中已經(jīng)說明了PIO引腳的配置,而且不是太為復(fù)雜,且后面將會給出完整代碼,這里就不單獨解釋了。