NXP LPC55S06 SCTimer 章節介紹及基本程式範例

  • SCTimer / PWM ( SCT ) 
1.  SCTimer / PWM 可以作為一個 32 位計數器或兩個獨立的 16 位計數器在單、雙向模式下運行。
2.  具有
八個輸入;十個輸出;十六個匹配 / 捕獲暫存器;十六個事件; 三十二個狀態可配置。
3.  當存在匹配/輸入/輸出轉換或電平時,創建事件以完成以下任何操作:停止、限制或暫停計時器; 改變計數方向; 設置、清除或切換輸出; 改變狀態; 捕獲計數器值; 產生中斷或 DMA 請求。

* NXP LPC55S0x/LPC550x user maunal ( UM11424.pdf page 448) 

  • SCT 簡單的 PWM 設置說明

NXP LPC55S0x/LPC550x user maunal ( UM11424.pdf page 481)

1.  
在初始狀態 0 中,匹配事件 EV0 發生將輸出 0 設置為高電平 1,當匹配事件 EV1 發生清除輸出為 0。當 SCT counter 到達 LIMIT 自動清 0。
2.  在下次定時器復位時 SCT input 輸入為低電平觸發 EV2,則狀態更改為狀態 1,並且啟用 EV3 和 EV4。
3.  在初始狀態 1 中,匹配事件 EV3 發生將輸出 0 設置為高電平 1,當匹配事件 EV4 發生清除輸出為 0,當 SCT counter 到達 LIMIT 自動清 0。
4.  在下次定時器復位時發現輸入為高電平觸發 EV5,使狀態變回狀態 0,其中事件 EV0 和 EV1 被啟用。

  • SCT 設置步驟
1.  配置計數器:
     a. 通過在 UNIFY 字段中選擇兩個獨立的 16 位計數器(L 計數器和 H 計數器)或一個 32 位計數器;
     b. 從任何輸入或內部時鐘中選擇  SCT 時鐘源;
2.  配置匹配和捕獲暫存器:
     a. 在 REGMODE 暫存器中,為每個匹配/捕獲暫存器設置是用作匹配暫存器還是用作捕獲暫存器;
     b. 如果使用 32 位計數器,每個匹配暫存器 MATCH 設置一個匹配值,如果使用 L 和 H 16 位計數器,則設置兩個匹配值;
     c. 每個匹配重載暫存器 MATCHRELOAD 設置一個重載值,當計數器達到限制條件或值為 0 時,該值被加載到匹配暫存器中;
3.  配置事件和事件響應:
     a. 定義每個事件發生條件;
     b. 在 OUTn_SET 或 OUTn_CLR 暫存器中定義每個事件對 SCT 輸出的影響;
     c. 定義每個事件如何影響計數器;
     d. 定義導致 SCT 中斷的事件;
4.  配置多個狀態:
     a. 在每個事件的 EVn_STATE 暫存器中,選擇允許該事件發生的一個或多個狀態;
     b. 確定事件如何影響系統狀態。在 EVn_CTRL 暫存器中,為此事件在 STATEV 字段中設置新狀態值;

  • SCTimer 24 KHz PWM, duty is 80% 程式範例
1.  設定 System control,AHBCLKCTRL 啟動 SCTimer 模塊的 clock,並於 PRESETCTRL 將其模塊重置。

     

2.  透過 SCTCLKSEL 選擇 SCTimer 來源,並設定其除頻器。

     

3.  設置 SCT 為 32-bit counter,並清除 counter 為 0。設置 event 為匹配模式,且設定 event 1 的 limit。設置計數方向。

     

     
NXP LPC55S0x/LPC550x user maunal ( UM11424.pdf page 456)

     

NXP LPC55S0x/LPC550x user maunal ( UM11424.pdf page 458)

     
NXP LPC55S0x/LPC550x user maunal ( UM11424.pdf page 460)

     
NXP LPC55S0x/LPC550x user maunal ( UM11424.pdf page 464)

     
NXP LPC55S0x/LPC550x user maunal ( UM11424.pdf page 465)

4.  設置 event 0 & event 1 的匹配值和重置匹配值。

    

     
NXP LPC55S0x/LPC550x user maunal ( UM11424.pdf page 469)

     
NXP LPC55S0x/LPC550x user maunal ( UM11424.pdf page 469)

5.  設置 event 0 & event 1 的發生狀態,和與其事件對應的匹配暫存器。

     

    
NXP LPC55S0x/LPC550x user maunal ( UM11424.pdf page 470)

     
NXP LPC55S0x/LPC550x user maunal ( UM11424.pdf page 471)

6.  當 event 0 發生,將 output 2 輸出 1;event 1 發生,將 output 2 輸出 0。

     

     
NXP LPC55S0x/LPC550x user maunal ( UM11424.pdf page 472)

7.  SCTimer 24 KHz PWM, duty is 80%示波器波形。

     

  • SCTimer capture 同步輸入訊號 ( 100 Hz 方波)
1.  同 PWM 設置步驟 1
2.  同 PWM 設置步驟 2
3.  設置 SCT 為 32-bit counter,並清除 counter 為 0。設置 event 為擷取模式

     

4.  當 event 0 和 event 1 發生時重新載入對應之 CAP 暫存器。

    

    
NXP LPC55S0x/LPC550x user maunal ( UM11424.pdf page 470)

5. 設定 event 0 和 event 1 的發生狀態,並將 event 0 設為當 Input 0 發生上升緣時觸發,event 1 設為當 Input 0 發生下降緣時觸發。

     
     
6.  設定 SCT interrupt,當 event 0 或 event 1 觸發時產生中斷,並設置 NVIC 的相對中斷,即可使 SCT 開始計數。

    

7.  設定 SCT input 0 is PIO0_0,將 IOCON 功能開啟使 PIO0_0 功能為 SCT0_GPI0。

     

8.  設定 SCT 的 INPUTMUX,將 SCT_GPI0 設為 STC INPUT0。

    

    
NXP LPC55S0x/LPC550x user maunal ( UM11424.pdf page 361)

9.  實測波形

     

*註一 : 圖片來源 LPC55S0x/LPC550x User manual ( UM11424.pdf )

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論