em9280是英创公司即将推出的新型工控主板产品。与英创公司的其他主板产品一样,em9280带有32位通用数字io(以下简称gpio)。em9280的各位gpio的接口电平均为3.3v ttl电平,上电后均处于输入状态;各位gpio的方向均可独立可设置,以方便使用。em9280提供有标准的设备驱动程序api,应用程序可直接通过这些api函数来操作这些gpio,em9280的资料光盘上提供有gpio操作的c/c++和c#的范例程序。对gpio的操作的基本方法是打开gpio的设备驱动文件“pio1:”,然后通过调用deviceiocontrtol来对gpio进行设置或读取gpio管脚的输入状态。其具体的操作定义在bsp_drivers.h中:
#define gpio_ioctl_out_enable // 激活指定gpio的输出功能
#define gpio_ioctl_out_disable // 禁止指定gpio的输出功能
#define gpio_ioctl_out_set // gpio输出高电平
#define gpio_ioctl_out_clear // gpio输出低电平
#define gpio_ioctl_pin_state // 读取指定gpio的输入状态
尽管em9280的gpio可以按统一的api函数来操作,但由于各位gpio的实现机制的不同,其相应速度是有所区别的。em9280的gpio按相应速度分成低速和高速两类。具体分类如下表所示:
gpio管脚
类型
简要说明
gpio0 - gpio1
高速gpio
api函数执行时间大约10us
gpio2 - gpio5
低速gpio
api函数执行时间大约100us
gpio6 - gpio7
高速gpio
api函数执行时间大约10us
gpio8 - gpio9
低速gpio
api函数执行时间大约100us
gpio10 - gpio11
高速gpio
api函数执行时间大约10us
gpio12 - gpio19
低速gpio
api函数执行时间大约100us
gpio20 - gpio31
高速gpio
api函数执行时间大约10us
由于存在比较大的执行时间的差异,因此在执行读取gpio状态操作时,也要求指定需要具体读取的是哪几位gpio。指定的方法是把需要读取的gpio对应位置1,不需要读取的则为0,例如:
uint32 u32statebits = gpio0; // 指定需要读取的gpio,这里为gpio0
uint32 u32stateread;
if (!deviceiocontrol(hgpio, // file handle to the driver
gpio_ioctl_pin_state, // i/o control code
&u32statebits, // in buffer
sizeof(uint32), // in buffer size
&u32stateread, // out buffer
sizeof(uint32), // out buffer size
null, // pointer to number of bytes returned
null)) // ignored (=null)
{
// 出错处理……
}
// u32stateread包含读取的gpio状态
在大多数具体应用中,每次往往只需要读取一位gpio的状态,因此只指定所需的gpio即可,以保证api函数执行时间最快。对其他的gpio设置操作,只需要设置需操作的gpio位信息,没有返回参数。
为了提高管脚的利用率,em9280的高速gpio部分还复用了其他的接口功能,具体复用的情况如下表所示:
管脚
复用功能
简要说明
gpio0
cts2#
与com2口的cts#复用管脚
gpio1
rts2#
与com2口的rts#复用管脚
gpio2
低速gpio
gpio3
低速gpio
gpio4
低速gpio
gpio5
低速gpio
gpio6
pwm1
与pwm1复用管脚
gpio7
pwm2
与pwm2复用管脚
gpio8
低速gpio
gpio9
低速gpio
gpio10
rxd6
与com6口的rxd复用管脚
gpio11
txd6
与com6口的txd复用管脚
gpio12
低速gpio
gpio13
低速gpio
gpio14
低速gpio
gpio15
低速gpio
gpio16
低速gpio
gpio17
低速gpio
gpio18
低速gpio
gpio19
低速gpio
gpio20
pwm3
与pwm3复用管脚
gpio21
pwm4
与pwm4复用管脚
gpio22
i2c_sda
与i2c总线的sda复用管脚
gpio23
i2c_scl
与i2c总线的scl复用管脚
gpio24
irq1
与irq1复用管脚
gpio25
irq2
与irq2复用管脚
gpio26
irq3
与irq3复用管脚
gpio27
irq4
与irq4复用管脚
gpio28
spi_miso
与spi接口的数据串入miso复用管脚
gpio29
spi_mosi
与spi接口的数据串出mosi复用管脚
gpio30
spi_sclk
与spi接口的同步时钟sclk复用管脚
gpio31
spi_cs0n
与spi接口的片选控制cs0n复用管脚
从上表可见,对最常用的异步串口(uart)的功能,与gpio复用的不多,这样可最大限度的保证em9280的串口及gpio的可用性。对com2如果不需要硬件流控功能,gpio0 – gpio1都仍然可以作为标准gpio使用,而不会影响com2的正常使用。
关于CPU中断技术的理论剖析
2020蓝牙耳机十大名牌排行,高性价比你值得拥有
LED封装厂商穗晶光电披露2020年年度报告
华硕召回笔记本电池三千余
HPC、AI与云计算:当智能时代三叉戟在亚马逊云科技完美融合
英创信息技术EM9280的GPIO特色及应用简介
踏歌智行亮相创业邦100未来独角兽峰会
超声波测距传感器模块使用原理详解
终极光芒,真撼于新——三星Neo QLED 8K全球发布会新奢亮相!
吉方嵌入式解决方案推动医疗创新
美光发布176层3D NAND闪存
全球用户将在 2022 年升级体验鸿蒙系统
国芯思辰|国产铁电存储器PB85RS2MC可替代FM25V20A用于心电图机中
特朗普喊话:美国必须要赢得5G比赛,这是一场我们将赢得的比赛
深度剖析卷积操作的维度计算
倒闸要先断开储能开关的原因是什么
!!泰克TDS784C,TDS 784C销售/收购/维修.小
华为mate10即将发布,华为mate9价格降到冰点,要入手的朋友们赶紧了!
RFID手持终端打造机场行李全流程系统
百立丰携带两大品牌参展并获得最佳合作奖