瑞芯微Rockchip开发者社区
登录
直播中
YYXIAO
9年用户
1235经验值
擅长:接口/总线/驱动
私信
关注
[经验]
对基于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主板规格
6302
如何
调试
RK3308
ADC ?
1515
FPGA DIY
开发板
的
PS2
键盘控制
5014
PS2
游戏操纵杆
摇杆
模块
2153
微雪电子
RK3308
主板CCBuildroot
开发
简介
4112
Banana Pi BPI-P
2
Pro 开源硬件
开发板
,Rockchip
RK3308
开发板
启动及设置
1587
RK3308
蓝牙怎么使用?
1498
一文详解
RK3308
开发板
Qt
开发
的流程
4915
微雪电子
RK3308
主板CCMaskRom模式简介
2145
ElfBoard技术贴|如何在【
RK
3588】ELF
2
开发板
进行
GDB
调试
4925
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分