GPIO设计指南

2018-07-11 16:19:11编辑:muyan 关键字:GPIO

GPIO作为常用个开关量控制信号,广泛应用于工业领域的数据采集和驱动控制。当GPIO配置为DI和DO时,干节点与湿节点设计规范是否一致呢?GPIO配置为DI采集时,隔离方案是选择继电器隔离还是光耦隔离呢?


1、什么叫DI/DO


DI:数字量输入,把生产过程中的数字信号转换成计算机易于识别的“0”和“1”信号状态。


DO:数字量输出,把计算机输出的微弱数字信号转换成能对生产过程中控制的“0”和“1”信号状态。


2、DI/DO的干湿节点介绍


干接点的定义:

无源开关,具有闭合和断开的2种状态,2个接点之间没有极性,可以互换;


    常见的干节点:有限位开关、行程开关、旋转开关、温度开关、各种按键以及各种传感器的输出等。


湿接点的定义是:有源开关;具有有电和无电的2种状态;2个接点之间有极性,不能反接。


常见的湿节点有:NPN三极管的集电极输出和VCC、达林顿管的集电极输出和VCC、红外反射传感器和对射传感器的输出等。


3、DI/DO驱动阻抗设计


此处以NXP i.MX 6UL为例,常规对于GPIO作为输出接口时,OVDD电压为1.8V或3.3V,若GPIO设计为DO时需要注意哪些事项呢?


此处以DO为示例,Rpu/Rpd和Ztl构成一个分压器,定义入射波相对于OVDD的特定电压,输出驱动阻抗是从这个分压器计算出来的。


图1  分压器等效电路



图3  基于3.3V的驱动阻抗表


4、设计隔离DI/DO的建议方案


在工业场合对DI/DO的设计都要考虑到隔离,在隔离中比较常用的是光耦隔离。


图4为光耦隔离数字量干节点电路,其中的DIx、GIx连接到触点开关的两端,当开关闭合时,光耦输入回路二极管导通,输出回路光电接收管导通,输入端GPIx为低电平;当开关断开时,光耦输入回路二极管截止,输出回路光电接收管截止,输入GPIx被电阻上拉为高电平。


图4  干节点传输电缆示意图


图5是光耦隔离数字量湿节点设计参考电路,输入电压范围DC4V-18V,并且内部自带滤波功能。用户只需将湿节点的正端接于DIx接口,将负端接于GIx接口,当输入的电压大于4V小于18V时,光耦导通;当输入的电压小于1V时,光耦截止。


图5  光耦隔离DI输入示意图一


DI作为隔离数字量输入接口,接开关量输入时,用户必须在外部电路加上拉电源,简化的连接示意图如图6所示。其中VCC_GPI为外部隔离电源,输入范围为4V~18V,GND_GPI为外部隔离地,电阻R1在开关断开时保证GIx为低电平,阻值为100KΩ即可。


图6  光耦隔离DI输入示意图二


DO作为隔离数字量输出时,由于芯片内部提供DO驱动电流为mA级且驱动电压为1.8V或3.3V,无法满足所有的应用环境。DO应用于工业领域的开关量设计,需更具不同的应用环境进行继电器隔离、电平转换、电阻上拉设计,可有效防止电压信号的反向灌入烧毁芯片。


图7  隔离电路DO输入示意图


图8  M6708U-T系列工控核心板


关键字:GPIO

来源: EEWORLD 引用地址:http://www.eeworld.com.cn/dygl/2018/ic-news071128609.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:小尺寸大功率,尼吉康全新电容器在京发布
下一篇:什么是云电源?

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

ARM GPIO接口置位方法

如下面的代码,为啥把端口SDA付给SDA就是置位操作呢?其实SDA是一个偏移量,它基于GPIO_PORTB_BASE,进行偏移,SDA定义的就是某一个管脚,如#define SDA 0x20H这是16进制数,展开为二进制则是0010 0000B,可见,偏移量0x20H,其实也可以用来置位,因为第六位为1。再看GPIOPinWrite()函数,第三个参数就是SDA的值,要知道,函数赋值,最小都是char类型,一个字节,你无法赋值一个bit,所以,既然这样,就干脆就用偏移量赋值就行了(函数的实现,可能通过&或者|)。所以,某些ARM编程的书籍上说要把某个GPIO的值赋值给它本身,我当时就很不解,为啥要赋值给它本身?其实就是因为
发表于 2018-07-22 13:04:10

ARM处理器学习之--GPIO操作篇

在上一篇文章中我们详细讲解了ARM开发环境的搭建,我们选择了X86-linux平台交叉编译ARM程序,交叉编译链选用arm-linux-系列。另外,我们还说明了一些开发需要的基础知识。关于以上这些内容,请参见ARM芯片学习内容规划及ARM开发环境的搭建。我们学习高层应用程序开发的时候,一般第一个程序是经典的”hello world”程序。我们学习嵌入式的开发,主要是根据应用需求,选用合理的电子器件设计硬件电路,然后使用主控芯片控制外设。所以,我们GPIO操作篇的内容选为让电路板上的一个LED灯闪烁。在讲解实验之前,我还是说明一下。这些基础实验,都是在特定硬件平台上运行的,且现象也是在特定电路板上才能产生的。所以实验中的程序
发表于 2018-07-22 12:59:05

STM32_GPIO之按键输入

/* 名称:STM32_GPIO之按键输入 说明:这个实验是GPIO的输入功能。基本的思路和51单片机差不多。也是 操作相应的IO口,不过不同的是对于独立按键输入实验来说,51单片机是 需要一开始把待检测的IO口设置成高电平,然后检测其何时被拉低。而对 于STM32来说,其GPIO端口就可以设置成上拉输入,即不需要再人为的把对 应的对应的IO口设置成高电平,硬件电路会自动把对应端口引脚拉成高电 平。还有一点关于条件编译要说的:这个ifndef… #endif 一般用在头文件中。书上说为了防止重复编译。就我目前了解的来看,在实际应用中,如果在两个.c源文件中都
发表于 2018-07-21 14:37:58

STM32有关GPIO引脚的一些问题

/* 名称:STM32有关GPIO引脚的一些问题 说明:今天在编写一个键盘扫描程序的时候,出现了一些问题。 有的引脚能读出电平状态、有点引脚确一直读不出状态。改了一下午,查了好久,终于有点眉目了。现简述如下: 我在用引脚的时候,使用的是PB0、PB1、PB2、PB3、PB4…,将其引脚配置的方式是上拉输入。PB2、PB3、PB4一直有问题。PB0、PB1是可以读出状态的(但是只能单独使用)。对于PB2来说,其不仅是PB2,它也是BOOT1引脚。当系统复位之后,开始的几个系统时钟使用的是BOOT1,用来判断系统从何处读取置零。之后,PB2就可以作为普通的IO引脚使用了。由于开发板设置
发表于 2018-07-21 12:22:43

S3C2440学习之GPIO按键控制LED灯

/* 名称:S3C2440学习之GPIO按键控制LED灯 说明:这是实验2440GPIO的输入功能。基本的流程和51单片机开发的差不多。都是对GPIO端口寄存器的控制不同的是,51单片机可以直接对进行位控制,而2440中GPIO只能对32位的寄存器进行写入或者读出。这样的话,对于有些逻辑操作要稍微复杂点。还有个不同的是,无论是STM32还是51在进行IO按键输入的时候,都需要进行按键消抖,在这里却没又体现出来按键消抖,这是为什么呢?据我了解是这样,在进行51和STM32实验的时候,按键控制的是数码管(数字增加,降低),所以按键的机械抖动会给数码管数字的变化带来显著的影响。在这里是按键控制led灯的亮和灭
发表于 2018-07-21 11:58:46

STM32(二)之GPIO操作(2)——通过按键控制LED灯的开关

      STM32是一款低功耗的芯片,所以其外设均有一个与之对应的时钟,而在芯片刚上电的时候这些时钟是被关闭的,所以如果想要外设工作,便必须将与之对应的时钟打开。      本文介绍如何基于GPIO来通过按键控制LEN灯的开关。     (1)按键的控制      上图所示为按键的电路,在按键未被按下的时候,KEY2的输出信号为低电平(按键所在的电路不通,其与地相连);在按键按下时,KEY2的输出状态为高电平(按键所在的电路导通,其与3.3V的电源相连)。因此,通过对引脚的电平进行检测便可以判断按键是否按下
发表于 2018-07-21 11:15:53

小广播

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2018 EEWORLD.com.cn, Inc. All rights reserved
ֳѶ ɬѶ qqѶ ӯѶ Ѷ888 agѶ mg Ѷ xtdѶ agѶ ֪ Ѷ Ʊ Ѷ. ʲôѶ agѶƽ̨ ѶͶעվ ͨѶ Ѷƽ̨ gpiѶ Ѷ lmgѶ Ѷ Ż agѶˮ Ѷ ptѶ agѶ ɫ Ѷ ͬѶ ogѶ ϻѶ ĸѶ agѶapiӿ ѶIJ AGѶٷƽ̨ betѶ Ѷ Ѷ 888Ѷ Ѷ:h69com 365Ѷƽ̨ agbbinѶ mgѶվ Ѷ Ѷ ϾѶ agѶֱ Ѷע Ѷ Ѷ agѶ agѶע Ѷ