我是靠谱客的博主 虚幻鸡,最近开发中收集的这篇文章主要介绍触觉智能分享|SSD20X红外接口调试参考,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

红外线(Infrared Radiation),简称IR,是一种无线通讯方式,可以进行无线数据的传输。SSD20X拥有1路IR,支持NEC编码。

01.硬件设计

PM_IR为主控IR信号输入端:

图片

02.确认帧头

NEC编码协议包含一个9ms+4.5ms的帧头,工作时根据帧头筛选需要接收的数据。使用示波器对PM_IR引脚进行测量(按下遥控器的任意按键),可以确认帧头,同时可以验证IR电路是否能正常接收IR信号:

图片

图片

从第一个下降沿开始计算,根据以上波形能够知道,前9ms一直为低电平(0x00),后4.5ms为高电平(0xFF),因此可以确认帧头为0x00+0xFF。

03.加载驱动

# cd kernel
# ARCH=arm make menuconfig
Device Drivers
--->
[*] SStar SoC platform drivers
--->
<*>
SStar IR driver

 同时需要修改驱动,配置正确的帧头:

# vi kernel/drivers/sstar/ir/include/IR_MSTAR_DTV.h
#define IR_HEADER_CODE0
0x00
// 9ms
#define IR_HEADER_CODE1
0xFF
// 4.5ms

04.按键匹配

驱动根据kernel/drivers/sstar/ir/include/IR_MSTAR_DTV.h中的mstar_tv[]的配置进行上报按键键值。

mstar_tv[]为一个二维数组,第一个值为currKey,第二个值为上报的键值code,即当驱动接收到IR数据为currKey时,就会上报键值code。

图片

使用ir.c进行测试,确认每个按键的currkey,以此绑定code:

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
int main(int argc, char **argv)
{
struct input_event event;
char name[64];
int fd;
int rc;
if ( argc != 2){
printf("usage: ./ir_test 0n");
return 0;
}
sprintf(name, "/dev/input/event%d", atoi(argv[1]));
while(1)
{
if ((fd = open(name, O_RDWR, 0)) >= 0)
{
printf("%s: open, fd = %dn", name, fd);
while ((rc = read(fd, &event, sizeof(event))) > 0)
{
if (event.type == EV_KEY)
{
switch (event.code)
{
case KEY_0 :
printf("KEY_0 %sn", (event.value)?"Pressed":"Released");
break;
case KEY_1 :
printf("KEY_1 %sn", (event.value)?"Pressed":"Released");
break;
default:
break;
}
}
}
close(fd);
}else{
return -1;
}
}
return 0;
}
# arm-linux-gnueabihf-gcc ir.c -o ir_tes

 把ir_test拷贝到开发板上运行,并按下遥控器上的按键,观察程序打印的currKey:

#./ir_test 0

图片

可以看到,当我按下遥控器上的”1”按键时,显示currKey=0x45,因此修改mstar_tv[],将0x45和KEY_1绑定:

图片

同样地,继续按键遥控器上的其他按键,在mstar_tv[]中将它们进行绑定,这样,在ir.c  中,我们就能根据event.code来判断是哪个按键按下了。

 

最后

以上就是虚幻鸡为你收集整理的触觉智能分享|SSD20X红外接口调试参考的全部内容,希望文章能够帮你解决触觉智能分享|SSD20X红外接口调试参考所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(33)

评论列表共有 0 条评论

立即
投稿
返回
顶部