- SCTimer / PWM ( SCT )
1. SCTimer / PWM 可以作為一個 32 位計數器或兩個獨立的 16 位計數器在單、雙向模式下運行。
2. 具有八個輸入;十個輸出;十六個匹配 / 捕獲暫存器;十六個事件; 三十二個狀態可配置。
3. 當存在匹配/輸入/輸出轉換或電平時,創建事件以完成以下任何操作:停止、限制或暫停計時器; 改變計數方向; 設置、清除或切換輸出; 改變狀態; 捕獲計數器值; 產生中斷或 DMA 請求。
* NXP LPC55S0x/LPC550x user maunal ( UM11424.pdf page 448)
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 字段中設置新狀態值;
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)
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 )
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 )
評論