RISC-V MCU應用教程之觸控按鍵
簡介
CH32V103系列是以青稞V3A處理器為核心的32位通用MCU,該處理器是基於RISC-V開源指令集設計。片上集成了時鐘安全機制、多級電源管理、通用DMA控制器。此係列具有1路USB2.0主機/裝置介面、多通道12位ADC轉換模組、多通道TouchKey、多組定時器、多路IIC/USART/SPI介面等豐富的外設資源。
本章教程使用CH32V103開發板的觸控按鍵TK1進行觸控按鍵檢測,並將檢測資訊通過串列埠除錯助手列印顯示。
1、TKEY簡介及相關函式介紹
1、TKEY_V 開啟
TKEY_V單元檢測內部複用了ADC模組的通道選擇及部分暫存器地址,所用使用 TKEY_V功能需要開啟ADC模組(
注:因為共用了取樣通道選擇,所以ADC和TKEY_V檢測功能不能同時使用。
2、工作原理
一旦開啟了TKEY_V功能,硬體內部將自動進行週期性地取樣計數轉換過程,並在完成一次轉換後,通知應用程式碼在固定時間(tDR)內取走資料,開啟下一次轉換,此迴圈過程在TKEY_V開啟下是自動進行的。如圖所示,硬體內部會提供了用來計數的脈衝源TKCLK,應用軟體選擇當前硬體計數週期為500us或 1ms,當內部完成周期內的計數統計後,會產生
關於CH32V103觸控按鍵檢測具體資訊,可參考CH32V103應用手冊。
2、硬體設計
本章教程所用資源均為開發板內部資源,無需進行硬體設計。
3、軟體設計
TKEY_V通過電容改變影響內部振盪頻率變化的原理,以統計計數值大小檢測觸控按鍵。具體操作流程如下:
1)開啟RCC模組的ADCEN位,開啟TKEY_V暫存器操作許可權。
2)開啟TKEY_V功能,置ACON位為1,喚醒ADC模組。將ADC_CTLR1暫存器的TKENABLE位置1,開啟TKEY_V
3)配置取樣週期,操作TKEY_V_CTLR暫存器的CCSEL[2:0]和TKCPS位,選擇500us 或1ms週期。單元內部是以AHB時鐘計時,所以需要CCSEL[2:0]域與當前 AHB 頻率相等,否則會導致取樣週期偏大或偏小。
4)配置取樣通道,設定TKEY_V_CHANNEL暫存器,此暫存器的寫操作會觸發新的一輪週期開始。
5)等待TKIF標誌置1,表示完成一次轉換,可以讀取TKEY_V_SDR暫存器中的 TKDR[13:0]計數值。TKSTA指示當前TKDR[13:0]域計數值是否有效。TKIF標誌需要軟體寫1清0。如果置位了TKIEN,在TKIF=1時會同步觸發TKEY_V(ADC)中斷,進入ADC中斷服務函式。
6)重複 3-5 步驟,獲取下一次計數值。3-4為可選配置。
根據上述操作步驟,編寫程式如下:
tkey.h檔案
tkey.h檔案主要進行相關定義及函式宣告;
tkey.c檔案
tkey.c檔案主要進行相關初始化配置以及獲取觸控按鍵檢測值
main.c檔案
main.c檔案主要進行函式初始化以及觸控按鍵檢測計數值的列印輸出。
4、下載驗證
將編譯好的程式下載到開發板並復位,串列埠列印具體情況如下:
手指觸控觸控按鍵之後,串列埠列印具體情況如下:
搜尋
複製