瑞芯微Rockchip开发者社区
登录
直播中
YYXIAO
8年用户
1163经验值
擅长:接口/总线/驱动
私信
关注
[经验]
对基于RK3308开发板的PS2 Joystick摇杆模块进行调试
传感器模块
RK3308
最近本人又调试了一款比较有趣的传感器模块--PS2 Joys
ti
ck摇杆模块。下面将本人的测试方法分享于大家,下文仅个人见解,若有不足之处,望指出,不胜感激。
一、模块介绍
PS2双轴游戏摇杆模块采用了PS2游戏手柄上优质金属按键摇杆电位器,模块集成
电源
指示灯,可以显示工作状态;坐标标识符清晰简明、定位准确。
我们先来看下它的工作原理吧,那样我们也知道它里面到底是怎么回事,这对我们对它的使用很有帮助,下面是模块的功能示意图:
由上图可见的,模块设有二路模拟输出和一路数字输出接口,输出值分别对应(X,Y)双轴偏移量,其类型为模拟量;另一数字表示用户是否在Z轴按下,其类型为数字开关量。通过控制器编程,传感器扩展板插接,完成具有创意性的互动作品或者游戏。
二、代码简述
按照惯例,在了解模块后,先在kernel/arch/arm64/boot/dts/rockchip/rk3308-firefly.dtsi设备树中添加设备的节点信息。
代码中使用了ADC通道0与ADC通道2,还有一个GPIO口。所使用的ADC时钟为saradc。下面将进行驱动代码的编写:首先在kernel/drivers/adc/下创建一个对应的文件夹,加入Kconfig、Makefile、ps2.c其中。
在此就不对驱动的框架进行赘述,在初始化函数中将驱动申请为杂项设备,还有相关的设备信息。下面将对probe函数进行解析:
其中需要一提的是iio_channel_get()函数,功能作用为:获取 iio 通道描述。参数为:设备描述指针、所用通道描述指针。of_get_named_gpio_flags()功能为:获取GPIO信息。gpio_is_valid()功能为:判断GPIO是否合法。下面为ps2_read()函数:
在read()函数中调用的ps2_get_value()是获取所需值的函数。具体如下:
其中iio_read_channel_raw()函数的功能为:读取 chan 通道 AD 采集的原始数据。参数为:通道指针、数据存放指针。此处的STANDARD_VOL与CONVERSION_NUM分别表示标准电压、转换位数。关于ADC的使用方法,可以参照firefly官方wikADC使用
gpio_get_value()函数的功能为:获取GPIO的IO值。代码写到此处,驱动算是基本已经完成,对其进行编译,生成固件,烧入
开发板
。以下为应用层测试程序的编写:
测试程序较为简单,访问读取/dev/PS2数据即可。再使用strtok()函数分割data,得到每个轴的数据。完成之后,使用指定的交叉编译链进行编译,将可执行文件传输至开发板中。
三、效果展示
一切准备工作处理完成之后,即可执行程序,查看代码效果!!
(此文仅个人见解,若有不足之处,望指出,不胜感激)
原作者:
Demon
更多回帖
rotate(-90deg);
回复
相关帖子
传感器模块
RK3308
firefly
RK3308
开发板
ROC-
RK3308
-CC四核64位AIOT主板规格
4985
如何
调试
RK3308
ADC ?
1209
FPGA DIY
开发板
的
PS2
键盘控制
4379
Banana Pi BPI-P
2
Pro 开源硬件
开发板
,Rockchip
RK3308
开发板
启动及设置
719
微雪电子
RK3308
主板CCBuildroot
开发
简介
3244
PS2
游戏操纵杆
摇杆
模块
1881
RK3308
蓝牙怎么使用?
1110
一文详解
RK3308
开发板
Qt
开发
的流程
4262
微雪电子
RK3308
主板CCMaskRom模式简介
1676
微雪电子
RK3308
主板CC串口
调试
介绍
2398
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分