设计与开发

单片机扩展io 当单片机的IO引脚数量不够时,有什么方案可以解决?

小编 2024-10-08 设计与开发 23 0

当单片机的IO引脚数量不够时,有什么方案可以解决?

单片机,作为一般电子类产品项目的关键元器件, 常被工程师应用处理数据的逻辑运算,甚至包含一些软件的算法。比如工程师在开发

家用电饭煲项目,单片机就可以作为数据运算的核心器件,负责处理加热、定时、显示、按键等功能的实现;电动剃须刀项目,单片机可以作为电机控制的核心器件,负责处理电机的正转、电池的电量管理等功能的实现;办公碎纸机项目,单片机可以作为逻辑分析的核心器件,负责处理电机的正转、反转、堵转、人体保护等功能的实现;

单片机项目

工程师在针对这类的项目开发,会依据设计的功能需求确定单片机所需的内部资源,也就是确定单片机的型号。常用单片机的内部资源包含引脚数量、主频时钟、存储空间以及通信接口等等,工程师根据这些信息选择项目匹配的单片机型号。

确定单片机型号之后,工程师便可以进行项目的具体研发工作,硬件工程师展开电路原理图设计,软件工程师展开程序的代码设计;

在项目研发阶段,工程师或许会遇到类型情况

项目的研发工作在接近完毕时,临时需要额外增加某项功能;或者项目版本在更新迭代的过程中,临时需要额外调整某项功能;

面对这类情况,这些临时增加和调整的功能,可能会导致之前选择的单片机的IO引脚数量不够问题出现;针对单片机的IO引脚数量不够时,工程师该如何去较好地解决呢?

工程师可能会重新选择单片机的型号,直接通过简单地增加IO引脚数量来解决;此方案虽然可以解决,但芯片哥不推荐,主要存在2个问题

重新选择新的单片机型号,与之相关联的软件代码相当于也需要重新开发设计,增加了项目的开发工作量,工作效率不佳;重新选择新的单片机型号,与之相关联的硬件电路相当于也需要重新开发设计,需要重新调试验证,尤其是一些可靠性试验的测试;

既然重新选择新的单片机型号存在这些问题,那有没有其他方案可以更好地解决呢?

答案是肯定的,不要问为什么,因为芯片哥,所以芯片哥,哈哈哈。。。。。。

在项目开发过程中,单片机的IO引脚数量不够时,除了重新选择新的单片机型号解决方案之外,还存在使用IO引脚扩展芯片的方案, 比如AL5524芯片就是一个单片机的IO引脚扩展芯片,就能解决此类问题;

那么AL5524 IO引脚扩展芯片,它具有什么样的特性?它是如何解决了单片机的IO引脚数量的?它又是如何扩展单片机的IO引脚数量的?

AL5524芯片引脚定义

Pin1引脚:INTB是实现中断功能;

Pin2 & Pin3 & Pin21引脚:ADD实现的功能是通过硬件方式定义了IIC通信的地址信息;

Pin4 ~ Pin11引脚:RA是芯片扩展的IO引脚;

Pin13 ~ Pin20引脚:RB是芯片扩展的IO引脚;

Pin22 & Pin23引脚:IIC通信接口功能引脚;

Pin12 & Pin24引脚:芯片的电源输入引脚;

AL5224引脚定义图

通过引脚功能定义,工程师基本可以分析出芯片的工作原理,也就是通过IIC接口扩展了单片机的IO引脚数量,这从芯片的内部结构框图更容易看出

AL5224芯片内部框图

在AL5224芯片的内部框图中,主要包含四个部分:地址生成器,IIC控制器,寄存器与控制器,普通IO引脚Port A与Port B;

AL5224功能框图

(1)地址生成器,主要是通过ADD0、ADD1以及ADD2外部的硬件电路定义IIC的通信地址,常用的简便设计是将ADD0、ADD1与ADD2直接接地;

(2)IIC控制器,主要是AL5224芯片与单片机之间通信的桥梁,用以数据交换,实现IO引脚扩展功能;

(3)寄存器与控制器,主要是将IIC通信的数据暂存于此,便于转换成Port A和Port B引脚输出;

(4)普通IO引脚Port A与Port B,此两个引脚就是芯片需要扩展的IO引脚,等同于单片机的IO引脚功能;

分析完这些内容之后,工程师或许更清晰地认识了AL5224芯片的功能;但这些内容还仅仅停留在理论层面,那么具体在项目开发中,如何去应用呢?如何去设计呢?如何开发电路呢?

AL5224芯片应用电路

在了解完AL5224芯片基本的电路特性之后,工程师迫切地想着手去解决项目中实际存在的问题,否则就失去了工作意义;

犹如“不以结婚为目的的谈恋爱都叫耍流氓”一样,芯片哥认为“不以解决现实问题的电路研发都叫自娱自乐”;

AL5224芯片应用电路

AL5224芯片的工作电源电压范围为2.0V~5.5V,既可以兼容5V的逻辑电平,也可以兼容3.3V的逻辑电平。

AL5224芯片的应用电路,工程师很容易设计开发,只需将SCL与SDA引脚连接单片机的IIC引脚即可,这样单片机就轻易地实现了解决扩展IO引脚数量的问题了;单片机通过2个IO引脚SCL与SDA,扩展了16个IO引脚数量,也就实现了扩展IO引脚数量的功能;

文末结尾

在介绍完AL5224芯片的电路特性之后,工程师或许在对比中发现,相对重新选择新的单片机型号而言,选择AL5224 IO引脚扩展芯片方案更具有普遍性,可操作性更强;正所谓事务都具有双重性,有正面必然有反面,AL5224芯片的电路方案也存在一些不足之处

a)增加项目的BOM核算成本,主要是增加了AL5224的芯片成本;

b)AL5224 IO引脚扩展芯片,扩展了14个IO引脚数量;显然在实际项目开发中很少会遇到需要扩展14个IO引脚的数量,即便AL5224系列芯片也支持扩展8个IO引脚数量,但会造成一些多余的IO引脚资源浪费现象;

最后,芯片哥需要指出在项目开发中,工程师需要多方位多角度评估各种不同的方案,权衡方案的得与失之后,才能做出最佳的项目问题解决方案;

本文由【芯片哥】原创撰写,一个只谈电子元器件与芯片的工程师,喜欢就关注芯片哥,和芯片哥一起加油吧

两个单片机IO扩展的实用小例子

我们在做单片机的小项目时,经常会碰到IO口不够用的时候,比如控制多个7段数码管,或者要采集多路AD,要连接多个串口传感器等等。这时,更换单片机不一定是最好的选择,使用其他芯片来扩展IO使用比较常见的办法。今天就给大家介绍两个扩展IO的小例子。

单片机

串行转并行芯片

所谓串行转并行,就是指把要控制的IO状态组成数组,用串行的方式发送给芯片,芯片通过移位锁存,将数组中的IO状态转成真正的电平状态。典型的应用是74HC595控制7段数码管。每个数码管需要8个IO来控制(包括小数点),而通过74HC595,只要3根IO就可以了。而且它还可以级联,就是说,3根IO可以控制两个以上74HC595。下面就是两片74HC595控制两位段码管的原理图:

74HC595原理图

模拟开关芯片

有时候我们需要IO可以是输入状态,或者是输入输出都支持的状态,这种情况下,串行转并行芯片显然就不好用了。这就可以用模拟开关芯片来实现了。所谓模拟开关,可以想象成多个可以通过单片机控制的开关集成在一个芯片里。比较典型的有CD4051和CD4052。CD4051是单路的,CD4052是双路的,他们都可以通过地址线控制选择通道,把一个IO选择连接到多个通道上。比如我们要测量8路AD,实际上单片机只要有一路AD就可以了,通过地址线,让这一路AD依次接到8个通道上,就可以实现8路AD信号的采集。

CD051真值表

简单的单片机一般只有一个或者两个串口,可以通过CD4052把1路串口扩展成4路,原理图如下:

CD4052应用原理图

这两个例子是常见的单片机应用,能够有效的帮助解决IO口短缺的问题,亲测好用哦!

希望我的分享给大家带来帮助,欢迎大家多评论,多交流!

相关问答

低成本 单片机 中,怎样用更少的 IO 实现更多的按键?会不稳定吗?

低成本单片机中,怎样用更少的IO实现更多的按键有很多方法的可以用AD检测法,行列矩阵扫描法,各有各的好处。适用于不同的场合。AD检测法如果你的单片机有ADC...

如何将 单片机 32个 IO 口拓展为64个双向输入输出口?

将单片机32个IO口拓展为64个双向输入输出口要求能双向输入输出,怎么设计电路?----方法很简单:先解决一个口的拓展,这是重点。然后,再重复64次。...将...

stm32开发板那么多的 IO 接口都是干什么用的?怎么连接外部 扩展 板?

单片机的开发板是为方便初学者而设计的,开发板往往选用比较流行、片上资源比较丰富的单片机作为核心,将常用的外设电路通过跳线的方式整合起来,让初学者通过一...

单片机 IO 口是不是既可以串行使用也可以并行使用?

是的。所有的I/O都可以并行使用也可以串行使用,但串行使用要看情况,如果单片机内部具有诸如UART、I2C、SPI硬件模块的,可以通过对模块进行配置而直接使用。如...

51 单片机io 口能驱动光耦吗?

51单片机的任何一个IO口都有能力驱动光耦。光耦的驱动电流只有几个毫安,而单片机IO口的拉电流和灌电流都在十几毫安以上,所以驱动光耦完全没有问题。在使用时...

如果给 单片机IO 口加5v电压,单片机会烧坏吗?〔5v电源供电的单片机〕?

如果是输入端,应该没事。因为5V供电的单片机大都是采用TTL或TTL兼容的信号,而此时加5V,被认为是正常的1电位的范围。如果是输出端,就有问题了。假如输出端是...

单片机 io 口输出电流最大是多少?

传统单片机一般为10ma左右,现在的单片机一般20-25ma,但多个IO口加起来总电流有限制,根据厂家和封装不同而变化,有的不能超200ma,有的不能超400ma如果外设要...

用51 单片机 一个 IO 口驱动3mmLED灯,要加多大的限流电阻?

如果不是扫描方式逐个点亮LED,那么限流电阻是必须加的,每只470Ω就可以,普通单片机为置0点亮LED,不加肯定不能正确控制的,P0口的上拉电阻也需要加入但绝对与...

单片机io 口输出默认是高电平吗?

不是所有单片机的IO口输出默认都是高电平,这取决于具体的单片机型号以及其设计的硬件电路。有些单片机的IO口默认输出低电平,有些则默认输出高电平。因此在使...

单片机 怎么用c语言设置I/O口输入或输出?

单片机的IO口缺省时一般都是双向,既可以是输入又可以是输出,C语言中判断这个口是输入还是输出要看表达式的形式,比如:sbitkey=P1^0;if(key==1).....这里是作...

猜你喜欢