ADC 按键配置方法
FreeRTOS平台上使用的按键为ADC-KEY,采用的ADC模块为GPADC。
按键功能驱动的实现是通过ADC分压,使每个按键检测的电压值不同,从而实现区分不同的按键。按下或者弹起中断之后,通过中断触发,主动检测当前电压识别出对应的按键。最后再通过input子系统将获取按键的键值并上报给应用层。
GPADC-Key配置方法
按键结构体定义key_config的成员:
struct sunxikbd_config{
unsigned int measure; // 电压阈值
char *name; // 功能名
unsigned int key_num; // 按键数量
unsigned int scankeycodes[KEY_MAX_CNT]; // 按键的键值
unsigned int key_vol[KEY_MAX_CNT]; // 按键的电压值
};
不同平台的配置可能不同,以r128为例,下面是r128的成员config:
static struct sunxikbd_config key_config = {
.measure = 2500,
.name = "gpadc-key",
.key_num = 5,
.key_vol = {164,415,646,900,1157},
.scankeycodes = {115,114,139,164,116}
};