英创信息技术工控主板EM9360的GPIO介绍

英创公司的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
4x4矩阵键盘
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,就可使用本文所介绍的全部功能了。

新型全项目土壤肥料养分检测仪的特点
电容器基础知识
两家公司与瑞萨电子RX MCU的故事
LED开关电源的接线方法和主要作用
牛津大学计算机系主任:关于人工智能立法,机遇和危害并存!
英创信息技术工控主板EM9360的GPIO介绍
摩拜的野心泄露,将以大数据称霸物联
京东居家联合TUV莱茵制定护眼灯具品质认证标准正式发布
区块链商品溯源是炒概念还是做平台?如何实现区块链溯源与商品共生?
为什么Open RAN要采用分离式架构?
Mini LED两大终端应用领域——直显和背光,谁走得更快、更远?
如何制作“完美”的数控恒压恒流电源
高通的5nm工艺产品为什么不公布用的是哪一家
Fluke推出5080A多功能多产品校准器
区块链转账与银行转账有什么差异
日韩双方磋商未谈妥 下一次磋商预计在11月10日前进行
薄膜在线检测仪的检测方法是怎样的
友达发布全球最大Full HD OLED电视面板
我国已确认引进“彩虹”系列无人机生产线
恩智浦CEO大侃与飞思卡尔的合并“婚事”