1、精简ISA总线GPIO扩展原理

在工业领域,GPIO的应用非常广泛,英利嵌入式Linux工控板上自带有16路GPIO。然而在实际应用中,经常需要多于16路的GPIO作为控制或者数据信号使用,这时候可以通过英利精简ISA总线进行GPIO扩展。采用最普遍的逻辑芯片74HCT138、74HCT245和74HCT273即可以扩展出满足需求数量的GPIO。此外,由于上述芯片的成本极其低廉,单片采购价只有几角钱,因此在满足功能需求的同时,也有效地控制了产品成本。

采用精简ISA总线进行GPIO扩展的方法是:使用74HCT138对片选控制信号CS1#、读信号RD#、写信号WE#以及地址线SA0-SA2进行地址译码,产生不同地址偏移量的片选信号,应用程序通过对不同地址的读写操作来控制相应的GPIO(GPIO通过74HCT245或者74HCT273连接到数据线SD0-SD7)。

2、DIN扩展示例

数字输入DIN的扩展原理图如下所示:

如图所示,地址译码产生了8个读片选信号,每一个信号通过控制一片74HCT245可以操作8路GPIO,这样,一次译码之后可以扩展出64路DIN。本图中只使用了RD0#和RD1#两个片选信号,客户如有需要可以使用RD2#-RD7#继续进行扩展。

3、DOUT扩展示例

数字输出DOUT的扩展原理图如下所示:

如图所示,地址译码产生了8个写片选信号,每一个信号通过控制一片74HCT273可以操作8路GPIO,这样,一次译码之后可以扩展出64路DOUT。本图中只使用了WE0#和WE1#两个片选信号,www.linuxidc.com客户如有需要可以使用WE2#-WE7#继续进行扩展。

综上所述,通过一次地址译码能够扩展出64路输入、64路输出一共128路GPIO,可以满足绝大多数工业控制领域的需求。而这128路GPIO扩展所需的器件成本只有十几元,相对于工控整机产品而言,几乎可以忽略不计。

此外需强调的是,如果用户扩展出的GPIO是用做不同的功能,那么最好将不同的功能单元完全分开。

比如,需要进行如下扩展控制: • 3路DIN • 2x3矩阵键盘 • 5个LED • 4路继电器单元 • 7路DOUT

则分配思路如下:由于有5个功能单元,每一个功能单元所需的GPIO都不超过8个,因此使用2片74HCT245分别用于矩阵键盘、DIN;4片74HCT273分别用于矩阵键盘、LED、继电器、DOUT,读信号用RD0#和RD1#,写信号用WE0#-WE3#。这样,应用程序分别独立控制各功能单元,可以加快开发进度,提高开发的成功率和后期维护效率;而多使用几个芯片,并不会给开发成本增加任何负担。

上述示例的具体分配方案如下: • 1片74HCT245,使用片选信号RD0#,接矩阵键盘的输入信号

• 1片74HCT245,使用片选信号RD1#,接3路DIN

• 1片74HCT273,使用片选信号WE0#,接矩阵键盘的输出信号

• 1片74HCT273,使用片选信号WE1#,接LED

• 1片74HCT273,使用片选信号WE2#,接继电器

• 1片74HCT273,使用片选信号WE3#,接7路DOUT

另需注意:

1、建议将地址偏移量为0的端口留作矩阵键盘使用,以便于系统自动加载驱动和应用程序的编写。

2、由于英利提供的例程均采用CS1#作为片选信号,因此建议客户也使用CS1#进行扩展,以方便前期测试。

linux添加扩展gpio,嵌入式Linux工控板的ISA总线GPIO扩展相关推荐

  1. 嵌入式linux 添加中断,《嵌入式linux应用程序开发完全手册》中断控制器操作(外部中断)学习笔记...

    <嵌入式linux应用程序开发完全手册>中断控制器操作(外部中断)学习笔记 一.ARM中断体系 当一个"异常"发生时,或者说当收到一个中断触发信号时,ARM9将会自动完 ...

  2. arm linux 添加ntp服务,嵌入式linux添加NTP服务

    版本信息: Linux version 4.1.15 需求: RTC时间不够精确,过一段时间就可以看出和实际时间有明显出入,有必要添加NTP服务,使系统可以与网络同步时间. 首先把NTP服务build ...

  3. linux 直流电机驱动设计,嵌入式Linux直流电机驱动.PPT

    嵌入式Linux直流电机驱动.PPT 嵌入式Linux直流电机驱动实验 开发平台中直流电机驱动的实现 S3C2410芯片自带定时器,所以控制部分省去了三角波产生电路.脉冲调制电路和PWM信号延迟及信号 ...

  4. linux内核培训广州,嵌入式Linux驱动开发高级培训班-华清远见嵌入式培训中心

    课程目标 本课程以案例教学为主,系统地介绍Linux下有关FrameBuffer.MMC卡.USB设备的驱动程序开发.参加本课程学习的学员,因为具备了Linux设备驱动开发基础,所以本课程针对性较强, ...

  5. 嵌入式linux的发展历程,嵌入式Linux论文(历史发展分类及应用)

    嵌入式Linux 一.嵌入式Linux简介 1.1 嵌入式Linux历史 随着社会的发展,信息化技术的成熟和数字化产品的普及,让以计算机技术.芯片技术和软件技术为核心的嵌入式系统再度成为当前研究和应用 ...

  6. 嵌入式linux实时化技术,嵌入式Linux实时化技术

    引言 Linux支持PowerPC.MIPS.ARM.DSP等多种嵌入式处理器,逐渐被用于多种关键性场合.其中实时多媒体处理.工业控制.汽车电子等特定应用对Linux提出了强实时性需求.Linux提供 ...

  7. 嵌入式linux开发环境 cpu,嵌入式Linux开发环境的搭建之:U-Boot移植-嵌入式系统-与非网...

    5.2  U-Boot移植 5.2.1  Bootloader介绍 1.概念 简单地说,Bootloader就是在操作系统内核运行之前运行的一段程序,它类似于PC机中的BIOS程序.通过这段程序,可以 ...

  8. linux spidev 应用_嵌入式Linux设备树语法总结

    1 设备树的说明 在写完嵌入式驱动总结后,对于设备树相关的语法和使用一直都想进行系统的描述,但是因为最近比较忙碌,所以一直拖到现在才完成初版,对于整个嵌入式Linux驱动开发中,设备树语法和构建是其中 ...

  9. 嵌入式linux应用层中断函数,嵌入式LINUX驱动开发(中断处理函数)

    嵌入式LINUX驱动开发(中断处理函数) 2020年08月11日 | 萬仟网网络运营 | 我要评论 嵌入式LINUX驱动学习之7中断相关(一)中断处理函数一.函数.头文件及说明二.编译举例:一.函数. ...

最新文章

  1. PCL:从法线计算到曲率计算并可视化
  2. php的基本语法和数据类型
  3. c# 第28节 面向对象概述
  4. Android -- 贝塞尔使圆渐变为桃心
  5. 你知道什么是Jest吗?
  6. 有关mysql事务冲突
  7. redis 控制调用频率
  8. Outlook应用指南(1)——数据备份还原技巧
  9. Oracle Connect By Start With 总结==转帖
  10. ldap seach java_从LDAP(Java)检索信息
  11. maven多模块项目部署到服务器,GitHub - baxias/foweb: 一个基于 Spring+SpringMVC+Mybatis 的Maven多模块项目。(实现前后端分离的服务器端)...
  12. 2019年信息安全工程师备考经验
  13. LeetCode 120. 三角形最小路径和
  14. Confluence 6 SQL 异常的问题解决
  15. PS 钢笔工具如何拖拽滑杆
  16. 软件测试工程师 岗位分析
  17. PDF文件太大,有哪些方法可以减小PDF
  18. php中$this-是什么意思
  19. 李呈祥:bilibili在湖仓一体查询加速上的实践与探索
  20. 那些 Cynthia 教我的事 之 PMSec (三)

热门文章

  1. linux rpm 装 mac,在linux上搭建用于mac时间机器备份的server
  2. 浅谈ArcGIS GP服务 :一、框架介绍
  3. html文本显示不完整,div css网页显示不完整的原因分析及解决方案
  4. windows 10 搭建Omnipeek环境
  5. 【论文阅读】Interpolation Consistency Training for Semi-Supervised Learning
  6. 推荐uml 流程图 在线编辑工具
  7. QT 之 编译错误总结(2)
  8. 写作小技能:开篇制胜的首段:写序言的故事模板(SCQA: Situation情境, Conflict冲突, Question问题, Answer回答。)
  9. 如何使用中国气象局API开发天气APP
  10. 建筑CAD制图教程:排水坡线功能介绍