找回密码
 请使用中文注册

手机号码,快捷登录

手机号码,快捷登录

查看: 698|回复: 0

电子技术(十八)——MCU的IO口

[复制链接]
阅读字号:

1374

主题

50

回帖

2万

积分

超级版主

积分
27551
发表于 2024-1-6 17:13:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?请使用中文注册

×
一、概述
CPU包括运算器和控制器,运算器主要包括算术运算、逻辑运算和位运算,控制逻辑包括定时和控制、指令寄存器、译码器、地址指针和程序计数器PC。CPU外还有时钟电路、ROM、RAM、定时/计数器、并行IO、串行接口、中断系统。
这些IO口实际上就是GPIO,它是单片机内的特殊功能寄存器SFR里面的4个8bit的寄存器。IO可以作为输出或输入。IO作为输出时自带锁存功能,也就是写1后,输出一直是1(锁存器上的值),引脚上可能被外部电路影响而不是1了。
单片机4组IO口,P0输出时需要上拉;P1/P2/P3是准双向口。有些口还可以作为数据或地址输入输出口。P1只能作为双向口,P0扩展数据和地址,P2扩展地址高8位,P3有第二特殊功能。读引脚时需要先想端口写1,把T2截止,这样读到才是外部真实电平。
双向IO口/准双向IO口的区别
标准双向IO口的特点有两条:
1、在输出模式下,可以输出高低电平;
2、在输入模式下,如果没有接外部电路,应呈现高阻态。
对于51单片机的P1、P2、P3口,由于有内部上拉电阻,输入模式下不可能出现高阻态,所以称之为准双向IO口。而P0口作为IO口工作时,如果不加上拉电阻就无法输出高电平;而加了上拉电阻,输入时又不会出现高阻态,所以也是准双向IO口。
单片机的P0口如果工作在第二功能状态下,则是双向IO口。当P0口工作在第二功能状态下,两个晶体管都可以工作。如果上面的晶体管断开,下面的导通,就输出低电平;反之上面的导通下面的断开,就输出高电平并且不需要上拉电阻;如果两个晶体管都断开,则可以作为输入,并且在没有外界电路时呈现高阻态。所以是双向IO口。
注:灌电流比拉电流能通过更大的电流;点亮LED一般用灌电流方式。
二、双向口与准双向口【来源“芋头莎莎”】
2.1P0口双向八位三态IO

bbc1e44e0411f6009896ad5d5bcc1305.png
这是P0口内部结构图,首先P0口的上面那个三极管D0是在进扩展存储器或扩展总线时使用MOVX指令时才会控制它的导通和截止,在不用此指令时都是截止的。也就是我们平常使用如:P0_1=0 P0_1=1这些语句时控制的都是下面那个三极管D1。
当P0=0时,等效图是中间的,三极管D1导通,P0点的电位为0。
而当P0=1时,等效图是右边的,三极管D1截止,而上面的三极管D0始终是截止的,这样P0点就等效于悬空了,
所以要外接上拉电阻,才能有高电平。
所以,当你置1时,由于内部没有上拉电阻,所以为高组态,不能正常输出高、低(高组态输出的电平不确定)
2.2P1口准双向IO
内带上拉电阻

51ee6b5ccc236db240f990255770fa0e.png
当P1=0时,三极管D导通,见中间的等效图
当发出P1=1的指令后,三极管D截止,见右边等效
那为什么叫准双向IO,因为当IO口要设置为输入时,需要先想该端口写“1”,单片机才能正确读取外部的高低电平。
也就是要现有个准备过程,所以叫“准双向3”.P2 P3也是。
双向口与准双向口的区别主要是:准双向口I/O口操作时做数据输入时需要对其置1,否则若前一位为低电平,后一位输入的电平为高则MOS管拉不起来导致出错。而双向口则不需要做此动作,因为双向口有悬浮态。
准双向口就是做输入用的时候要有向锁存器写1的这个准备动作,所以叫准双向口。
真正的双向口不需要任何预操作可直接读入读出。
1:准双向一般只能用于数字输入输出,输入时为弱上拉状态(约50K上拉),端口只有两种状态:高或低。
2:双向除用于数字输入输出外还可用于模拟输入输出,模拟输入时端口通过方向控制设置成为高阻输入状态。双向端口有三种状态:高、低或高阻
三、常用的用法
推挽输出:可以输出较大电流,适合驱动小灯、蜂鸣器等
高阻输入:可读可写,读取IO口值等操作
开漏: 方便外设操作,IIC,SPI等配置
准双向口:读之前要写,写之前要读,类似STM32的清除串口状态,读一次才能把寄存器清零。
上拉
上拉是指单片机的引脚通过电阻接VCC,这样可以把这个引脚的电平固定为高电平。
为什么不直接接到VCC?
如果直接接到VCC,万一你把引脚配置为输出模式,输出低电平,就相当于VCC和GND接在一起了,单片机就烧了啊!如果有一个限流电阻,那么即使配置为输出低电平了,也不会烧芯片了。为了降低功耗(减少耗电,发热),这个电阻一般比较大。例如:CC2530的上拉和下拉电阻都是20K,那么电流为\(3.3V/20K=16.5uA\)。
下拉
下拉的情况和上拉的相反,是为了把引脚固定为低电平,要有下拉电阻也是为了防止误配置导致烧掉芯片。
三态
三态又称为高阻态,简单理解就是电平的高低由这根线上的外部电路决定,当外部电路为高电平的时候,它也是高电平;当外部电路为低电平的时候,它也是低电平;当外部电路为高阻态的时候,它就是高阻态的,状态完全和外部电路一样
【待补充】
四、MCU引脚悬空时处理
输出引脚 在 不用时候 悬空就可以 NC输入引脚,和 输入输出引脚 在不使用是 ,不能悬空,需要接上0 或 +5V 的固定电压。 不一定是+5,这里代表 表示1 的电压。



您需要登录后才可以回帖 登录 | 请使用中文注册

本版积分规则

QQ|Archiver|手机版|家电维修论坛 ( 蜀ICP备19011473号-4 川公网安备51102502000164号 )

GMT+8, 2025-6-19 13:38 , Processed in 0.199598 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表