浅析单片机IO引脚外接上下拉电阻的作用
爱玩单片机的亲们通常都会常见IO引脚接上拉电阻或下拉电阻的现象,如图一中RP11、RP12、RP13、RP14均为上拉电阻,图二中R18为下拉电阻。
什么是上下拉电阻,作用是什么呢?通俗来讲,上拉电阻是单片机IO引脚与电源VCC间连接的电阻,下拉电阻为单片机IO引脚与GND间连接的电阻。
因为单片机内部不外乎是各类逻辑门电路的集成,而逻辑门电路由晶体管组成,单片机IC引脚在单片机内部有输入回路与输出回路,输入回路可等效为“图三”及“图四”,其中Rup与Rdown均为外接上拉与下拉电阻,PXX为单片机某IO引脚。而输出回路工作模式有推挽式输出与集电极(漏极)浮空输出模式,以后者为例,输出回路可等效为“图五”,其中Rup为外接上拉电阻,PXX为单片机某IO引脚。
图三
图四
图五
从“图三”、“图四”中可以看到,当IO引脚外接上拉电阻时,引脚默认电压为高电平,当IO引脚外接下拉电阻时,引脚默认电压为低电平,这样就可以消除引脚不定状态的影响。
而从“图五”中可看到,若不外接上拉电阻,IO引脚处于高阻态,若单片机内部晶体管Qinner截止,处于静默状态时,受内外电路影响,可能输出高电平,也可能输出低电平,存在不稳定因素,而此时上拉电阻Rup的作用便是在此期间,将其稳定在高电平,需要其输出低电平时,由程序控制,使晶体管Qinner导通输出低电平,所以外接上下拉电阻非常重要的一个作用便是让种种不稳定状态期间,使IO引脚电平强制保持为高电平或低电平。所以我们常常在单片机上电这个极不稳定的状态之后,单片机大部分IO口默认为高电平。
当单片机的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引脚资源浪费现象;
最后,芯片哥需要指出在项目开发中,工程师需要多方位多角度评估各种不同的方案,权衡方案的得与失之后,才能做出最佳的项目问题解决方案;
本文由【芯片哥】原创撰写,一个只谈电子元器件与芯片的工程师,喜欢就关注芯片哥,和芯片哥一起加油吧
相关问答
51 单片机引脚 输入设置?根据51引脚的定义,对该引脚置1,可以作为输入使用。而51单片机的所有IO引脚,在启动后默认都是1。因此,如之前没有对此引脚进行过置0操作的话,可以直接读该引...
51 单片机 开关接哪个 引脚 ?单片机的开关可以接在任何一个IO引脚上,具体取决于开发者的设计需求。一般情况下,我们会选择具有中断功能的IO引脚,这样可以方便实现一些需要快速响应的操作。...
单片机 是怎样使各I/O口分别置高低电平的?简单的芯片,单端电源供电,一般GPIO输出电平与电源相同复杂的芯片,有专门的IO电源管脚,它可决定IO输出电平的高低,具体可以查看芯片的数据手册至于为什么测量...
单片机 的每一个 引脚 是不是都有一个与它对应的地址呢?1.是的,每一个单片机的引脚都有一个与之对应的地址。2.这是因为单片机是一种集成电路,其中的每一个引脚都有特定的功能和作用。为了能够对引脚进行控制和访...
STC 单片机IO 口状态问题?这个不是写得很清楚了嘛。。。如果给P1M1赋值0X03,给P1M0赋值0X05,那么P1口各个引脚对应的模式就是:P1M1P1M0IO口模式0...这个不是写得很清楚了嘛。。。...
单片机 的管脚是怎么控制高低电平的? - 166****7454 的回答 -...如楼下所述,单片机内部是由一个场效应管控制io的高低电平状态,而场效应管的输入端是一个内部的锁存器,锁存器则直接由cpu控制,因此程序里对io口的操...
stc 单片机 默认 引脚 状态?STC单片机(STC89系列)的默认引脚状态通常是输出高电平(高电平为逻辑1),除非你在程序中对相应引脚进行了初始化和配置。默认情况下,STC单片机的GPIO引脚是输...
单片机 有多少PWM输出的 引脚 - 大小姐77 的回答 - 懂得不是所有的引脚都能PWM输出,是固定几个引脚不是哪,PWM简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。能够有...
st 单片机IO 口类型FT、TC是什么意思?在ST单片机中,IO口类型FT代表浮空输入,TC代表推挽输出。浮空输入(FT)是指输入引脚既不连接到高电平也不连接到低电平,而是处于未定义状态。推挽输出(TC)是...
51 单片机 的各个 引脚 输出高低电平的时候电压和电流是多少?能够带动4个或者是8个ttl负载是什么意思?51单片机输出低电平驱动能力很强,至少可达20mA~50mA。高电平驱动能力很弱,电流在5mA以下。带动4~8个TTL负载是指一个输出类的IO口可与4~8个TTL的输入引脚相连...