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#进行扩展,以方便前期测试。Ubuntu 10.10下安装配置SkyEye 1.3.1将CentOS安装在移动硬盘相关资讯 嵌入式Linux - 2015年嵌入式和移动Linux领域的几 (01月06日)
- OpenWRT嵌入式Linux故障排除一例 (01/17/2015 13:04:14)
- 10款专为嵌入式系统打造的Linux平 (06/27/2014 14:27:09)
| - 解决嵌入式Linux中的时区问题 (09/13/2015 13:49:19)
- 嵌入式Linux开发环境搭建 (08/19/2014 05:49:14)
- 嵌入式Linux中GPS信息读取与处理 (04/08/2014 19:31:47)
|
本文评论 查看全部评论 (0)