对STM32的GPIO口的学习及讲解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、GPIO常用模式
高阻输入模式、推挽输出模式和开漏输出模式;
二、常用IO口模式的分析及讲解
a 高阻输入
凡是挂在总线上的的寄存器或存储器等设备,他的输出和输入端不仅能呈现0/1状态,还可以呈现高阻态,此时可以理解被隔离,对总线的状态不起任何作用,总线可以做其他工作,三态控制器都有一个控制端,可以认为控制其工作模式。
上述是管脚的情况,其他管脚和上述类似。
输入模式就是一个带有施密特触发输入的三态缓冲器,有很高的输入阻抗。
施密特的作用是能将缓慢变化的或者畸形的输入脉冲波形整形成理想的矩形脉冲信号。
在执行GPIO读操作时,在脉冲Read Pulse的作用下会把管脚Pin的当前电平状态读到内部的总线上。
在不执行读操作时,外部管脚和内部总线互相隔离,互补干扰
b 推挽输出模式
推挽输出:在功率放大器电路中大量采用推挽放大电路,电路中的三极管够成放大电路,两只三级干交替工作在放大状态,这样把正弦波的两个半周期全部处在放大状态,最后在Pin 的负载上合成一个完整的放大波形。
推挽模式就是“把原来的数据上拉的意思”,通过内部小心好的变化来控制VDD的导通和截止,从而起到小信号控制大信号的作用,也就好像放大了源信号一样。
GPIO管脚在脉冲Write Pulse的作用下,内部数据被锁存在Q/Q'上面,TI和T2构成COMS反相器,在T1和T2低阻抗的情况下实现推挽输出内部电平的功能,但是T1和T2不能同时导通,否则用以烧坏反相器传输门。
在推挽模式下,GPIO还有回读功能,实现该功能的是三态门U2,在执行回读功能时,读到的是管脚的输出锁存状态,而不是Pin的状态,这一点切记。
c 开漏输出模式
推挽输出和推挽输出结构一样,只是断开了p-mos管,连接n-mos管。
内不是1的时候,输出低电平,外部引脚直接和GND连接。
内不是0的时候,n-mos管不截止(通常需要外接上拉电阻才能真正以上输出高电平1,这里和mcs51单片机的P0口结构很类似)。
回读功能仍和推挽输出模式一样,读回来的是锁存器的状态不是外部Pin的状态,这一点还是的非常重要的。
开漏输出能够方便的实现‘线与’逻辑功能,不需要缓冲隔离。
开漏输出的另一个重要应用是可以实现不同逻辑电平之间的转换(3.3v~5v之间),只要外接一个上拉电阻。
典型的应用的是基于开漏的IIC总线。
三、GPIO输出Pin的保护电路
中的该部分
GPIO内部具有钳位保护二极管,其作用是防止从外部Pin输入的电压过高或过低。
VDD是3.3V(STM32正常工作电压),如果从Pin输入的信号电压超过VDD+0.6V(D1导通电压),则D1导通,会把多余的电流引导VDD这一路上,真正输入到内部的信号电压不会超过VDD+0.6V。
如果从Pin输入的信号电压低于GND,则D2起作用,会把实际输入内部信号电压钳制在-0.6v左右。
举例说明:
VDD=3.3V,GPIO工作开漏模式,外接上拉电阻10K,外接电压VCC=5V,GPIO输出高电平1,通过测量发现:GPIO管脚电压不是5V,而是3.3V+0.6V左右,这说明D1起作用了。
3.3V+0.6V左右电压在数字逻辑中已经被认为是高电平(大于3.5V)
要想提高输出电压,简单的方法是在GPIO管脚上接一个D(IN4000系列的保护二极管),高电平可以达到3.3V+0.6V+0.6V。
当Q'=1时,T1导通,Pin被钳在0.6V左右,在数字电路逻辑中被视为低电平0。