CH573觸摸問(wèn)題

我在使用C573開(kāi)發(fā)板測(cè)試觸摸的時(shí)候發(fā)現(xiàn)沒(méi)有數(shù)值變化,我采用的是官方例程。

這里面應(yīng)該是?/* TouchKey采樣:選擇adc通道 2 做采樣,對(duì)應(yīng) PA12 */開(kāi)發(fā)板連接PA12,我下載到開(kāi)發(fā)板后用手觸摸PA12。一直顯示4095.不知道什么原因。


image.png


/********************************** (C) COPYRIGHT *******************************

?* File Name? ? ? ? ? : Main.c

?* Author? ? ? ? ? ? ?: WCH

?* Version? ? ? ? ? ? : V1.0

?* Date? ? ? ? ? ? ? ?: 2021/03/09

?* Description? ? ? ? : adc采樣示例,包括溫度檢測(cè)、單通道檢測(cè)、差分通道檢測(cè)、TouchKey檢測(cè)、中斷方式采樣。

?* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.

?* SPDX-License-Identifier: Apache-2.0

?*******************************************************************************/


#include "CH57x_common.h"


uint16_t abcBuff[40];


volatile uint8_t adclen;

volatile uint8_t DMA_end = 0;


/*********************************************************************

?* @fn? ? ? DebugInit

?*

?* @brief? ?調(diào)試初始化

?*

?* @return? none

?*/

void DebugInit(void) {

? ? GPIOA_SetBits(GPIO_Pin_9);

? ? GPIOA_ModeCfg(GPIO_Pin_8, GPIO_ModeIN_PU);

? ? GPIOA_ModeCfg(GPIO_Pin_9, GPIO_ModeOut_PP_5mA);

? ? UART1_DefInit();

}


/*********************************************************************

?* @fn? ? ? main

?*

?* @brief? ?主函數(shù)

?*

?* @return? none

?*/

int main() {

? ? uint8_t i;

? ? signed short RoughCalib_Value = 0; // ADC粗調(diào)偏差值


? ? SetSysClock(CLK_SOURCE_PLL_60MHz);


? ? /* 配置串口調(diào)試 */

? ? DebugInit();

? ? PRINT("Start @ChipID=%02X\n", R8_CHIP_ID);


? ? /* 溫度采樣并輸出, 包含數(shù)據(jù)校準(zhǔn) */

? ? PRINT("\n1.Temperature sampling...\n");

? ? ADC_InterTSSampInit();

? ? RoughCalib_Value = ADC_DataCalib_Rough(); // 用于計(jì)算ADC內(nèi)部偏差,記錄到變量 RoughCalib_Value中,注意這個(gè)變量需要定義為有符號(hào)變量

? ? for (i = 0; i < 20; i++) {

? ? ? ? abcBuff[i] = ADC_ExcutSingleConver() + RoughCalib_Value; // 連續(xù)采樣20次

? ? }

? ? for (i = 0; i < 20; i++) {

? ? ? ? PRINT("%d \n", abcBuff[i]);

? ? }


? ? /* 單通道采樣:選擇adc通道0做采樣,對(duì)應(yīng) PA4引腳, 帶數(shù)據(jù)校準(zhǔn)功能 */

? ? PRINT("\n2.Single channel sampling...\n");

? ? GPIOA_ModeCfg(GPIO_Pin_4, GPIO_ModeIN_Floating);

? ? ADC_ExtSingleChSampInit(SampleFreq_3_2, ADC_PGA_0);


? ? RoughCalib_Value = ADC_DataCalib_Rough(); // 用于計(jì)算ADC內(nèi)部偏差,記錄到全局變量 RoughCalib_Value中

? ? PRINT("RoughCalib_Value =%d \n", RoughCalib_Value);


? ? ADC_ChannelCfg(0);

? ? for (i = 0; i < 20; i++) {

? ? ? ? abcBuff[i] = ADC_ExcutSingleConver() + RoughCalib_Value; // 連續(xù)采樣20次

? ? }

? ? for (i = 0; i < 20; i++) {

? ? ? ? PRINT("%d \n", abcBuff[i]); // 注意:由于ADC內(nèi)部偏差的存在,當(dāng)采樣電壓在所選增益范圍極限附近的時(shí)候,可能會(huì)出現(xiàn)數(shù)據(jù)溢出的現(xiàn)象

? ? }


? ? /* DMA單通道采樣:選擇adc通道0做采樣,對(duì)應(yīng) PA4引腳 */

? ? GPIOA_ModeCfg(GPIO_Pin_4, GPIO_ModeIN_Floating);

? ? ADC_ExtSingleChSampInit(SampleFreq_3_2, ADC_PGA_0);

? ? ADC_ChannelCfg(0);

? ? ADC_AutoConverCycle(192); // 采樣周期為 (256-192)*16個(gè)系統(tǒng)時(shí)鐘

? ? ADC_DMACfg(ENABLE, (uint16_t) (uint32_t) &abcBuff[0],

? ? ? ? ? ? (uint16_t) (uint32_t) &abcBuff[40], ADC_Mode_Single);

? ? PFIC_EnableIRQ(ADC_IRQn);

? ? ADC_StartDMA();

? ? while(!DMA_end);

? ? DMA_end = 0;

? ? PRINT("ADC DMA end \n");

? ? for (i = 0; i < 40; i++) {

? ? ? ? PRINT("%d \n", abcBuff[i]);

? ? }


? ? /* 差分通道采樣:選擇adc通道0做采樣,對(duì)應(yīng) PA4(AIN0)、PA12(AIN2) */

? ? PRINT("\n3.Diff channel sampling...\n");

? ? GPIOA_ModeCfg(GPIO_Pin_4 | GPIO_Pin_12, GPIO_ModeIN_Floating);

? ? ADC_ExtDiffChSampInit(SampleFreq_3_2, ADC_PGA_0);

? ? ADC_ChannelCfg(0);

? ? for (i = 0; i < 20; i++) {

? ? ? ? abcBuff[i] = ADC_ExcutSingleConver(); // 連續(xù)采樣20次

? ? }

? ? for (i = 0; i < 20; i++) {

? ? ? ? PRINT("%d \n", abcBuff[i]);

? ? }


? ? /* TouchKey采樣:選擇adc通道 2 做采樣,對(duì)應(yīng) PA12 */

? ? PRINT("\n4.TouchKey sampling...\n");

? ? GPIOA_ModeCfg(GPIO_Pin_12, GPIO_ModeIN_Floating);

? ? TouchKey_ChSampInit();

? ? ADC_ChannelCfg(2);


? ? for (i = 0; i < 20; i++) {

? ? ? ? abcBuff[i] = TouchKey_ExcutSingleConver(0x10, 0); // 連續(xù)采樣20次

? ? }

? ? for (i = 0; i < 20; i++) {

? ? ? ? PRINT("%d \n", abcBuff[i]);

? ? }


? ? /* 單通道采樣:中斷方式,選擇adc通道1做采樣,對(duì)應(yīng) PA5引腳, 不帶數(shù)據(jù)校準(zhǔn)功能 */

? ? PRINT("\n5.Single channel sampling in interrupt mode...\n");

? ? GPIOA_ModeCfg(GPIO_Pin_5, GPIO_ModeIN_Floating);

? ? ADC_ExtSingleChSampInit(SampleFreq_3_2, ADC_PGA_0);

? ? ADC_ChannelCfg(1);

? ? adclen = 0;

? ? ADC_ClearITFlag();

? ? PFIC_EnableIRQ(ADC_IRQn);


? ? ADC_StartUp();

? ? while(adclen < 20);

? ? PFIC_DisableIRQ(ADC_IRQn);

? ? for (i = 0; i < 20; i++) {

? ? ? ? PRINT("%d \n", abcBuff[i]);

? ? }


? ? while(1) {

? ? ? ? /* TouchKey采樣:選擇adc通道 2 做采樣,對(duì)應(yīng) PA12 */

? ? ? ? PRINT("\n4.觸摸采樣...\n");

? ? ? ? GPIOA_ModeCfg(GPIO_Pin_12, GPIO_ModeIN_Floating);

? ? ? ? TouchKey_ChSampInit();

? ? ? ? ADC_ChannelCfg(2);


? ? ? ? for(i = 0; i < 20; i++)

? ? ? ? {

? ? ? ? ? ? abcBuff[i] = TouchKey_ExcutSingleConver(0x10, 0); // 連續(xù)采樣20次

? ? ? ? }

? ? ? ? for(i = 0; i < 20; i++)

? ? ? ? {

? ? ? ? ? ? PRINT("%d \n", abcBuff[i]);

? ? ? ? }


? ? ? ? DelayMs(1000);


? ? }

}


/*********************************************************************

?* @fn? ? ? ADC_IRQHandler

?*

?* @brief? ?ADC中斷函數(shù)

?*

?* @return? none

?*/

__attribute__((interrupt("WCH-Interrupt-fast")))

__attribute__((section(".highcode")))

void ADC_IRQHandler(void) {

? ? if (ADC_GetDMAStatus()) {

? ? ? ? ADC_ClearDMAFlag();

? ? ? ? ADC_StopDMA();

? ? ? ? R16_ADC_DMA_BEG = (uint16_t) (uint32_t) &abcBuff[0];

? ? ? ? DMA_end = 1;

? ? }

? ? if (ADC_GetITStatus()) {

? ? ? ? ADC_ClearITFlag();

? ? ? ? if (adclen < 20) {

? ? ? ? ? ? abcBuff[adclen] = ADC_ReadConverValue();

? ? ? ? ? ? ADC_StartUp(); // 作用清除中斷標(biāo)志并開(kāi)啟新一輪采樣

? ? ? ? }

? ? ? ? adclen++;

? ? }

}


你這邊是怎么去操作的呢,有接觸摸板嘛


我也是,沒(méi)反應(yīng),沒(méi)有接觸摸板,直接用杜邦線接然后觸摸杜邦線的頭,請(qǐng)問(wèn)解決了嗎?還是說(shuō)必須要接出觸摸板或者彈簧?


需要專門的硬件繪制并進(jìn)行觸摸功能的時(shí)候,可以留下郵箱,我們提供硬件繪制參考和最新的觸摸功能使用參考。


只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频