GPIO输入和输出

参考视频:2.1 [GPIO]4种输出模式_哔哩哔哩_bilibili

输出:通过写0或者写1,控制引脚输出低电压或高电压。

输入:通过读取引脚是0还是1,判断引脚输入的是高电压还是低电压。

输出

推挽开漏
通用通用输出推挽通用输出开漏
复用复用输出推挽复用输出开漏

输出主要和下半部分相关,I/O引脚之所以可以向外输出电压,就是因为这两个MOS管。可以把这两个MOS管直接想象成两个开关。

推挽模式

P-MOS和N-MOS交替导通,写0输出低,写1输出高。

  • 写0的时候,就是P-MOS管断开,N-MOS管导通
  • 写1的时候,就是P-MOS管导通,N-MOS管断开

开漏模式

P-MOS管断开,控制N-MOS通断。写0输出低,写1输出高阻抗。

  • 写0的时候,N-MOS管导通,I/O引脚低电压
  • 写1的时候,N-MOS管断开,I/O引脚高阻态

写1的时候,因为上下都断开了,所以I/O引脚的电流为0,由欧姆定律,电流为0,那电阻就无穷大。

通用和复用

通用就是通过编程的方式,命令CPU向I/O引脚写0或写1,然后写的0还是1会直接控制后面两个MOS管的通还是断,引脚就可以对应的输出高电压、低电压或者是高阻抗。

复用就是使用其它片上外设来控制引脚。

IO最大输出速度

IO最大输出速度:向IO交替写0和1且输出不失真的最快速度。

一开始写0和1的速度慢,每秒写10次,逐步加快到100次,1000次,最后在10万次的时候,发现波形不能正常输出了,10万次就是I/O引脚的最大输出速度。

上升时间、下降时间和保持时间

  • 理想的情况是向I/O引脚写1,电压会瞬间从0V变成3.3V;当向I/O引脚写0的时候,电压会从3.3V立刻变为0。
  • 但实际情况会有一个上升的过程,写1的时候,电压会经历一段时间缓慢的上升,从0到3.3V,称为上升时间;当写0之后,电压会从3.3V缓慢的下降到0V,称为下降时间;中间输出有效电压的时间称为保持时间。

什么限制了IO的最大输出速度

就是上升时间和下降时间的长短。

当以比较慢的速度交替写0和写1,因为写的比较慢,所以上升时间和下降时间两个斜坡之间的距离比较长,所以中间保持时间就比较长,中间保持时间就是输出有效电压的时间。

加快写0和写1的速度,上升时间和下降时间两个斜坡之间的距离变小了,中间保持时间的距离变短了,输出有效电压的时间变短了。

再加快写0和写1的速度,上升沿的斜坡和下降沿的斜坡靠在了一起,中间的保持时间变成了0,完全不能向外输出有效的电压了,这就证明写0和写1的速度已经超过了I/O引脚的最大输出速度了。这时可以通过减小上升时间和下降时间,就又能输出有效的波形了。

最大输出速度应该如何选择

低速:2MHz;中速:10MHz;高速:50MHz。

选取满足要求的最小值,过于陡峭得边沿会增加耗电、并引入EMI问题。

输入

红色上面的就是输入部分。当只闭合上面的开关,对应的模式就是叫输入上拉;当只闭合下面的开关,对应的模式就是输入下拉;当两个开关都断开,I/O引脚就悬空了,对应的模式就是输入浮空

把外部的信号通过引脚输入到单片机当中,经过这一部分的电路处理之后,就把外部输入引脚的高低电压转换成0和1这样的数字。如果通过引脚输入的是低电压,比如是0V,产生的数字就是0;如果通过引脚输入的是高电压,比如是3.3V,得到的就是数字1。然后输入的数字会保存到输入数据寄存器里面。然后可以命令CPU读取输入数据寄存器里面的值,通过判断0还是1,就可以知道输入的是高电压还是低电压。

保护二极管

输入的外部电压过高或过低都会造成损害,所以保护二极管的作用就是把输入的电压限制在一定范围内。

保护二极管:把输入电压限制在一定范围内 VSS-0.7V ~ Vdd+0.7V。

比如输入电压大于4V,因为Vdd是3.3V,上面保护二极管的电压就大于0.7V了,而保护二极管的导通电压是0.7V,此时二极管导通,4V电压就不会流到后面电路里面。

上拉电阻和下拉电阻

施密特触发器是输入阻抗无穷大,可以把它等效于一个大电阻,阻值无穷大,等效的就是右边那张图。

不考虑上拉电阻和下拉电阻。当引脚输入0V时,CPU读出的就是0;当输入引脚为3.3V,CPU读出的就是1;当引脚是悬空的时候,因为施密特触发器是输入阻抗无穷大,所以上面就是一根孤零零的导线,CPU读到的电压就一会是0一会是1。

上拉电阻:

输入0V和3.3V都没有什么问题。当引脚悬空,就相当于上拉电阻和阻值无穷大的电阻串联了的电路图,上拉电阻分得的电压为0V,CPU读到的就是1。

上拉电阻:当引脚悬空时,产生一个默认的高电压。

下拉电阻:当引脚悬空时,产生一个默认的低电压。

施密特触发器

把输入的高低电压转换成1和0这样的数字。

有两个门限电压VTH和VTL,只有当高于VTH或者低于VTL时,输出电压才会发生变化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值