CH582M同时使用触摸按键功能和ADC功能出现问题

单独使用触摸按键功能是正常的,单独使用ADC读取AD正常的。但是加在一起后哪个最后初始化哪个可以使用,感觉不能共用。

void Touch_Key_init(void)

{

  TouchKey_TaskID = TMOS_ProcessEventRegister( Touch_Key_ProcessEvent );

  touchkey_baseinit();

  touchkey_channelinit();


  tmos_set_event(TouchKey_TaskID,GetKey_EVT);

}

void HeartInit()

{

GPIOA_ModeCfg(GPIO_Pin_2, GPIO_ModeOut_PP_20mA);

GPIOA_ModeCfg(GPIO_Pin_1, GPIO_ModeIN_Floating);

    ADC_ExtSingleChSampInit(SampleFreq_3_2, ADC_PGA_0);

    ADC_InterTSSampInit();


    

HeartTaskID = TMOS_ProcessEventRegister(HEART_ProcessEvent);

tmos_set_event(HeartTaskID, HeartGetADC_EVENT);

}

这是这两个初始化函数

adc和触摸都是使用同一个寄存器不同的工作模式,所以两者切换需要切换寄存器配置。582的触摸库已经包含了这个操作


ADC问题已解决。咨询一下,我有扫描LED操作,当没有连接蓝牙的时候led扫描不会有抖动,但是连接之后led扫描明显出现抖动,led扫描我是用的tmos开了一个扫描任务操作的,是不是连接蓝牙之后有什么任务优先级很高一直占用导致的。请问这个该怎么解决


将这里的连接间隔适当拉大一些试试看。

3.png


Tmos的任务都是顺序执行的,蓝牙的任务比较靠前,所以顺序轮询会先执行蓝牙任务。
你扫描LED的代码复杂吗,如果不复杂,处理时间不长可以放到中断里面执行,然后根据情况把蓝牙的连接间隔搞长一点。


开了一个定时器中断里操作后解决问题。我现在从机模块设置HAL_SLEEP=1后,测量电流有70多ua~150多ua来回跳动,想问下如何降低到10ua附近


CH573 CH582 CH579 peripheral通用外设例子讲解二 HAL SLEEP控制逻辑 - debugdabiaoge - 博客园 (cnblogs.com)
继续扩大睡眠时间,缩减工作时间


我将WAKE_UP_RTC_MAX_TIME改成1后也有30多ua,请问CH582M可以实现10S广播一次数据然后功耗在10ua左右吗,如果可以应该怎么操作


WAKE_UP_RTC_MAX_TIME这个是用来等待晶振起振的时间,是不需要改的,可以增大连接间隔和增大广播间隔。

// Minimum connection interval (units of 1.25ms, 6=7.5ms)

#define DEFAULT_DESIRED_MIN_CONN_INTERVAL    

// Maximum connection interval (units of 1.25ms, 100=125ms)

#define DEFAULT_DESIRED_MAX_CONN_INTERVAL    

#define DEFAULT_ADVERTISING_INTERVAL             广播间隔




可以一开始的连接间隔比较小然后连接上主机之后将连接间隔增大来减小功耗吗?应该怎么操作?还有就是DEFAULT_DESIRED_MIN_CONN_INTERVAL和DEFAULT_DESIRED_MAX_CONN_INTERVAL可以选择么?我感觉我连接的时候连接间隔是DEFAULT_DESIRED_MAX_CONN_INTERVAL,连接成功后是DEFAULT_DESIRED_MIN_CONN_INTERVAL


一开始处于广播态,这个时候你的广播间隔影响你的功耗,没有连接连接间隔不起作用。连接上之后主机和从机在范围内协商出连接间隔,以连接后的连接间隔为准。结合自己的需求调节广播间隔和连接间隔。


只有登录才能回复,可以选择微信账号登录