关于AVR IO 的驱动能力的介绍
- 格式:pdf
- 大小:125.72 KB
- 文档页数:5
数字芯片的驱动能力详解1.芯片驱动能力基本概念芯片驱动能力,是指在额定电平下的最大输出电流;或者是在额定输出电流下的最大输出电压。
具体解释如下。
当逻辑门输出端是低电平时,灌入逻辑门的电流称为灌电流,灌电流越大,输出端的低电平就越高。
由三极管输出特性曲线也可以看出,灌电流越大,饱和压降越大,低电平越大。
然而,逻辑门的低电平是有一定限制的,它有一个最大值UOLMAX。
在逻辑门工作时,不允许超过这个数值,TTL逻辑门的规范规定UOLMAX ≤0.4。
所以,灌电流有一个上限。
当逻辑门输出端是高电平时,逻辑门输出端的电流是从逻辑门中流出,这个电流称为拉电流。
拉电流越大,输出端的高电平就越低。
这是因为输出级三极管是有内阻的,内阻上的电压降会使输出电压下降。
拉电流越大,输出端的高电平越低。
然而,逻辑门的高电平是有一定限制的,它有一个最小值UOHMIN。
在逻辑门工作时,不允许超过这个数值,TTL逻辑门的规范规定UOHMIN ≥2.4V。
所以,拉电流也有一个上限。
可见,输出端的拉电流和灌电流都有一个上限,否则高电平输出时,拉电流会使输出电平低于UOHMIN;低电平输出时,灌电流会使输出电平高于UOLMAX。
所以,拉电流与灌电流反映了输出驱动能力。
(芯片的拉、灌电流参数值越大,意味着该芯片可以接更多的负载,因为,例如灌电流是负载给的,负载越多,被灌入的电流越大)。
2.怎么通过数字芯片的datasheet看其驱动能力以时钟buffer FCT3807例,下图是从Pericom的FCT3807的datasheet截取的。
当其输出为高电平2.4V时,其输出电流为8mA,也就是拉电流为8mA。
如果输出电流大于8mA,那么其输出电平就低于2.4V了,就不能称其输出高电平,所以可以说FCT3807输出高电平的驱动能力为8mA。
同样道理,FCT3807输出低电平的驱动能力为24mA。
3.怎么通过数字芯片的驱动能力来估算输出信号的过冲等指标仍然以Pericom的FCT3807为例,其输出为高电平时的输出阻抗为:RH= (3.3V – 3V )/ 8mA = 37.5欧姆。
1.指令系统不同.AVR是RISC指令系统,51是CISC指令系统. 然后AVR是一个震荡周期一条指令,而51要12个震荡周期一条指令..
2.2.结构不同AVR可以同时取RAM里的数和FLASH里的数,因为地址总线是分开的,这样使他表现为一个时钟周期执行一条指令,实际上也是分步进行。
了解过了才知道,没啥用处。
3.AVR 外围硬件齐全~ 内部集成了好多东西,IIC SPI EEP PWM等这些,不过51里也都有,51种类很多,有些这些资源也都有
4.指令不同,AVR里有浮点型乘除法专用指令那些,51没有也照样算,说起来有差别,其实指令不同没关系,用C来写,都能实现你的逻辑功能。
要说区别,一般人比较关心的是:
1。
AVR稳定性可能比51好点,大都这么说,AVR有工业级别的,有商业级别的。
2.用AVR比较方便。
程序量比较大,内存比较大,和同级别的51比。
内部带EEP,内部晶振,内部复位都有,基本上单个芯片就可以控制外围器件了,不要扩展。
3.AVR价格现在也可以了。
AVR的价格慢慢的被人接受了,性价比很高。
4.AVR的速度快,IO驱动能力大~ 直接驱动LED,不过很多51也行了。
AVR的特点和集成的资源有些有,但是不全~ 看你怎么用了,如果你只是用来扫描键盘,控制继电器,那用什么都行,主要是考虑你工程应用需要哪些资源。
说没有区别的人也对~ 其实用AVR能做的,用51一样做,用PIC一样做,有啥区别,这些人都是高手啦~ 都是实际搞过来的。
不过他们可能忘了,他们刚开始搞的时候肯定也有这些疑问,等都搞完了才知道,都一样。
事无巨细,AVR学习系列 发布事无巨细,GCC AVR入门详解终于拿到论坛新开的AVR的板子了,虽然只是个样板,自己焊的也很难看,但好歹能用,足够我折腾好些日子了。
希望接下去的短短日子里,能小有收获,即便是最简单的东西也希望跟大家分享。
这是第一篇,我说说AVR的集成开发环境。
也就是常说的IDE(Integrated Development Environment)。
图片比较多,虽然用软件处理过体积,网页可能还是比较慢,还请见谅。
现今世界上的AVR开发环境可以说是百花齐放了,互相当然各有长短,我们看看都有哪些:首当其冲的应该还是IAR,为什么呢,因为当初AVR还在ATMEL胎中酝酿的时候,IAR公司参与了AVR的设计,因此可以认为IAR有更为正统的血液,它最了解AVR,它的编译器编出来的代码应该最优秀。
好比你生的孩子还是你最了解——至少相当长一段时间是这样的。
事实上,IAR for AVR确实展现了这个实力,它的功能确实最为强大,无论是源代码编写还是软件乃至硬件仿真,编译出来的代码也十分优秀。
但是事物总是相对存在的,优点有时就意味着缺点。
IAR功能全面而强悍,代价就是它的软件界面比较复杂,设置选项多,网上的资料也比较少,最要命的是这个软件非常的贵,好吧你说你有破解版,但是破解文件一般并不通用,而且破解方法一般都稍显繁琐。
以上几条,对于新接触AVR的人来说,几乎是迈不过的坎。
接下来是官方的AVR studio,官方出品,但是一般没有人用这个软件来做开发环境,为什么呢,因为它本身不支持C语言,一般我们只用它的仿真功能搭配其他C编译器来用。
第三个,WINAVR,又称GCC AVR。
GCC AVR应该是目前使用率最高的AVR开发环境了,软件体积小,界面简单易用,教程资料很多,代码效率高,最重要的是,它是完全免费的。
但是它几乎没有仿真调试的功能。
所以我首要推荐GCC AVR+AVR studio搭建你的AVR IDE。
AVR单片机I/O的驱动能力在8位单片机中算一流的。
大家应仔细阅读AVR器件手册中关于电气指标和典型特性的内容。
(顺便提一下,有那些8位单片机的器件手册比AVR的多?并且提供非常详细的电气指标?)。
讨论AVR的I/O驱动能力主要指它使用输出工作方式下的输出电流(输出为1时)和灌电流(输出为0时)。
下图,当输出高电平时,在Vcc=5V条件下,一个I/O输出电流可达40mA,但此时输出电压已降到4V左右,输出20mA时,电压降为4.5v,(3v以上,对于CMOS讲,仍为逻辑“1”)。
说明AVR的输出电流最大可为40mA。
当输出低电平时,I/O的倾动能力表现为灌电流。
见图,在Vcc=5V条件下,一个I/O可灌入的电流也可达40mA,但此时输出电压已生到1V左右,灌入20mA时,电压生为0.5v,(0.8v以下,对于CMOS讲,仍为逻辑“0”)。
说明AVR的灌入电流最大可为20mA。
在使用中还要注意的是:虽然IO端口的灌电流(IOL)在稳定的实验条件下,可以达到每路20 mA (VCC = 5V时), 10 mA(VCC = 3V时),但必须遵从:TQFP 及MLF 封装1] 所有端口的总和, 不能超过400 mA.2] 端口A0 - A7, G2, C3 - C7 的灌电流总和,不能超过300 mA.3] 端口C0 - C2, G0 - G1, D0 - D7, XTAL2 的灌电流总和,不能超过150 mA.4] 端口B0 - B7, G3 - G4, E0 - E7 的灌电流总和,不能超过150 mA.5] 端口F0 - F7 的灌电流总和,不能超过200 mA.如果灌电流超出了上面的标准,端口的电压(VOL) 就会超出规范值。
端口不能保证在超出标准的灌电流下正常工作。
-----------------虽然IO端口的驱动电流(IOH)在稳定的实验条件下,可以达到每路20 mA (VCC = 5V时),10 mA (VCC = 3V时),但必须遵从:TQFP 及MLF 封装1] 所有端口的总和, 不能超过400 mA.2] 端口A0 - A7, G2, C3 - C7 的驱动电流总和,不能超过300 mA.3] 端口C0 - C2, G0 - G1, D0 - D7, XTAL2 的驱动电流总和,不能超过150 mA.4] 端口B0 - B7, G3 - G4, E0 - E7 的驱动电流总和,不能超过150 mA.5] 端口F0 - F7 的驱动电流总和,不能超过200 mA.如果驱动电流超出了上面的标准,端口的电压(VOH) 就会超出规范值。
单片机输出低电平的时候,单个的引脚,向引脚灌入的最大电流为 10 mA;一个 8 位的接口(P1、P2 以及 P3),灌入的总电流最大为 15 mA,P0 允许灌入的最大总电流为 26 mA;全部的四个接口所允许的灌电流之和,最大为 71 mA。
但是当引脚输出高电平的时候,它们的“拉电流”能力可就差多了,竟然还不到 1 mA。
为了合理利用IO引脚的低电平能力强的特点,在外接耗电较大的器件(如LED数码显示器、继电器等)的时候,应该优先选用低电平输出来驱动外部器件。
使用IO口输出高电平驱动负载,就是一个错误的选择。
下图是一个直接利用单片机IO引脚驱动LED的电路。
图中P0口使用低电平驱动方式,只要加上约1K的限流电阻即可,甚至不需要常见的P0口上拉电阻。
发光的段,每个引脚灌电流约为3mA,不发光的段,电流为0。
即使各个段全都发光,电流也不超过P0所容许的电流,这是一个合理的驱动方式。
图中P3口使用了高电平驱动方式,这就必须加上上拉电阻来帮助IO接口输出电流。
电阻也采用了1K,发光的段,LED上的电流约为3mA,不发光的段,电流则为5mA,灌入了单片机的IO引脚。
单片机输出低电平的时候,LED不亮,此时VCC通过上拉电阻把电流全部灌进单片机IO口,并且电流是5mA,单片机输出高电平的时候,VCC通过上拉电阻将电流注入到LED中,led亮。
注意到了吗?LED 不发光的时候,上拉电阻给的电流全部灌入单片机的引脚了!如果在一个 8 位的接口,安装了 8 个 1k 的上拉电阻,当单片机都输出低电平的时候,就有 40mA 的电流灌入这个 8 位的接口!如果四个 8 位接口,都加上 1k 的上拉电阻,最大有可能出现32 × 5 = 160mA 的电流,都流入到单片机中!这个数值已经超过了单片机手册上给出的上限。
此时单片机就会出现工作不稳定的现象。
而且这些电流,都是在负载处于无效的状态下出现的,它们都是完全没有用处的电流,只是产生发热、耗电大、电池消耗快...等后果。
A VR的I/O口结构与使用详解其实采用真正双向IO结构的新型MCU很多,常用的有增强型51,PIC,A VR等A VR的IO是真正双向IO结构,由于大部分网友都是从标准51转过来的,受标准51的准双向IO和布尔操作概念影响,没能掌握A VR的IO操作,所以有必要撰文说明一下先简单的回顾一下标准51的准双向IO结构这种准双向IO结构的特点是1 输出结构类似OC门,输出低电平时,内部NMOS导通,驱动能力较强(800uA);输出高电平靠内部上拉电阻,驱动能力弱(60uA)。
2 永远有内部电阻上拉(P0口除外),高电平输出电流能力很弱,所以即使IO口长时间短路到地也不会损坏IO口(同理,IO口低电平输出能力较强,作低电平输出时不能长时间短路到VCC)3 作输入时,因为OC门有"线与"特性,必须把IO口设为高电平(所以按键多为共地接法)4 作输出时,输出低电平可以推动LED(也是很弱的),输出高电平通常需要外接缓冲电路(所以LED多为共阳接法)5 软件模拟OC结构的总线反而比较方便-----例如IIC总线* P0口比较特殊,做外部总线时,是推挽输出,做普通IO时没有内部上拉电阻,所以P0口做按键输入需要外接上拉电阻。
* OC门:三极管的叫集电极开路,场效应管的叫漏极开路,简称开漏输出。
具备"线与"能力,有0得0。
* 为什么设计成输出时高电平弱,低电平强----是考虑了当年流行的TTL器件输入特性A VR的真正双向IO结构就复杂多了,单是控制端口的寄存器也有4个PORTx.DDRx,PINx,SFIOR(PUD位),不过功能也强劲多了作为通用数字I/O 使用时,所有A VR I/O 端口都具有真正的读- 修改- 写功能。
这意味着用SBI 或CBI 指令改变某些管脚的方向( 或者是端口电平、禁止/ 使能上拉电阻) 时不会无意地改变其他管脚的方向( 或者是端口电平、禁止/ 使能上拉电阻)。
关于驱动能力的基本问题我一直都不明白驱动是什么.一般的说驱动一个负载,我想只要你的电压达到了一个阈值,那么就可以驱动这个负载啊,为什么有时候又说驱动能力不够了?为什么说一个没有输出缓冲的op是驱动不了小电阻和大电容负载的了?我直接在这个op后面接个大电容或者一个小电阻负载有什么影响了?当我用运放驱动一个大的mos管的时候为什么要级连几个反向器了,我直接把运放的输出接在这个大mos管上面不行吗?-----------------------------------楼主这个问题提得好,我以我自己的理解来试图做个解答。
首先,所谓的驱动能力,指的是输出电流的能力。
比方说,某型单片机通用IO口在高电平时的最大输出电流是20mA,这个20mA的指标,就表征了该IO口的驱动能力。
其次,如果负载过大(就像楼主所说的小电阻),则负载电流有可能超过其最大输出电流,这时我们说驱动能力不足。
再次,出现驱动能力不足,直接后果是输出电压下降,对逻辑电路来说,就是无法保持其高电平,以致出现逻辑混乱,不能实现预期的效果。
这种现象一般是不允许出现的。
------------------------------------因为mos管是有内阻的,每个mos管可以提供的最大电流是有限的.小的mos管提供小电流,大mos管可以提供大电流.楼主问题中说"我想只要你的电压达到了一个阈值,那么就可以驱动这个负载啊", 关键是当负载太大(即电阻太小,电容太大),超出了输出管的驱动能力时,输出的电压就会被拉下来,达不到gnd-vdd的变化范围.极限情况:r无限小,c无限大(gnd),那输出就没有信号变化了!关于51单片机P0口的驱动能力P0是个漏极开路接口,让它工作在灌电流状态下驱动LED是没有问题的.即:VCC>限流电阻>LED>P0.灌电流:IO口为低电平的时候,电流从IO口外面"灌"进单片机相反的就是 "拉电流" IO口为高电平的时候,电流从单片机流出去给负载供电。
关于AVR I/O 的驱动能力的介绍作者:马潮老师 / 整理:armok / 2005-01-17/ AVR单片机I/O的驱动能力在8位单片机中算一流的。
大家应仔细阅读AVR器件手册中关于电气指标和典型特性的内容。
(顺便提一下,有那些8位单片机的器件手册比AVR的多?并且提供非常详细的电气指标?)。
讨论AVR的I/O驱动能力主要指它使用输出工作方式下的输出电流(输出为1时)和灌电流(输出为0时)。
参考下图,当输出高电平时,在Vcc=5V条件下,一个I/O输出电流可达40mA,但此时输出电压已降到4V左右,输出20mA时,电压降为4.5v,(3v以上,对于CMOS讲,仍为逻辑“1”)。
说明AVR的输出电流最大可为40mA。
当输出低电平时,I/O的倾动能力表现为灌电流。
见图,在Vcc=5V条件下,一个I/O可灌入的电流也可达40mA,但此时输出电压已生到1V左右,灌入20mA 时,电压生为0.5v,(0.8v以下,对于CMOS讲,仍为逻辑“0”)。
说明AVR的灌入电流最大可为20mA。
在使用中还要注意的是:3. Although each I/O port can sink more than the test conditions (20 mA at VCC = 5V, 10 mA at VCC = 3V) under steady stateconditions (non-transient), the following must be observed: TQFP and MLF Package:1] The sum of all IOL, for all ports, should not exceed 400 mA.2] The sum of all IOL, for ports A0 - A7, G2, C3 - C7 should not exceed 300 mA.3] The sum of all IOL, for ports C0 - C2, G0 - G1, D0 - D7, XTAL2 should not exceed 150 mA.4] The sum of all IOL, for ports B0 - B7, G3 - G4, E0 - E7 should not exceed 150 mA.5] The sum of all IOL, for ports F0 - F7, should not exceed 200 mA.If IOL exceeds the test condition, VOL may exceed the related specification. Pins are not guaranteed to sink current greaterthan the listed test condition.4. Although each I/O port can source more than the test conditions (20 mA at Vcc = 5V, 10 mA at Vcc = 3V) under steady stateconditions (non-transient), the following must be observed: TQFP and MLF Package:1] The sum of all IOH, for all ports, should not exceed 400 mA.2] The sum of all IOH, for ports A0 - A7, G2, C3 - C7 should not exceed 300 mA.3] The sum of all IOH, for ports C0 - C2, G0 - G1, D0 - D7, XTAL2 should not exceed 150 mA.4] The sum of all IOH, for ports B0 - B7, G3 - G4, E0 - E7 should not exceed 150 mA.5] The sum of all IOH, for ports F0 - F7, should not exceed 200 mA.If IOH exceeds the test condition, VOH may exceed the related specification. Pins are not guaranteed to source current greater than the listed test condition.此段大家自己读,主要是说整个PORT口,以及整个芯片电流的限制。
不能简单的计算:一个I/O口输出20mA,一片M128有近50个I/O口,那么20*50=1000mA,芯片烧了。
当AVR的I/O工作于输入方式时,其主要是对外部的实际电平进行检测,不应该输出电流,而灌电流应该越小越好(对外部无影响)。
在下图中看出:当外部引脚电平为0时,I/O通过内部的上拉电阻输出120uA 的弱电流;外部引脚电平为5时,I/O不提供电流。
这种方式能够精确的检测出外部引脚的逻辑电平。
试想,当外部引脚对地串入一个5K电阻,如果I/O输出20mA电流,那么引脚上真正的电压为多少,如何测的准?AVR的I/O特性吸收了个种单片机(如PIC)的优点,是非常有特色和优点的。
没有“修练”到一定的层次,是不能体会到的。
我在我的许多帖子中,多次强调不要浮燥,要踏踏实实、认真学习,打好基础,仔细读手册。
但是还是有许多人往往提出一些没有经过认真思考和学习后,甚至是无边际的问题,甚至是“正确回答”。
一个硬件工程师,首先要有过硬的硬件功底,模拟、逻辑、数字、时序...,十八般武器,样样要精通。
看网上一些问题和以及回答,我感到有些人连基本的欧姆定律都不懂(指不会分析和设计应用,不是指背出公式),但忙于制作MP3。
试想,你买一块芯片,照别人的电路搭好线路,把别人的程序写入后,做出了MP3,可你到低真正学到手的是什么?“高级傻瓜”型的工程师越来越多,这也正是外国人所希望的。
作为教师,我为国内大学这些年在电子专业上教育的失败感到痛心。
看看国外的大学生的学习情况和能力(/courses/ee476/),我们有和能力和他们竞争!?对不起,又跑题了。
留下几个思考题。
在“马潮老师的专栏:AVR串口多机通讯模式的问题 ”的多机通信原理图中(该简单系统已连续工作两天了):1. 为什么在与4个下位机通信的接口中,串入D9-D12四个二极管?2. 主机电路中的U2部分电路的作用是什么?为什么接入INT0,而不是RESET?3. 每个下位机使用M16倾动16个LED数码管,如何估算M16的倾动能力(M16能点亮全部的LED而不发热烧毁)?4. 电阻R2-R8起的作用是什么(好多高校老师的设计中,不使用R2-R8)?5. 16个LED数码管采用何种驱动方式?如何设计“同时”点亮16个LED,而且亮度均匀,无闪烁,无拖尾。
如何调整LED的亮度?6. 如何使用下位机的电路实现一个简易的时钟(年-月-日时:分:秒),带闹钟设置和时间设置功能。
如何估算你的时钟精度?7. 5个按键直接接在I/O口上,外部没有吊高电阻,可靠吗?8. 使用其中两个按键作为“+”和“-”键,用于输入数据设置时间和日期。
其特性为:按下“+”键,在1秒内放开,表示加1,按下“+”键后不放开,超过1秒后每隔0.5秒加10,直到按键放开。
如何设计程序实现?9. 按键按下要消抖动处理,要判别按下的时间长短等,但不管按键按下多长时间,LED必须正常显示,不能有抖动和闪烁,更不能熄灭。
10. 你认为电路的硬件设计有什么不合理和改进的地方(任何方面)?原文出处: 技术论坛,欢迎参加讨论armok(阿莫)将上面的英文翻译如下:虽然 IO端口的灌电流(IOL)在稳定的实验条件下,可以达到每路20 mA (VCC = 5V时), 10 mA (VCC = 3V 时),但必须遵从:TQFP 及 MLF 封装1] 所有端口的总和, 不能超过 400 mA.2] 端口 A0 - A7, G2, C3 - C7 的灌电流总和,不能超过 300 mA.3] 端口 C0 - C2, G0 - G1, D0 - D7, XTAL2 的灌电流总和,不能超过 150 mA.4] 端口 B0 - B7, G3 - G4, E0 - E7 的灌电流总和,不能超过 150 mA.5] 端口 F0 - F7 的灌电流总和,不能超过 200 mA.如果灌电流超出了上面的标准,端口的电压(VOL) 就会超出规范值。
端口不能保证在超出标准的灌电流下正常工作。
-----------------虽然 IO端口的驱动电流(IOH)在稳定的实验条件下,可以达到每路20 mA (VCC = 5V时), 10 mA (VCC = 3V 时),但必须遵从:TQFP 及 MLF 封装1] 所有端口的总和, 不能超过 400 mA.2] 端口 A0 - A7, G2, C3 - C7 的驱动电流总和,不能超过 300 mA.3] 端口 C0 - C2, G0 - G1, D0 - D7, XTAL2 的驱动电流总和,不能超过 150 mA.4] 端口 B0 - B7, G3 - G4, E0 - E7 的驱动电流总和,不能超过 150 mA.5] 端口 F0 - F7 的驱动电流总和,不能超过 200 mA.如果驱动电流超出了上面的标准,端口的电压(VOH) 就会超出规范值。
端口不能保证在超出标准的驱动电流下正常工作。