STM32的IO端口输出电流与工作电流

文章详细描述了如何通过实验验证STM32单片机在不同负载电阻下的IO口输出电流与其工作电流的关系,结果显示两者基本对应,尤其是在高电平输出时。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

STM32单片机IO口电流

 

01 STM32IO端口输出电流


一、前言

  这个STM32单片机上午用于测试IO端口输出电阻,  有一个问题, 那就是当单片机IO端口设置为 高电平的时候,  它的IO输出的电流是否与单片机工作电流的增加是一一对应的呢? 下面通过测试来验证一下。

GM1706702085_1920_1080.MPG|_-3

  这是测量电路示意图。  测试的单片机为 STM32F103, 它的PB7 IO端口设置为输出, 并置为高电平。  利用一个可变电阻箱 QR10 作为它的负载, 使用数字万用表DM3068测试负载QR10上的电压, 进而可以计算出IO口输出电流。  直流电源 DH1766给单片机提供3.3V工作电压,  并可以回读到单片机的工作电流。  通过编程, 设置负载QR10不同的电阻,  可以对比 IO 不同的输出电流、电压下, 对应的工作电流的变化, 这样便可以对比IO口的输出电流与工作电流的变化是对应的。

GM1706702486_1920_1080.MPG|_-8

二、测量结果

  单片机工作电压为 3.3V, 静态工作电流为 34mA。 IO口空载电压为 3.253V。 通过编程设置QR10 电阻箱电阻从 10欧姆变化到 250欧姆。  测量不同负载电阻下对应的输出电压, 通过这个电压可以计算出 IO 端口输出电流。 在这个过程, 通过 DH1766也读取对应的单片机工作电流的变化。

GM1706701283_1920_1080.MPG|_-3

静态工作条件:
工作电流:34mA
工作电压:3.295V
空载IO电压:3.253V

▲ 图1.2.1 不同负载电阻与负载电压

▲ 图1.2.1 不同负载电阻与负载电压

rdim=[10.0000,15.0000,20.0000,25.0000,30.0000,35.0000,40.0000,45.0000,50.0000,55.0000,60.0000,65.0000,70.0000,75.0000,80.0000,85.0000,90.0000,95.0000,100.0000,105.0000,110.0000,115.0000,120.0000,125.0000,130.0000,135.0000,140.0000,145.0000,150.0000,155.0000,160.0000,165.0000,170.0000,175.0000,180.0000,185.0000,190.0000,195.0000,200.0000,205.0000,210.0000,215.0000,220.0000,225.0000,230.0000,235.0000,240.0000,245.0000]
vdim=[0.4838,0.7195,0.9516,1.1740,1.3828,1.5722,1.7355,1.8778,1.9993,2.0989,2.1872,2.2613,2.3275,2.3854,2.4360,2.4816,2.5223,2.5588,2.5938,2.6199,2.6502,2.6754,2.6988,2.7200,2.7395,2.7578,2.7750,2.7909,2.8059,2.8178,2.8329,2.8426,2.8542,2.8652,2.8758,2.8857,2.8937,2.9026,2.9116,2.9223,2.9300,2.9374,2.9445,2.9511,2.9575,2.9638,2.9698,2.9756]
idim=[0.0821,0.0821,0.0817,0.0807,0.0801,0.0799,0.0780,0.0764,0.0747,0.0728,0.0711,0.0694,0.0678,0.0664,0.0649,0.0638,0.0623,0.0610,0.0601,0.0591,0.0593,0.0583,0.0573,0.0567,0.0559,0.0552,0.0547,0.0539,0.0531,0.0525,0.0521,0.0516,0.0511,0.0508,0.0502,0.0498,0.0506,0.0500,0.0497,0.0491,0.0489,0.0487,0.0481,0.0479,0.0475,0.0472,0.0470,0.0465]
#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# TEST1.PY                     -- by Dr. ZhuoQing 2024-01-31
#
# Note:
#============================================================

from headm import *
from tsmodule.tsvisa        import *
import serial
from _ast import Or
from serial.serialutil import SerialException


#------------------------------------------------------------
sport = serial.Serial()
sport.baudrate = 115200
sport.timeout = 0.05
try:
    sport.port = 'COM5'
except:
    printf('Set sport port COM5 error. ')

try:
    sport.open()
except serial.serialutil.SerialException:
    printf('Open sport port COM5 error.')
else:
    printf('Open sport port COM5 Ok.')
#------------------------------------------------------------
dm3068open()

rdim = list(range(10, 250, 5))
printf(rdim)

vdim = []
idim = []

for r in rdim:
    sport.write(b'AT+USER.SP=%5.1f\n'%r)
    time.sleep(1.5)

    call = dh1766call1()
    i = call[2]
    v = dm3068vdc()

    vdim.append(v)
    idim.append(i)
    printff(r, i, v)

tspsave('measure', rdim=rdim, vdim=vdim, idim=idim)

plt.plot(rdim, vdim, lw=3)

plt.xlabel("R(mega)")
plt.ylabel("Voltage(V)")
plt.grid(True)
plt.tight_layout()
plt.show()







#------------------------------------------------------------
#        END OF FILE : TEST1.PY
#============================================================

  通过负载电压和电阻计算出 IO端口输出电流。 绘制 IO 输出电流与输出电压。 可以看到随着输出电流增加, IO端口电压也下降。 特别是当输出电流超过40mA 之后, 输出电压下降速度急剧上升。   这是在不同负载电阻下, 绘制出 IO 端口输出电流 以及 单片机工作电流增加量。 可以看到单片机工作电流的增加与IO口输出电流之间基本上是符合的。  之所以出现这些差异, 一部分原因 是因为 DH1766 回读到输出电流具有一定的误差。  由此也验证了单片机IO端口为高电平时, 输出的电流等于工作电流的增加。
GM1706701852_1920_1080.MPG|_-5

▲ 图1.2.2 不同输出电流对应输出电压

▲ 图1.2.2 不同输出电流对应输出电压

▲ 图1.2.3 IO输出电流与工作电流增加

▲ 图1.2.3 IO输出电流与工作电流增加

#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# TEST2.PY                     -- by Dr. ZhuoQing 2024-01-31
#
# Note:
#============================================================

from headm import *

rdim, vdim, idim = tspload('measure', 'rdim', 'vdim', 'idim')
I0 = 35
iodim = [v/r*1e3 for v,r in zip(vdim, rdim)]
didim = [i*1e3-I0 for i in idim]

plt.plot(rdim, iodim, lw=3, label='IO 输出电流')
plt.plot(rdim, didim, lw=3, label='工作电流增加')

plt.xlabel("R(omega)")
plt.ylabel("Current(mA)")
plt.grid(True)
plt.legend(loc="upper right")
plt.tight_layout()
plt.show()



#------------------------------------------------------------
'''
plt. plot(iodim, vdim, lw=3)

plt.xlabel("IO Current(mA)")
plt.ylabel("IO Voltage(V)")
plt.grid(True)
plt.tight_layout()
plt.show()
'''
#------------------------------------------------------------



#------------------------------------------------------------
#        END OF FILE : TEST2.PY
#============================================================

 

  结 ※


  文测试了单片机在不同的IO电阻负载下,  它的IO端口输出的电流,  与单片机的工作电流之间的关系。  数值上显示, IO口在高电平下输出的电流与单片机工作电流的增加是对应着的。 这也给后面对单片机IO口输出电流的测量提供了实验基础。

GM1706702661_1920_1080.MPG|_-5


■ 相关文献链接:

● 相关图表链接:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卓晴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值