2024年8月7日发(作者:熊孤容)
轨迹球文档v0.01
一.轨迹球原理介绍
轨迹球结构原理如下图示
图1
轨迹球是通过外部机械运动使H1, H2, H3, H4四个霍尔元件产生电磁感应,从而改变
P1-P4的电压输出状态。
根据“霍尔效应”在霍尔元件中的应用以电磁转换来实现人机交互。
有关“霍尔效应”和“霍尔元件”请参考/view/?fr=ala0_1
二.轨迹球内部结构及注意事项
轨迹球内部结构如下图示
图2
如上图示,轨迹球输出端口为push-poll。
三.接口结构图
图3
目前RK手机方案采用基于TCA6424扩展IO芯片实现轨迹球与RK2808的状态交互。
当TCA6424轨迹球的在up、down、left、right和enter五个方向上有动作则发送中断到
RK2808通知轨迹球有操作,之后RK2808通过I2C接口读取TCA6424端口状态寄存器
得到状态改变的端口号。
注意:轨迹球button键无需处理毛刺,但需要外界上拉电阻到Vcc,不能处于float状
态。
四.软件流程
Kernel/arch/arm/mach-rockchips/Rk28_devices.c中添加platform设备。
Kernel/arch/arm/mach-rockchips/rk28_devices.c注册platform。
Kernel/drivers/input/Kconfig文件添加下一级Kconfig文件路径。
Kernel/drivers/input/Makefile添加.o文件路径。
添加文件夹Kernel/drivers/input/mobile_jogball
添加源文件Kernel/drivers/input/mobile_jogball/jogball.c
Jogball.c宏定义说明
#define TWO_DIREC_SUPPORT//支持两个方向处理
#define JOGBALL_SCAN_INTVAL 40 //轨迹球动作扫描,单位ms
#define ROLLUP 103//上滚动键值
#define ROLLDOWN 108//下滚动键值
#define ROLLLEFT 105//左滚动键值
#define ROLLRIGHT 106//右滚动键值
#define ROLLENT 28 //垂直按下键值
#define JOG_UP_PORT Extend_GpioPort0_Pin1//轨迹球上滚动对应IO定义
#define JOG_DOWN_PORT Extend_GpioPort0_Pin2//轨迹球下滚动对应IO定义
#define JOG_LEFT_PORT Extend_GpioPort0_Pin4//轨迹球左滚动对应IO定义
#define JOG_RIGHT_PORT Extend_GpioPort0_Pin3//轨迹球右滚动对应IO定义
#define JOG_ENTER_PORT Extend_GpioPort0_Pin5//轨迹球垂直按下对应IO定义
轨迹球设备结构体说明
struct rock28_jogball {
struct rock28_keypad_platform_data *pdata;
struct hrtimer timer;//轨迹球状态扫描hrtimer句柄
struct input_dev *input_dev;//input设备指针
unsigned char jogball_codes[5];//轨迹球五个方向键值
unsigned char codes_bak[2];//前一次按键状态备份
unsigned long noop_cnt;//无操作计数
unsigned long debonce;//预留祛抖标志
volatile unsigned long inv_dir[4];//水平方向上四个方向操作计数
volatile unsigned long inv_ent;//垂直方向上操作计数
};
软件流程示意图如下图示:
文档整理人:刘洋
邮箱:liuy@
图4
2024年8月7日发(作者:熊孤容)
轨迹球文档v0.01
一.轨迹球原理介绍
轨迹球结构原理如下图示
图1
轨迹球是通过外部机械运动使H1, H2, H3, H4四个霍尔元件产生电磁感应,从而改变
P1-P4的电压输出状态。
根据“霍尔效应”在霍尔元件中的应用以电磁转换来实现人机交互。
有关“霍尔效应”和“霍尔元件”请参考/view/?fr=ala0_1
二.轨迹球内部结构及注意事项
轨迹球内部结构如下图示
图2
如上图示,轨迹球输出端口为push-poll。
三.接口结构图
图3
目前RK手机方案采用基于TCA6424扩展IO芯片实现轨迹球与RK2808的状态交互。
当TCA6424轨迹球的在up、down、left、right和enter五个方向上有动作则发送中断到
RK2808通知轨迹球有操作,之后RK2808通过I2C接口读取TCA6424端口状态寄存器
得到状态改变的端口号。
注意:轨迹球button键无需处理毛刺,但需要外界上拉电阻到Vcc,不能处于float状
态。
四.软件流程
Kernel/arch/arm/mach-rockchips/Rk28_devices.c中添加platform设备。
Kernel/arch/arm/mach-rockchips/rk28_devices.c注册platform。
Kernel/drivers/input/Kconfig文件添加下一级Kconfig文件路径。
Kernel/drivers/input/Makefile添加.o文件路径。
添加文件夹Kernel/drivers/input/mobile_jogball
添加源文件Kernel/drivers/input/mobile_jogball/jogball.c
Jogball.c宏定义说明
#define TWO_DIREC_SUPPORT//支持两个方向处理
#define JOGBALL_SCAN_INTVAL 40 //轨迹球动作扫描,单位ms
#define ROLLUP 103//上滚动键值
#define ROLLDOWN 108//下滚动键值
#define ROLLLEFT 105//左滚动键值
#define ROLLRIGHT 106//右滚动键值
#define ROLLENT 28 //垂直按下键值
#define JOG_UP_PORT Extend_GpioPort0_Pin1//轨迹球上滚动对应IO定义
#define JOG_DOWN_PORT Extend_GpioPort0_Pin2//轨迹球下滚动对应IO定义
#define JOG_LEFT_PORT Extend_GpioPort0_Pin4//轨迹球左滚动对应IO定义
#define JOG_RIGHT_PORT Extend_GpioPort0_Pin3//轨迹球右滚动对应IO定义
#define JOG_ENTER_PORT Extend_GpioPort0_Pin5//轨迹球垂直按下对应IO定义
轨迹球设备结构体说明
struct rock28_jogball {
struct rock28_keypad_platform_data *pdata;
struct hrtimer timer;//轨迹球状态扫描hrtimer句柄
struct input_dev *input_dev;//input设备指针
unsigned char jogball_codes[5];//轨迹球五个方向键值
unsigned char codes_bak[2];//前一次按键状态备份
unsigned long noop_cnt;//无操作计数
unsigned long debonce;//预留祛抖标志
volatile unsigned long inv_dir[4];//水平方向上四个方向操作计数
volatile unsigned long inv_ent;//垂直方向上操作计数
};
软件流程示意图如下图示:
文档整理人:刘洋
邮箱:liuy@
图4