厦门莫格电气自动化有限公司销售
ABB INSEM11、NFTP01
欢迎来电咨询!
INSEM11、NFTP01
INSEM11、NFTP01
INSEM11、NFTP01
您迈开询价的一小步,我还您成功的一大步。
1).简介
GPIO应用是嵌入式设备最基本的应用之一, 本文就基于EmbeddedLinux系统演示开发GPIO中断以及输出相关的基本应用示例.
本文所采用的硬件平台来自与Toradex发布的基于NXP iMX7 SoC的Colibri iMX7 ARM计算机模块配合Colibri Eva Board.
2).准备
a).ToradexColibri iMX7S (基于NXP iMX7SSoC)计算机模块配合Colibri Eva Board开发载板.
b).Embedded Linux使用Toradex官方发布的Linux release V2.6.1, 更新方法请见这里.
3).软硬件安装
a). 本文所实现的GPIO应用原理为使用两个GPIO接口, 一个作为按键输入使用, 另外一个作为输出驱动载板上面的LED. 每次按键后,会将LED状态翻转, 也就是点亮和熄灭交替.
b). 硬件连接,将Colibri Eva载板X3连接器C19和X21连接器SW6连接,作为按键输入端; 将X3连接器A19和X21连接器LED1连接, 用于驱动LED1.
c). 在Ubuntu14.04 开发主机配置开发环境, 这里使用Eclipse作为开发IDE, 具体配置可以参考这里的Linux开发上手指南.
4).GPIO应用示例
a).运行Eclipse,创建一个新项目,命名 ”gpiointtest”, 配置为 ”EmptyProject” 和 “CrossGCC”.
b).在 ”gpiointtest”项目下首先新建GPIO操作相关的header和source文件
./Header 文件 ”gpioconfig.h” 代码如下,主要定义一些全局环境变量和声明GPIO基本的操作函数
https:///simonqin09/gpiointtest/blob/master/gpioconfig.h
./source文件“gpioconfig.c”代码如下,主要是GPIO基本操作函数
https:///simonqin09/gpiointtest/blob/master/gpioconfig.c
c).主函数文件为 “gpiointtest.c”, 源代码如下,其主要实现的功能要点下面会逐一列出.
https:///simonqin09/gpiointtest/blob/master/gpiointtest.c
./参考Colibri iMX7数据手册以及这里的GPIO号码定义规则, 本文所使用的C19和A19引脚对应的GPIO为GPIO-53和GPIO-52, 因此主程序在最开始就做了定义,对应变量gpio2和gpio1.
./变量定义完成后第二部分就是GPIO的export和配置, 将gpio1配置为输出, gpio2 配置为中断输入,上升沿触发.
./这里我们采用 ”poll”函数作为中断事件处理函数,使用的也是其标准用法,这里就不赘述.
./这里详细说明下在触发事件后的处理,也就是 ” if(fdset[1].revents & POLLPRI)” 里面的内容.首先通过 “lseek”函数将文件还原以便处理下一次中断触发; 然后通过 ”cnt”变量的判定排除程序运行第一次默认触发的中断; 最后在有效中断触发情况下,再通过 “usleep”和 gpio2当前value的读取来排除机械按键抖动, 这样在每次确定按键的前提下,将gpio1的输出做反转,对应也就是LED亮和灭.
d).编译项目,然后将可执行文件scp下载到colibri imx7执行, 执行情况如下.在测试中也可以发现当出现按键抖动的时候, 按键次数统计输出会跳过抖动的那次计数, 同样LED控制也不会被干扰.

e).当在所需要同时控制的GPIO数量比较多的情况下, 采用 ”epoll”函数效率会高于 “poll”,因此这里也将基于“epoll”的主程序代码罗列如下,其思路和上面是一致的,就不赘述.
140DDI35300
140DDI84100
140DRA84000
140NOE77101
140CPU53414B
6MD1010-0BA00
1203-CN1
1747-L541C
1794-OM8
SDCS-FEX-4
MDS-C1-CV-110
MDS-C1-SP-185
MDS-C1-SP-300
MDS-C1-V2-2020
1769-IQ32
FBM01
FBM41
FBM42
A20B-2100-0800/08D
140CPS22400
DLS6100
FR-Z123-0.75K
C15TR0LA0100
E2CA-AN4E
E2CA-X5A 3M
TS2651N181E78
IC693CPU364
1756-PA72
FBM01
FBM224
FBM41
FBM42
FBM01
FBM41
FBM42
FBM01
FBM41
FBM42
1756-A17
1756-CP3
1756-EN2F
1756-ENBT
1756-IF16
1756-IM16I
1756-IR6I
1756-L62
1756-N2
1756-OF8
1756-OW16I
1756-PA72
1756-TBCH
1756-TBNH
1783-MS10T
1783-MX08T
1783-SFP100FX
1784-CF64
6EP13342BA01
9324-RLD700NXENE
FBM01
FBM41
FBM42
1762-L40BWA
3HAC17333-1M33
3HAC17335-1M35
MDV60A-0110-5A3-4-00
JAMSC-B2602V
FM171B
140DAI74000
140DAO84210
1746-A7
1746-IB16
1746-OBP16
1746-P2
1747-L542
1747-SDN
1770-KFD
1794-ADN
1794-TB3
140DAI75300
1746-P4
EIA310A-EAS4A-22DC/NFI
1203-CN1
1746-IM16
1746-NI16I
1746-NI8
1746-OW16
1746-P4
1747-ASB
1747-L541C
1747-L542
1747-SN
1756-IB32
1794-OM8
490NRP95400
A06B-6089-H102
DSDO 110
TC520
48990001-NK
57120001-FC/DSTA 120 24VDC
57160001-ABD/DSTD108
57160001-TZ/DSTA 110A 24VDC
57160001-UH/DSTD 150A 24VDC
57310001-KT/DSTC 176
DSAO 120+DSTK 169KIT
DSDI 110A
150-C480NCR
AB 150-CS2GX
1762-IF4
1762-OF4
UDC3200
231-1BD53
6GK7443-5FX02-0XEO
2711-T14C8
IC660BBA026
IC660BBD022
1756-L55M12
3008
3503
3625
4119A
4329
4351B
8312
9563-810
9662-810
9761-210
9853-610
3503E
INNIS01
INNIS21
NTCL01
MERLIN M75
CA3SK11JD
1756-A13
1756-L62
1769-ECR
1769-L35E
1769-PA4/A
MVI69-PDPMV1
SST-PFB-CLX
SST-SR4-CLX
140CHS11000
IC693ACC302B
IC694MDL660
IC694MDL754
IC695ALG616
IC695ALG708
IC695ETM001
IC695NIU001
IC695PSD140
5086-7413
1305-BA09
1336F-BRF50-AA-EN
140CRA93200
140CRP93200
1326AB-B730E-M2L
1786-RPA
1756-CN2R
1756-OA8
1756-OV32E
2711P-T6C20D
C98043-A1601-L4-11
RKD514L-C
A652-01-903
IC200PWR102D
DIMA3-ES-16
207-352S
1785-L40B
IC200ALG240
IC200ALG264
IC200ALG320
IC200CHS022
IC200CPU002
IC200MDL650
IC200MDL750
IC200PWR102
1756-ENBT
A06B-6079-H104
QUINT-PS-3*400-500AC
JUSP-NS600
1746-OW16
1747-L542
IC693MDL753F
2500MA13
2500MA14
DELL390微机FIX7.0
SP316
SP363
T2500/A12
1756-CNB
1756-IA16
1756-IB16I
1756-IF16
1786-XT
1783-EMS08T
TSXBLZL01
1756-BA1
1771-IBN
1771-OBN
SEC4400
6AV6643-0CD01-1AX1
6ES7972-OBB41-0XA0
CPU343-1343-1EX30-0XEO
TM-T88IV M129H