AI8051的IO端口具有多种工作模式,它的输出电压能力与它的工作模式有关系。具体驱动能力如何?下面通过外部端口电阻来测量一下它的输出电压能力。
测量方法很简单,测量的IO口输出高电平。利用一个可编程电阻箱作为负载。测量每个输出电阻负载下的输出电压。然后通过电阻分压拟合,获得IO输出内阻的平均电阻。下面先测量在 IO 口为 推挽输出状态下,对应的输出电阻。
负载电阻从 100欧姆变化到 10k欧姆,输出电压随着负载电阻增加而上升。不过,有一个非常奇怪的现象,那就是当负载电阻超过 1k欧姆之后,输出电压居然出现了波动。这就不太符合常理了。利用电阻串联分压模型,可以获得 AI8051U的 IO 端口的内阻为46.46欧姆。
▲ 图1.2.1 不同负载电阻对应的输出电压
▲ 图1.2.2 曲线拟合结果
对于刚才测量结果中,输出电压波动的问题,有可能是因为电路板上LED闪烁造成的。下面,将LED关闭,查看一下输出电压测量结果。果然不出所料,输出电压非常平稳了。这是对比了 LED闪烁和关闭情况下,输出负载电压的情况。由此可见,当其他端口驱动LED点亮的时候,会降低另外端口的电压。
▲ 图1.2.3 关闭LED之后的测量结果
▲ 图1.2.4 对比LED开和关闭之后的测量结果
设置输出为准双向端口,测量的结果呈现两个阶段,在负载电阻小于 82k欧姆之前,电压随着负载电阻线性上升,之后,电压突然上升到 4.6V以上。由此可以看到,在此状态下,IO端口不是一个线性电阻的特性。根据测量的结果,可以计算出,当输出电压小于1.327V之前,输出为一个恒流特性,输出的恒流大约为 16.2微安。在AI8051数据手册中给出的这个弱恒流电流大约为 18微安。
● 恒流参数:
电阻
:81.8kΩ
电压
:1.327V
恒流
:16.2uA
▲ 图1.3.1 不同负载下的输出电压
如何来解释输出电压有突变,也就是当输出电压超过1.3V之后,输出电压突然上升到 5V左右。根据端口电路来看,当端口电压超过输入反相器的阈值电压,这个反相器会输出高电平,使得上面弱电流三极管导通,进而使得输出电压进一步上升,这是一个正反馈过程,所以会出现输出电压突变的情况。
下面,打开端口上的上拉电阻,此时,除了原来的弱的上拉三极管之外,通过一个MOS管增加一个上拉电阻。
通过测量结果来看,在输出电压小于1V之前,输出电压随着输出电阻呈现一个线性上升的结果。估计这是由于原来弱上拉电阻所产生的恒流影响的。后面则呈现一个分压电阻的特性。根据拟合结果,上拉电阻大约为 2.56k欧姆,内部电压为5.54V,显然与实际不符合。这是由于前面包括有弱上拉三极管电流的影响。
▲ 图1.3.2 测量结果
下面设置端口为 漏极开路模式,此时,其他的上拉电流都关闭,只有上拉电阻起作用。可以看到输出电压与负载电阻之间就非常接近电阻分压模式。不过还是有差异。拟合内阻为 3.34k欧姆。
▲ 图1.3.3 在OC模式下,打开上拉电阻对应的IO负载电压曲线
将单片机的工作电压调整到3.3V。重新通过负载电阻来测量上拉电阻的大小,测量结果显示,内部上拉电阻拟合阻值变化到5.7k欧姆左右。
▲ 图1.3.4 在3.3V下,上拉电阻与负载之间的分压
本文测试了 AI8051U的IO端口的负载特性。它的输出内阻根据不同的模式和工作电压各不相同。如果工作在推挽输出,上拉晶体管的导通内阻大约为 46欧姆。在准双向模式下,弱上拉MOS管提供了 18微安的恒流输出。上拉电阻在5V工作电压下大约为3.3k欧姆,3.3V工作电压下,为5.7k欧姆。不过很奇怪的是,虽然 AI8051U的IO端口还有下拉电阻,但是下拉电阻对应的寄存器一直无法访问。也就是在他的头文件中没有定义。也许是自己所使用的头文件不是最新版本。