随着晶体管变得越来越小,工作电压也越来越低。在过去的嵌入式系统中应用最普遍的就是5V电源。但典型嵌入式系统中的大多数元器件也转而采用更低的电源电压,以充分利用行业最新趋势带来的好处。另一方面,系统中的某些元器件需要更长的时间才能完成转变。因此,在转变过程中,系统中的某些元器件可能需要不同的供电电压(如,在3.3V系统中存在5V器件,反之亦然)。这给嵌入式设计人员带来了一些设计方面的挑战。一种解决方案是采用逻辑电平转换器,但采用电平转换器并非成本效益最高的解决方案。本文将讨论3.3V单片机(MCU)与5V外设接口的一些低成本设计思路。
如果要将5V设计转为3.3V,第一件事就是寻求电源为3.3V但其他性能相同的单片机。大多数情况下,都能找到支持3.3V电压的同等器件。而且,基本上,3.3V器件的成本与之持平,甚至更低。如果找不到可运行在3.3V条件下的替代器件,那么就必须采用双电源了。本文的重点就是讨论采用双电源供电的设计。
对于5V和3V器件共存的设计,首先必须理解逻辑电平和输入/输出结构。对于输入,需要考虑VIH(被检测为高输入的电压)和VIL(被检测为低输入的电压)。将3.3V系统连接到5V器件时,VIH 通常会比VIL带来更大的问题。当然,这并不是说可以忽略VIL 参数。驱动器件必须输出高于接收器件VIH(min)值的电压才能正确的逻辑检测。但是,如果电压太高也不好。
几乎所有CMOS器件在所有I/O引脚都采用了某种形式的ESD。实现ESD最常见的方法是采用箝位二极管将这些引脚连接到Vdd 和 Vss。这通常意味着最大输入电压为Vdd +0.3V,最小输入电压为Vss - 0.3V。如果电压超出这一范围,二极管就会导通。如果输入端没有电阻,就会导致这些二极管通过极大电流,并有可能造成器件锁死。这肯定不是所希望发生的。如果电压足够高(如3.3V系统中的5V输入),那么电阻必须非常大才能箝位电流处于安全范围内。如果电阻足够大,那么由于引脚电容和PCB布线而引起的低输入容抗可能就会变得重要起来。RC时间会导致信号延迟。许多生产商都不要使用箝位二极管实现ESD。因此,采用电阻并非将5V信号馈送到3.3V器件的最好方法。
与输入电阻相比,更好的方法是采用电阻分压器将5V信号转换到3.3V输入范围内(见图2)。电阻值的选择必须考虑到所有公差。计算时可参考下面的公式:
另一种更简单的解决方案是采用兼容TTL输入的5V器件。TTL器件的VIH(min)是2.1V(Vdd为5V时)。在大负载值条件下,大多数3.3V器件可以支持更高的VOH电平。此时,解决方案是将外设器件更换为兼容TTL输入的同等器件。
如果正在使用必须采用5V供电的标准数字逻辑系列器件,那么可以寻找支持TTL输入的同等器件。(如,可使用74HCT 系列代替74HC 系列。)如果需要使用电平转换器,那么可使用"HCT"或"VHCT"型的数字缓冲器。在大多数情况下,这一TTL输入解决方案都比采用专用电平转换器便宜。