Page 1 of 1

涂鸦OS版本3.11.2 T5开发板 touch功能怎么用呀?

Posted: 2025年 Mar 28日 14:57
by Gzz_lin

读到的touch状态一直是2,不知道怎么使用

Code: Select all

VOID_T hly_key_touch_init()
{
    UINT32_T cap_out;
    touch_config_t touch_config={
        .detect_range=TOUCH_DETECT_RANGE_8PF,
        .detect_threshold=TOUCH_DETECT_THRESHOLD_6,
        .sensitivity_level=TOUCH_SENSITIVITY_LEVLE_0
    };
    
bk_touch_gpio_init(BK_TOUCH_1); bk_touch_enable(BK_TOUCH_1); bk_touch_config(&touch_config); bk_touch_calibration_start(); cap_out = bk_touch_get_calib_value(); TAL_PR_NOTICE("touch cali-1 %d",cap_out); if (cap_out >= 0x1F0) { touch_config.detect_range = TOUCH_DETECT_RANGE_12PF; bk_touch_config(&touch_config); bk_touch_calibration_start(); cap_out = bk_touch_get_calib_value(); TAL_PR_NOTICE("touch cali-2 %d",cap_out); if (cap_out >= 0x1F0) { touch_config.detect_range = TOUCH_DETECT_RANGE_19PF; bk_touch_config(&touch_config); bk_touch_calibration_start(); cap_out = bk_touch_get_calib_value(); TAL_PR_NOTICE("touch cali-3 %d",cap_out); if (cap_out >= 0x1F0) { touch_config.detect_range = TOUCH_DETECT_RANGE_27PF; bk_touch_config(&touch_config); bk_touch_calibration_start(); cap_out = bk_touch_get_calib_value(); TAL_PR_NOTICE("touch cali-4 %d",cap_out); if (cap_out >= 0x1F0) { TAL_PR_NOTICE("Calibration value is out of the detect range, the channel cannot be used, please select the other channel!\r\n"); return; } } } } }

读取状态线程

Code: Select all

STATIC VOID_T key_task(VOID_T* param)
{
    UINT8_T value=0;
    UINT32_T cap_out;
    UINT32_T touch;
    while(1)
    {
        tkl_gpio_read(KEY_PIN,&value);
        if(value==0)
        {
            if(gb_key_on_time<KEY_HOLD_TIME)
            {
                gb_key_on_time+=10;
            }
            if(gb_key_on_time==KEY_HOLD_TIME)
            {
                gb_key_on_time++;
                key_action(KEY_VALUE_PRESS);
                
} } else if(gb_key_on_time>0) { if(gb_key_on_time<KEY_HOLD_TIME) { key_action(KEY_VALUE_CLICK); } gb_key_on_time=0; } cap_out = bk_touch_get_calib_value(); touch = bk_touch_get_touch_status(); TAL_PR_NOTICE("cap_out=%d touch=%d",cap_out,touch); tal_system_sleep(10); } }

TAL_PR_NOTICE("cap_out=%d touch=%d",cap_out,touch);输出的值一直都是不变的,触摸P13,P13接地,P13接VCC都没有任何变化.

Code: Select all

[03-28 14:57:12 ty N][402][hly_key.c:74] cap_out=430  touch=2
[03-28 14:57:12 ty N][402][hly_key.c:74] cap_out=430  touch=2
[03-28 14:57:12 ty N][402][hly_key.c:74] cap_out=430  touch=2
[03-28 14:57:12 ty N][402][hly_key.c:74] cap_out=430  touch=2
[03-28 14:57:12 ty N][402][hly_key.c:74] cap_out=430  touch=2
[03-28 14:57:12 ty N][402][hly_key.c:74] cap_out=430  touch=2
[03-28 14:57:12 ty N][402][hly_key.c:74] cap_out=430  touch=2
[03-28 14:57:12 ty N][402][hly_key.c:74] cap_out=430  touch=2