单片机IO口扩展芯片——74HC595
这是74 hc 595芯片,如图1,它是一颗单片机IO口扩展芯片,使用它,我们可以很容易的将单片机的3个输出引脚扩展为8个。
图1 74HC595芯片外观示意图
通过多个595芯片级连,可以扩展出16个,24个乃至更多的引脚,如图2。
图2 芯片扩展单片机引脚
这颗芯片通过串行数据输入,数据输出的方式为1路串行或8路并行。引脚有三种输出状态:高电平、低电平和高阻态。它的引脚驱动能力为35mA,如图3。
图3 芯片的电气性能
这是它的原理图,第14引脚为芯片的串行数据输入引脚。第1至7引脚,外加第15引脚构成了芯片的8个并行输出引脚,第九脚为1路串行数据输出引脚。第13引脚为芯片的低电平使能引脚。第10为低电平复位引脚。第11,12引脚分别为移位寄存器、存储寄存器的时钟输入引脚,我们用单片机的两只引脚控制第11、12引脚来产生数据移位、存储的时钟节拍。第8、16引脚为电源引脚。详见图4.
图4 595芯片的原理图
使用时通过第14引脚接收单片机发来的数据。第11,12引脚连接单片机产生时钟。第10引脚接入电源的正极则不复位。第13引脚接入电源的负极则使能芯片。8路并行输出引脚可以直接连接外部驱动器件,如点阵显示器、数码管等。如图5.
图5 使用时的接线图
我们可以通过第9引脚接入另外一颗595芯片的第14引脚,实现595芯片的级联,从而扩展出更多的IO端口。如图6
图6 芯片级联原理图
在嵌入式开发过程中芯片IO资源扩展的方案
在日常开发的过程中你是否遇到过硬件需要增加外设的时候发现芯片IO资源不够了。某项目老板说设备还要增加几个传感器的时候是否遇到过芯片的串口资源已经用完了。
如果出现这些问题如何解决呢?方案有很多,方案之一就是扩展,把一个IO口变成2个或者多个,把一个串口变2个或者多个。
这次就来谈谈芯片扩展的那些事情。
简要目录简单IO口扩展
UART扩展
USB扩展
简单IO口扩展
简单的IO口扩展通常采用TTL或者CMOS电路锁存器。三态门等作为扩展芯片(74L244、74LS245、74LV595、74LS377等等)。使用这些方案进行IO口扩展具有电路简单、成本低、配置灵活的特点。
方案的应用举例:
利用74LV595PW进行IO口输出扩展。
这是某家IMX6UL开发板上应用的IO口扩展方案。74LV595是带存储寄存器和3态输出的8级串行移位寄存器。移动和存储寄存器都具有单独的时钟。其是低压硅栅CMOS器件。
利用74HC165进行IO口输入扩展。
74HC165是8位并行读取或串行输入移位寄存器,可在末级得到互补的串行输出(Q7和!Q7),当异步并行读取引脚(!PL)输入为低时,从D0到D7口输入的并行数据将被读取进寄存器内。而当异步并行读取引脚为高时,数据将在每个时钟脉冲的上升沿从 引脚串行进入寄存器并将现有数据右移一位( 以此类推)。
利用这种特性,只要把Q7输出绑定到下一级的输入,即可实现移位寄存器位数的扩展。
以上就是普通IO口的常用实例,当然还有其他的扩展方案,比如专用IO扩展芯片或者加一个单片机等等。
UART(串口)扩展
常用单片机串口资源一般有1个、3个、5个。一个稍微复杂一点的嵌入式系统串口资源肯定不够用。那如何解决,只好想办法增加几个串口,也就是扩展。
之前有一个环境监测的项目,使用到GSM、WIFI、PM2.5传感器、CO2传感器、甲醛传感器、VOC传感器等等都是串口通讯的传感器。
一般的芯片都没有那么多的串口,传感器的通讯协议比较相似不能多个传感器并用一个串口,一开始的扩展方式就是增加一个子芯片用来读取各个传感器的数据然后通过一个串口传到主芯片进行处理和发送。
这个方案使用上不会有什么问题,就是在大批量生产的时候需要多次烧录程序,碰上现在这个芯片市场的影响成本已经翻了好几倍。所以就成本来说这个方案并不是最好的选择。有没有其他更好一点的方案,答案是,有。
使用过比较简单的方案就是使用模拟开关来进行串口线路切换,从而达到扩展串口的目的。这个就像是六七十年代的电话接线员,需要跟哪条线路通讯就接通哪条线路即可。下面是在某个项目中使用过的两款模拟开关芯片芯片,一个是4路的模拟开关芯片74HC4006,另一个是16路的模拟开关芯片。
74HC4006在项目中主要是实现一个串口读取4个串口通讯方式的传感器数据。
74HC4067这个芯片之前是用作传感器检测的一个项目,SM32F103RC为主控,STM32F103RC总共有5个串口,一个串口用做无线通信外还有4个串口。使用4块74HC4067芯片就可以同时测试64个串口通信方式的传感器。如果数据通信改用USB通信,那最多可以同时测试80个串口通信方式的传感器。这个方案的好处就是程序设计上不需要很复杂。而且芯片的成本比较低。
还有另外一种比较专业的串口扩展方案就是使用专用的串口扩展芯片vk3214。可以使用一个串口或者SPI接口扩展成4个串口。
扩展的子通道的UART具备如下功能特点:
每个子通道UART的波特率、字长、校验格式可以独立设置,最高可以提供1Mbps的通信速率。
每个子通道可以独立设置工作在IrDA红外通信、RS-485自动收发控制、9位网络地址自动识别、软件/硬件自动流量控制、广播接收等高级工作模式下。
每个子通道具备收/发独立的16 BYTE FIFO,FIFO的中断为4级可编程条件触发点。
提供一个子通道的调制解调器(MODEM)控制信号。
这些是该芯片的相关介绍,由于没有真正使用共也不清楚具体的情况。所以就先说那么多了。
USB扩展
USB扩展相信大家都比较熟悉,经常使用电脑的如果发现USB接口不够用的话都会买一个USB扩展器来使用。所有这个就不多说了,下面分享一个某IMX6UL开发板上面使用的一个USB2.0的扩展芯片,把一个USB口扩展成4个,就可以接更多USB接口的模块。
相关问答
单片机怎么扩展I/O口?要具体步骤?
PCA9554,IIC接口的IO输入输出扩展芯片。只是输出扩展的话可以用74HC595之类的串行移位锁存。具体用法不是一两句话能讲清的,你搜索芯片手册和使用范例吧PCA...
io扩展的分类?
IO的分类,从两个角度可以分为:阻塞/非阻塞&同步/异步IO的分类,从两个角度可以分为:阻塞/非阻塞&同步/异步
TMP82C55AP-2是什么单片机?怎样使用它?
就是单片机或者微机原理课程上讲的芯片8255,这不是单片机,只是用于IO扩展的芯片。就是单片机或者微机原理课程上讲的芯片8255,这不是单片机,只是用于IO扩展的...
安川io扩展模块怎么用?
回答如下:安川io扩展模块的使用方法如下:1.将io扩展模块连接到安川PLC的扩展接口上,确保连接正确。2.在PLC程序中添加扩展模块的程序模块,该模块的地址与...
西门子S7-1200有哪些扩展IO的方式?
1,同一个cpu增加数字量、模拟量扩展模块2,同一个cpu增加信号板3,使用多组1200,使用I-Device(智能设备)功能,实现主从架构的分布式io扩展。4,使用1200挂...1,...
信捷plc加扩展io点从那里开始写,怎么定义?
在信捷PLC中,加扩展IO点的定义需要从硬件端口开始,并在配置中进行相关设置。首先需要确定使用的IO口类型,如数字输入、数字输出或模拟输入等,并注意确定IO口...
4.3寸mini屏怎么连接IO扩展板?
注意事项:1.需要注意mini屏和扩展板的电源供应,以确保电压和电流稳定。2.在连接和调试过程中,需要小心避免静电和短路等问题。4.根据扩展板的使用说明进...
单片机IO口的第二功能是什么??-ZOL问答
单片机IO口第二功能是:P0口的第二功能是数据/地址总线。P2口的第二功能是地址...1、通过并行扩展芯片,比如8255,8155等。2、通过锁存器或缓冲器来扩展,比如7...
S7-1200添加扩展模块怎么设置?
像这种情况用以下介绍的方法和步骤就可以解决:1,同一个cpu增加数字量、模拟量扩展模块2,同一个cpu增加信号板3,使用多组1200,使用I-Device(智能设备)...S...
fx5u如何通过扩展连接器接IO?
要通过扩展连接器连接IO设备到FX5U,首先需要使用适配器模块,如FX5-CNV-BUS。将适配器模块插入到FX5U的扩展连接器上,然后将IO设备连接到适配器模块的对应端口...