英创信息技术EM9560工控主板专用数字IO的使用介绍

描述

EM9560工控主板是以EM9460工控主板为基础,并针对客户应用的需求,增加了更多通用数字IO,于2012年初推出的一款低成本嵌入式主板产品。该产品保持了Linux操作系统作为客户应用程序的软件平台,其基本接口功能API函数上也与前期产品EM9460完全兼容,从而保证了客户的应用程序可不加修改的直接运行于EM9560。

为了充分利用主板宝贵的管脚资源,我们为EM9560的精简ISA总线配置了更加灵活的使用方法,其中一种典型应用是保持精简ISA总线的LCD接口,而精简ISA总线的高位地址和扩展控制线共6位则作为数字输出DOUT0–DOUT5,其具体的对应关系如下:

精简ISA总线 专用数字输出 简要说明
ISA_SA3 DOUT0 上电初始状态为高电平
ISA_SA4 DOUT1 上电初始状态为高电平
ISA_CS0n DOUT2 上电初始状态为高电平
ISA_CS1n DOUT3 上电初始状态为高电平
ISA_WEn DOUT4 上电初始状态为高电平
ISA_RDn DOUT5 上电初始状态为高电平

在上述方案中,由于不再使用精简ISA总线扩展功能,这时系统的IO资源就只有GPIO0-GPIO15、GPIOX0–GPIOX29、以及DOUT0–DOUT5。如果IO资源仍然不够,可通过在精简ISA总线的数据总线上挂接一片简单的总线驱动芯片(如74HCT245),就可获得额外的8路专用的数字输入DIN0–DIN7。具体的电路如下:

Linux

上图中,SD0–SD7为精简ISA的数据总线,DIN0–DIN7为外部需要监测的数字输入,而DIN_EN#信号则由ISA_SA2充当。当应用程序进行相应的读操作时,ISA_SA2(即DIN_EN#)将输出低电平脉冲把DIN0–DIN7导入EM9560。

应用程序通过打开“/dev/em9x60_isa”设备驱动文件,通过标准的读写操作就可实现对专用数字IO的读写。具体代码如下:

打开设备驱动程序文件
        int fd;
        fd = open('/dev/em9x60_isa', O_RDWR); // 打开ISA驱动程序

设置数字输出DOUT
        unsigned int uDout = 0x3F; // 设置DOUT全高,低6位有效
        rc = write(fd, &uDout, sizeof(unsigned int));
        uDout = 0; // 设置DOUT全低,低6位有效
        rc = write(fd, &uDout, sizeof(unsigned int));

读取数字输入DIN的当前状态
        unsigned int uDin; // 注意,读取的数据只有低8位有效
        rc = read(fd, &uDin, sizeof(unsigned int));

在上述的数据访问中,read / write函数的缓冲区长度必须是unsigned int类型的,否则函数将返回出错。

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分