0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

英创信息技术在英创Linux主板上用GPIO实现矩阵键盘简介

英创信息技术 来源:英创信息技术 作者:英创信息技术 2020-02-12 10:34 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

英创公司的Linux主板对于矩阵键盘的支持有多种方案可以实现,我们在以前推出过使用i2c扩展的方案,具体情况可以参考ETA202模块的资料:《ETA202 I2C键盘扩展模块使用手册》,这种方案的好处是只需要使用I2C总线的两条信号线SCL和SDA,可以节约主板上的GPIO资源。ESMARC系列主板都拥有32位GPIO资源,为了更好利用硬件资源,英创公司推出了GPIO接矩阵键盘的方案,在IO资源满足需求的情况下,可以使用这套方案,优点是可以节约硬件扩展的成本,并且软件上使用Linux标准的input设备接口就可以操作,不需要额外做任何工作。

GPIO支持矩阵键盘是通过IO中断来实现的,当检测到有按键按下,就会触发中断,扫描键盘来判断具体的按键动作。支持的矩阵键盘最大范围为4×5,我们以英创公司的矩阵键盘模块为例:

使用的管脚为GPIO16~GPIO24,与ESMARC评估底板连接测试,连接方式如下:

具体的信号排列如下(CN18):

信号及说明 PIN# 信号及说明
GPIO16 -> 用作 ROW0 1 2 GPIO17 -> 用作 COL0
GPIO18 -> 用作 ROW1 3 4 GPIO19 -> 用作 COL1
GPIO20 -> 用作 ROW2 5 6 GPIO21 -> 用作 COL2
GPIO22 -> 用作 ROW3 7 8 GPIO23 -> 用作 COL3
GPIO24 -> 用作 ROW4 9 10 GPIO25
GPIO26 11 12 GPIO27
GPIO28 13 14 GPIO29
GPIO30 15 16 GPIO31
+5V 17 18 +5V
GND 19 20 GND

英创公司已经将驱动文件制作成内核驱动模块的形式放入文件系统中了,驱动名称为matrix_keypad.ko,用户要使用该功能,只需要加载驱动模块即可。驱动模块放在/lib/modules//下面,例如使用ESM335x主板,因为ESM335x的内核版本为4.1.6,输入命令为:insmode /lib/modules/4.1.6/matrix_keypad.ko,注意如果使用的主板为ESM7000,ESM6802,ESM6800H或者ESM6800V系列的板卡,可以使用命令:modprobe matrix_keypad,不需要代入路径。

为了避免占用不必要的硬件资源,根据实际的需求,在加载驱动模块的时候可以代入参数指定横列的数值,参数col(1-4)代表列数,row(1-5)代表横排数,如果不代入参数,默认为支持col=4,row=5的矩阵键盘。以ESM335x为例,加载支持3×3大小矩阵键盘的命令为insmod /lib/modules/4.1.6/matrix_keypad.ko col=3 row=3,如下如所示:

加载驱动

当代入col和row的值小于最大值的时候,驱动占用的管脚资源是从COL0和ROW0开始的,例如上面设置的3×3大小,占用的管脚为COL0-COL2,ROW0-ROW2,对应的按键如下图所示:

3×3对应按键

驱动加载成功后,会在/dev/input目录下生成对应的event设备节点,系统根据当前的event设备数,会自动为生成设备节点增加序号。以ESM335x为例,生成的设备节点为/dev/input/even1,如下图:

设备节点

图中event0为ESM335x主板自带的触摸屏设备节点,所以加载驱动后矩阵键盘的设备节点就会自动命名为event2,通过这个设备节点,就可以通过程序读取按键的键值了。其中每一个按键都有一个对应的键值,英创公司使用的是标准的WINDOWS按键消息值,为方便客户评估,矩阵键盘的虚拟键码与英创矩阵键盘扩展模块(ETA201)完全对应,具体的虚拟键码如下所示:

COL0 COL1 COL2 COL3
ROW0 VK_ESCAPE/0x1B VK_0/0x60 VK_PERIOD/0xBE VK_BACK/0x08
ROW1 VK_ADD/0x6B VK_1/0x61 VK_2/0x62 VK_BACK/0x08
ROW2 VK_SUBTRACT/0x6D VK_4/0x64 VK_5/0x65 VK_BACK/0x08
ROW3 VK_MULTIPLY/0x6A VK_7/0x67 VK_8/0x68 VK_9/0x69
ROW4 VK_DIVIDE/0x6F VK_SPACE/0x20 VK_DECIMAL/0x6E VK_RETURN/0x0D

与虚拟键码对应的16进制值可在MSDN上找到:http://msdn.microsoft.com/zh-cn/library/ms927178(en-us).aspx>/u?。

软件上十分简单,在程序中先通过open函数打开矩阵键盘对应的设备节点,然后通过read函数就可以读取出信息,具体代码如下:

struct input_event input;
int fd, rd;
//打开设备节点
if ((fd = open ("/dev/input/event1", O_RDONLY)) == -1)
{
printf ("open failed! ");
return -1;
}
rd = read(fd, (void*)&input, sizeof(input));
if(rd <= 0)
printf ("rd: %d ", rd);

在上面的代码中可以看到,读取出来的是一个input_event结构体,这是Linux系统标准都文件定义的结构体,通过这个结构体可以获取到我们所需要的所有信息,下面就来介绍一下这个结构体:

/*
* The event structure itself
*/
structinput_event {
struct timeval time;
__u16type;
__u16code;
__s32value;
};

其中time的值为按键时间。type为事件类型,因为驱动支持的是矩阵键盘,所以这里的值总是为EV_KEY(0x01)。code为键值,具体的键值请参考上面的表格。value为按键事件的值,在事件类型为EV_KEY时,当按键按下时值为1,松开时值为0。

读取按键操作的完整代码如下:

intmain (int argc, char *argv[])
{
struct input_event input;
int fd, rd;
//打开设备节点
if ((fd = open ("/dev/input/event1", O_RDONLY)) == -1)
{
printf ("open failed! ");
return -1;
}
printf("Press any key. ");
while(1)
{
memset((void*)&input, 0, sizeof(input));
//读取input设备信息
rd = read(fd, (void*)&input, sizeof(input));
if(rd <= 0)
printf ("rd: %d ", rd);
//判断按键动作
if(input.type == 1)
{
switch(input.value)
{
case 0:
printf("Key release ");
break;
case 1:
printf("Key press ");
break;
case 2:
printf("Key hold ");
break;
default:
printf("Undifined value ");
}
//打印键值
printf("Code: 0x%x ", input.code);
}
}
return 0;
}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • WINDOWS
    +关注

    关注

    4

    文章

    3710

    浏览量

    94445
  • 嵌入式主板
    +关注

    关注

    7

    文章

    6107

    浏览量

    37204
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    泊沧数据与码科技达成商业合作,以国产数据底座加速AI硬件自主创新

    泊沧数据与国内AI计算头部企业——广州信息科技有限公司(简称:码科技),正式签署商业合同。码科技通过国基础资源库调用数十万个元器件
    的头像 发表于 05-09 17:33 1402次阅读
    泊沧数据与<b class='flag-5'>英</b>码科技达成商业合作,以国产数据底座加速AI硬件自主创新

    创汇智出席武院智能线控底盘研究所年度规划发布暨专利联盟成立大会

    近日,“聚势谋远·线控未来”武院智能线控底盘研究所年度规划发布暨专利联盟成立大会在武汉隆重举行。创汇智代表周道林出席会议,与政、产、学、研、投、服六方嘉宾齐聚一堂,共商智能线控底盘产业发展新格局。
    的头像 发表于 04-07 10:38 437次阅读

    迪芯微荣获星宇股份2025年度技术协同奖

    2026年3月20日,星宇股份2026年供应商大会在星宇中心报告厅隆重召开,本次大会以“凝心聚力,智共赢”为主题,汇集了来自全球近300家星宇供应商,迪芯微受邀出席,并荣获星宇股份“2025年度技术协同奖”,该奖项仅有
    的头像 发表于 03-27 17:25 847次阅读

    龙芯主板——信体系的智慧硬核基石

    信息技术飞速发展的当下,信体系的自主可控与创新升级已成为国家战略层面的关键任务。作为信产业发展的重要基础硬件支撑,国产工控主板的自主可
    的头像 发表于 03-11 10:44 304次阅读
    龙芯<b class='flag-5'>主板</b>——信<b class='flag-5'>创</b>体系的智慧硬核基石

    产业驶入快车道,国产工控主板成自主可控关键支撑

    当前,我国信产业规模大幅突破,信息技术应用创新产业迎来高速发展期。发展信,早已超越单纯的技术升级范畴,成为保障国家信息安全、推动经济高质
    的头像 发表于 03-04 14:18 250次阅读
    信<b class='flag-5'>创</b>产业驶入快车道,国产工控<b class='flag-5'>主板</b>成自主可控关键支撑

    国产化引领丨康仕携手龙芯打造信国产化工控全场景解决方案

    基于龙芯平台的国产化工控产品矩阵已全面成型,全系列符合信国产化标准。 围绕龙芯2K3000与龙芯3B6000M处理器,康仕完成覆盖边缘计算、智能制造、智能交通、移动加固计算等领域的全场景信
    的头像 发表于 02-24 16:11 1599次阅读
    信<b class='flag-5'>创</b>国产化引领丨<b class='flag-5'>英</b>康仕携手龙芯打造信<b class='flag-5'>创</b>国产化工控全场景解决方案

    国产金融主板:赋能智慧金融,驱动信产业升级

    随着信息技术的飞速迭代,信产业已在全球范围内崛起,成为拉动经济增长、激活创新动能的核心力量。产业的关键布局中,智慧金融建设是重中之重,而国产金融
    的头像 发表于 12-31 09:03 293次阅读
    国产金融<b class='flag-5'>主板</b>:赋能智慧金融,驱动信<b class='flag-5'>创</b>产业升级

    国产芯筑基,飞腾主板赋能信未来

    信息技术自主可控成为国家战略的今天,信产业正从“政策驱动”迈向“市场驱动”的高质量发展新阶段。作为信产业链的核心硬件基石,主板的国产化
    的头像 发表于 12-30 09:49 460次阅读
    国产芯筑基,飞腾<b class='flag-5'>主板</b>赋能信<b class='flag-5'>创</b>未来

    OBOO鸥柏|信触摸一体机兆芯115寸Linux国产系统技术智造

    BOO鸥柏信触摸一体机:兆芯115寸Linux智造新标杆信息技术应用创新浪潮中,【OBOO鸥柏】推出的信触摸一体机以其卓越性能和智能化
    的头像 发表于 11-16 15:44 3086次阅读
    OBOO鸥柏|信<b class='flag-5'>创</b>触摸一体机兆芯115寸<b class='flag-5'>Linux</b>国产系统<b class='flag-5'>技术</b>智造

    新时代的硬核基石:龙芯工控主板助力信产业新基建

    在数字技术重塑产业格局的今天,信产业已成为保障国家信息技术安全的核心战略。作为工业自动化系统的大脑,工控主板的自主可控程度直接决定信创新基建的稳固性。
    的头像 发表于 11-05 13:54 438次阅读

    智慧新核心,龙芯主板助力信体系再升级

    信息技术飞速发展的当下,信体系的自主可控与创新升级已成为国家战略层面的关键任务。作为信产业发展的重要基础硬件支撑,国产工控主板正发挥着
    的头像 发表于 08-11 09:14 859次阅读

    飞腾主板为信产业发展提高硬实力

    信息技术飞速发展的当下,信产业已成为我国实现科技自立自强、保障国家信息安全的关键领域。信
    的头像 发表于 07-22 18:20 882次阅读

    浪潮澎湃,国产主板迎来黄金时代!

    2025年7月,表示必须在2027年底前完成信100%替代,覆盖基础硬件、基础软件等核心领域。信息技术应用创新浪潮席卷下,国产主板作为计算机系统的骨架,正从幕后走向台前。政策加持、
    的头像 发表于 07-21 14:00 649次阅读

    中星微技术斩获2025金牛科企业奖

    6月14日,由中国证券报主办的2025科金牛奖颁奖典礼在上海市举行,2025科金牛奖获奖名单现场揭晓。其中中星微技术获得新一代信息技术金牛科
    的头像 发表于 06-16 14:16 1342次阅读

    科普|信是什么?一文读懂“信息技术应用创新”战略

    什么是信?信,即“信息技术应用创新”,是国家推动IT系统自主可控、安全可控的重要战略工程。它不仅是技术层面的创新,更承载着保障国家网络安全、推动产业升级和
    的头像 发表于 06-13 10:06 9887次阅读
    科普|信<b class='flag-5'>创</b>是什么?一文读懂“<b class='flag-5'>信息技术</b>应用创新”战略