注册名:

密码:

个人注册

企业注册

商务申请

商务管理平台

企业管理平台

个人管理平台

我的工控博客

中国工控网www.chinakong.com

首页 | 新闻中心 | 工控论坛 | 经验视点 | 工控商务 | 电气手册 | 工控博客 | 招聘求职 | 网上调查 | 企业中心 | 供求信息 | 资料中心 | 工控书店

所在位置:工控论坛 -- 工控机论坛 -- 工控机论坛(非专题) -- 结构与配置

中国工控网搜索:

 登陆:密码:  注册  密码

搜索:

工控机论坛(非专题)分类  

全部论题

结构与配置

数据 I/O

编程与维护

应用方案

发表人:emtronix 发表时间:2010/12/12 9:18:00  

 

 本栏论题: 工控主板EM9360的GPIO的各种使用方法  [2549]

    英创公司的ARM9工控主板产品 EM9360是一款预装WinCE操作系统,以多种通讯接口、支持各种扩展为其技术特色。EM9360的板载的3路以太网接口、6路串口以及1路CAN接口,均带有标准的WinCE驱动程序,支持应用程序通过WinCE相应的API函数来操作各路网络接口。此外EM9360还与英创公司其他ARM9主板一样,带有精简ISA扩展总线以及12位通用GPIO,精简ISA总线的基本使用方法可参考英创网站的相关信息,而本文则主要介绍EM9360主板中12位GPIO的各种使用方法。
   
    EM9360的12位通用数字IO的各种使用方法列表如下:
   
   
   
    数字IO
   
    高位地址
   
    时间同步
   
    外部中断
   
    RS485
   
    矩阵键盘
   
   
    GPIO0
   
   
   
    PPS_IN#
   
   
   
   
   
   
   
   
    GPIO1
   
   
   
    PPS_OUT#
   
   
   
   
   
   
   
   
    GPIO2
   
   
   
   
   
    IRQ2
   
   
   
   
   
   
    GPIO3
   
   
   
   
   
    IRQ3
   
   
   
   
   
   
    GPIO4
   
    ISA_SA5
   
   
   
   
   
   
   
    4×4
   
    矩阵键盘
   
   
   
   
    GPIO5
   
    ISA_SA6
   
   
   
   
   
   
   
   
    GPIO6
   
    ISA_SA7
   
   
   
   
   
    COM2_RST#
   
   
    GPIO7
   
    ISA_SA8
   
   
   
   
   
    COM3_RST#
   
   
    GPIO8
   
    ISA_SA9
   
   
   
   
   
    COM4_RST#
   
   
    GPIO9
   
    ISA_SA10
   
   
   
   
   
    COM5_RST#
   
   
    GPIO10
   
    ISA_SA11
   
   
   
   
   
    COM6_RST#
   
   
    GPIO11
   
    ISA_SA12
   
   
   
   
   
    COM7_RST#
   
   
   
    通用GPIO
   
    EM9360上电后的各位IO均处于数字输入状态,通过相应的API函数(定义在em9360_isa_dio.h文件中)这12位GPIO可独立设置为输入或输出,输出电平也可独立设置。
   
    精简ISA总线的高位地址线
   
    基本的精简ISA总线只包含低5为地址总线SA0 – SA4,对大多数IO类型的扩展,5位地址线已足够使用。为了支持存储器类型的扩展,EM9360提供对高位地址总线的支持,其中的SA5 – SA12与GPIO4 – GPIO11复用管脚。为了激活高位地址总线,应用程序需在程序初始化阶段,通用调用API函数
   
    int ISA_ReadUchar( int nSeg, UINT nOffset, UCHAR* pRdValue );
   
    进行一次“哑读”即可。具体需要激活的高位地址还可通过偏移量nOffset的输入值来选择,但至少需要激活SA5和SA6这2位地址总线。举例说明如下:
   
    1.激活SA5和SA6,而其他的还是保持为GPIO,则nOffset = 0x007F;
   
    2.激活SA5 – SA7,而其他的还是保持为GPIO,则nOffset = 0x00FF;
   
    3.激活SA5 – SA12,最大访问8KB空间,则nOffset = 0x1FFF;
   
    在使用高位地址扩展时,需要注意以下事宜:
   
    ·精简ISA总线有2个片选输出,其中CS1#只支持最大1KB的访问空间,而CS0#则可支持最大8KB的访问空间,所以通常用CS0#作为存储器单元的片选控制。
   
    ·若客户应用还需要访问更大空间,EM9360还可引出SA13 – SA15信号,使CS0#的访问空间达到64KB。
   
    精简ISA总线扩展的存储器单元一般只能用作数据存储,不能作为程序运行空间。
   
    ·激活的地址线应当是由小至大,连续地址空间。
   
    时间同步功能
   
    EM9360支持时间同步功能,基本的使用方法是应用程序打开“PPS1:”设备驱动程序,此时GPIO0将自动转为同步脉冲输入PPS_IN#(低电平有效)。PPS驱动程序被PPS_IN#脉冲触发后,将立即发送时间同步事件,供上层应用线程做必要处理。根据用户设置,PPS驱动程序还可在GPIO1上输出同步脉冲PPS_OUT#(同样是低电平有效),以及自动对当前时间进行整秒调整。
   
    更多的外部中断
   
    基本的精简ISA总线只提供1条外部硬件中断输入IRQ1,上升沿有效。若客户应用需要扩展更多的通讯接口,如增加第二路CAN接口、增加8路串口等等,这时仅仅一条外部中断就不够了,需要更多的外部中断支持,GPIO2和GPIO3则可用于外部中断输入。事实上EM9360的驱动已可支持类似这样的扩展,感兴趣的客户可与英创公司联系了解进一步的使用方法。
   
    作为RS485接口的RST#
   
    GPIO6 – GPIO11还可分别作为COM2 – COM7的RTS#控制信号,低电平有效。对RS485接口,若需要使用RTS方向控制方案,则在设置串口参数时,需要特别地把RTS控制段设置为RTS_CONTROL_TOGGLE,相关的代码如下所示:
   
    DCB dcb; // 定义参数控制块
   
    GetCommState( m_hSer, &dcb ); // 读取当前参数块
   
    dcb.fRtsControl = RTS_CONTROL_TOGGLE; // 设置RTS方向控制
   
    SetCommState(m_hSer, &dcb); // 重设串口参数
   
    上述代码中m_hSer为打开串口文件“COMx:”的文件句柄。
   
    在使用RS485通讯时,一般把RTS#有效(低电平)作为发送状态,RTS#无效(高电平)为接收状态。从发送状态切换回接收状态,作为方向控制信号的RTS#,可能会有最长1ms的延时,因此为了防止系统出现收发状态冲突的情况,RS485的波特率最好不超过9600bps。
   
    矩阵键盘
   
    EM9360支持由GPIO驱动的4×4矩阵键盘,具体配置如下:
   
   
   
    虚拟键码
   
    GPIO5 - KIN0
   
    GPIO7 - KIN1
   
    GPIO8 - KIN2
   
    GPIO10 - KIN3
   
   
    GPIO4 - KOUT0
   
    VK_ESCAPE
   
    VK_0
   
    VK_DECIMAL
   
    VK_BACK
   
   
    GPIO6 - KOUT1
   
    VK_CAPITAL
   
    VK_1
   
    VK_2
   
    VK_3
   
   
    GPIO8 - KOUT2
   
    VK_SPACE
   
    VK_4
   
    VK_5
   
    VK_6
   
   
    GPIO10 - KOUT3
   
    VK_RETURN
   
    VK_7
   
    VK_8
   
    VK_9
   
   
   
    EM9360已内置了基于GPIO的矩阵键盘驱动程序,加载方法是在应用程序中调用:
   
    HANDLE hDevice = NULL;
   
    hDevice = ActivateDevice( TEXT('Drivers\\gpio_keypad'), 0);
   
    注意在应用程序退出时,应卸载该驱动程序,以避免矩阵键盘驱动程序被反复加载。
   
    我们会根据客户的应用需求,对EM9360的GPIO赋予更多的功能,但无论GPIO有多少功能,在面向具体应用时,每位GPIO只能选择一种应用。对此,客户在进行GPIO功能配置时需特别小心,避免在一个管脚选择多种功能,造成运行结果异常,长期处于这种异常状态还可能导致主板硬件损坏。
   
    已购买EM9360的客户,若需要使用本文所介绍的新增功能,如RS485 RTS#方向控制等,一般需要更新内核和SDK。可以把主板寄回由我们免费更新内核,并从英创公司网站上下载新的SDK,就可使用本文所介绍的全部功能了。
   
   
   
   
   

如果要回复本栏论题,请首先中国工控网www.chinakong.com

·如果你已经是中国工控网www.chinakong.com成员,请直接登录。

·如果你还不是中国工控网www.chinakong.com成员,请首先注册,注册为免费!

注册名:

密  码:

           注册中国工控网www.chinakong.com
           忘记密码

关闭该窗口

关于我们     免责声明     服务项目     广告联系     友情链接     联系方式     意见反馈     设为首页     加入收藏

 ©2023-2025 中国工控网(www.chinakong.com) 版权所有 豫ICP备17046657号

管理员信箱:chinakong98@163.com  服务热线:13525974529

洛阳博德工控自动化技术有限公司

中国    洛阳