如何使用HT66F40 STM Input Capture 功能

如何使用HT66F40 STM Input Capture 功能
如何使用 HT66F40 STM Input Capture 功能
如何使用 HT66F40 STM Input Capture 功能
文件編碼:HA0246T
簡介
HT66Fx0 系列 MCU 提供了一個新的功能單元 TM,即 Timer Modules,整合了 Timer 和 PWM
的功能,提供包括普通 Timer 定時、外部計數、可程式 Duty/Period PWM 輸出或單脈衝輸出、
輸入捕捉等豐富的功能。TM 依據功能可分爲簡單型 TM (CTM)、普通型 TM (STM) 和增強
型 TM (ETM)。
本文即以 HT66F40 為母體,通過具體範例說明 STM 中輸入捕捉功能的使用。
工作原理
STM 的核心是一個向下計數的 16 位元的計數器和兩個比較器,具體結構如下圖示:
C C R P
3 o r 8 - b it C o m p a r a to r P
fS
Y S
/4
fS
Y S
fH /1 6
fH /6 4
fT B C
R e s e rv e d
T C K n
T n P F In te rru p t
b 7 ~ b 9 o r b 8 ~ b 1 5
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
C o m p a ra to r P M a tc h
1 0 o r 1 6 - b it C o u n t- u p C o u n te r
b 0 ~ b 9 o r
b 0 ~ b 1 5
T n O N
T n P A U
T n O C
1
T n C C L R
C o m p a ra to r A
1 0 o r 1 6 - b it
C o m p a ra to r A
0
C o u n te r C le a r
M a tc h
O u tp u t
C o n tro l
P o la r ity
C o n tro l
T n M 1 , T n M 0
T n IO 1 , T n IO 0
T n P O L
T P n P in
In p u t/O u tp u t
T P n _ 0
T P n _ 1
T n A F In te rru p t
T n IO 1 , T n IO 0
T n C K 2 ~ T n C K 0
C C R A
E d g e
D e te c to r
Standard Type TM Block Diagram
注意:本範例中的 n=2。
計數器的時鐘源可以通過設定 T2CK0~T2CK2 選擇為 fSYS/4、fSYS、fH/16、fH/64、fTBC 或者為 TCK2
輸入。兩個內部比較器:CCRP 即 TM2RP 和 CCRA 即 TM2A,用於設定比較基準值,CCRP
有 8 位元寬,只對計數器的高 8 位元進行比較,而 CCRA 的位元數和計數器一樣,可以跟
計數器比較所有的位元。當設定好相關的暫存器 TM 開始運行後計數器向上計數,系統會
將預先寫入 CCRA 的值與計數器中的值進行比較。計數器在計數溢出或者與設定 CCRA 的
值相等時,可以自動清除為零並產生一個中斷信號,同時系統會根據程式設定產生相應的
輸出信號。計數器中 TM2DH/TM2DL 的值無法改變,但是可以讀出,只能通過設定 T2ON
位元由 0→1 才能清除為零計數器。T2POL 可以對 TP2 輸出邏輯進行控制,當被設定為 1,
可以強制對 TP2 輸出邏輯翻轉。
1
如何使用 HT66F40 STM Input Capture 功能
HT66F40 輸出管腳介紹:
管腳
TP2_0
TP2_1
功能描述
CCRA/CCRP
匹配輸出管腳
CCRA/CCRP
匹配輸出管腳
TMPC0
PRM2
T2CP0
1 : 使能 TP2 功能
0 : I/O 功能或者其他功能
TP20PS
0 : Enable TP2_0 on PC3
1 : Enable TP2_0 on PD1
T2CP1
1 : 使能 TP2 功能
0 : I/O 功能或者其他功能
TP21PS
0 : Enable TP2_1 on PC4
1 : Enable TP2_1 on PD4
在輸入捕捉模式中,計數器由 CCRP 匹配清除為零。設定 STM 工作模式為輸入捕捉後,選
擇 TP2 管腳捕捉方式,比如上升緣、下降緣或者為上升緣或下降緣皆可捕捉。將 T2ON 設
定 1,計數器即開始計數。一旦相應的邊緣到來,STM 捕捉其目前的 Counter 計數值到 CCRA,
T2AF 中斷旗標設定 1。若相應的中斷使能,程式將進入相應的中斷服務程式。注意,由於
CCRP 和 CCRA 匹配中斷的入口位址一樣,需要在進入中斷服務程式後,判斷中斷旗標來區
分兩種中斷。T2AF 和 T2PF 不能自動清除為零,需要在中斷程式中軟體清除為零,否則不
能響應下次中斷。程式進入中斷服務程式後,判斷是 CCRA 還是 CCRP 匹配中斷,若是 CCRA
中斷則記錄當前 CCRA 的資料作為初值;若是 CCRP 中斷則將 CCRP 匹配中斷次數加 1,計
算在下一次 CCRA 匹配中斷來臨之前 CCRP 匹配中斷次數 N1。當下一次 CCRA 匹配中斷來
臨,記錄 CCRA 的資料作為終值。若 CCRP 設置為 N2,則所測量的寬度為(N1*N2*256+終
值-初值)個 Clock。通過靈活的設定捕捉的邊緣類型,可以測量到脈衝的高準位、低準位或
者週期。
輸入捕捉模式時序圖:
注意:本範例中的 n=2
2
如何使用 HT66F40 STM Input Capture 功能
在設定輸入捕捉模式前,可對 PRM2 暫存器設定相應的位元,將 TP2 管腳設定在不同的 I/O
管腳。再對 TMPC1 暫存器進行設定,選擇 I/O 相應的 TP2 功能使能。
STM 工作在輸入捕捉模式其使用步驟如下表:
步驟
操作內容
暫存器
設定位元
功能描述
1
設定時鐘源
TM2C0
T2CK0~T2CK2
選擇 STM 的時鐘源
2
設置 STM 工作模式
TM2C1
T2M1, T2M0=01
01為 TP2 通道輸入捕捉模式
3
選擇 STM 的輸入管腳
TMPC1
T2CP1, T2CP0=01 or 10
使能 TP2 的管腳功能
TM2C1
T2IO1/T2IO0 :
00 : 捕捉上升緣
01 : 捕捉下降緣
10 : 捕捉上升緣和下降緣
11 : 不補捉
設定 TP2 輸入捕捉邊緣
INTC1
MF0E
MFI0
T2PE, T2AE
4
選擇 TP2 輸入捕捉邊緣
5
設置中斷允許位元
使能 STM 和多個功能的中斷
6
開啟 STM
TM2C0
T2ON 0 → 1
重置計數器,STM 開始工作
7
捕捉計數值
---
---
在實際捕捉邊緣到來時
8
STM 停止功能
TM2C0
9
停止捕捉
TM2C1
T2PAU 0 → 1
T2ON 1 → 0
T2IO1/T2IO0
11 : 停止捕捉
STM 暫停工作,計數器值保持不變
停止捕捉,但是 STM 繼續計數
Application Circuit
One Pulse Output
One Pulse Input
One Pulse Input
説明:
對 STM 而言在 Input Capture 模式,有 2 個通道 TP2_0/TP2_1 可以捕獲外部脈衝的寬度。
第一通道 TP2_0 (Pin 15) 為外部脈衝輸入通道,通過該通道,STM 抓取其寬度。也可以從
第二通道 TP2_1 (Pin 14) 輸入外部脈衝,STM 抓取其寬度。
應用電路圖中 One Pulse Output (Pin 1) 是為了讓應用開發者清楚,將所抓取的高準位寬度再
從之輸出。
3
如何使用 HT66F40 STM Input Capture 功能
S/W Flowchart
主流程
中斷子程式流程
中斷服務子程序
中斷返回
4
如何使用 HT66F40 STM Input Capture 功能
程式説明
本範例是使用 STM 的輸入捕捉功能抓取高準位的程式,然後通過 STM 的 Timer 模式再通過
翻轉 I/O 的方式將高準位輸出,以達到輸入高準位和輸出高準位比較,說明抓取的高準位
準確性。
程式首先設定 STM 抓取上升緣模式,開啟中斷。等待,判斷高準位是否已經抓取完畢。若
抓取完畢,再將所抓取到的資料通過設定 STM 的匹配模式,通過翻轉 I/O 埠的方式將高準
位的輸出。
在 STM 的中斷服務程式中,首先判斷 STM 是工作在 Timer Mode 還是 Input Capture Mode。
若是在工作 Input Capture Mode,判斷中斷旗標 T2PF 來判斷是 CCRP 匹配中斷還是 CCRA 中
斷。若是 CCRA 中斷,通過軟體設定的旗標來判斷 CCRA 中斷是否是第一次,若是,則軟
體設定旗標,表示 CCRA 中斷已經中斷一次,然後保存 CCRA 的值作為初值,改變捕捉邊
沿為下降緣,退出中斷服務程式。如 CCRA 中斷是第二次,說明下降緣已經捕捉完畢,軟
體設定相關旗標,表示 CCRA 中斷已經中斷兩次,保存 CCRA 的值作為終值,關閉 STM,
返回。在這期間若有 CCRP 匹配中斷,清除 T2PF,判斷相關旗標,判斷 CCRA 中斷是否已
經中斷一次。若有,計數器加 1,返回。通過上面的所述,得到了 CCRP 匹配中斷次數,初
值,終值,CCRP 暫存器的值,即可知高準位的寬度。
若 STM 是工作在 Timer 模式中,判斷中斷旗標 T2PF 來判斷是 CCRP 匹配中斷還是 CCRA
中斷。若是 CCRA 中斷,則判斷脈衝通過 PA.0 輸出完畢沒有,若輸出完畢則清除各旗標,
並關閉 STM,如果沒有輸出完畢則繼續輸出。若是 CCRP 中斷,則判斷 CCRA 中斷過一次
沒有,如果有,則判斷脈寬輸出完畢否,倘若輸出完畢則置發送完畢旗標,沒有發送完畢
直接返回。而如果 CCRA 沒有中斷過一次,則直接返回。
程式範例 (範例 1)
程式代碼及說明:見附件 capture Input.zip。
實際輸出波形圖及說明。
外部輸入高準
位寬度 40ms
STM 抓取高準位後,輸
出的高準位寬度為 40ms
結論
本文通過上面 STM Input Capture Mode 的應用實例,對 STM Input Capture Mode 的運用進行了
闡述,使用者可根據具體情況來抓取脈衝的高準位寬度、低準位寬度等。
5
Was this manual useful for you? yes no
Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Download PDF

advertising