GPIO详解

一、GPIO的基本结构

几乎所有GPIO内部结构都是如下图所示:

首先了解这几元件:

  1. 保护二极管:IO引脚上下两边两个二极管用于防止引脚外部过高、过低的电压输入。当引脚电压高于VDD时,上方的二极管导通;当引脚电压低于VSS时,下方的二极管导通,防止不正常电压引入芯片导致芯片烧毁。但是尽管如此,还是不能直接外接大功率器件,须加大功率及隔离电路驱动,防止烧坏芯片或者外接器件无法正常工作。
  2. TTL肖特基触发器:信号经过触发器后,模拟信号转化为0和1的数字信号。但是,当GPIO引脚作为ADC采集电压的输入通道时,用其“模拟输入”功能,此时信号不再经过触发器进行TTL电平转换。ADC外设要采集到的原始的模拟信号。
  3. P-MOS管和N-MOS管:由P-MOS管和N-MOS管组成的单元电路使得GPIO具有“推挽输出”和“开漏输出”的模式

        P-MOS是接了VDD(正极电源),所以它拥有输出高电流的能力,所以给P-MOS高电平就可以导通P-MOS管,因为接了电源线的原因一旦导通了就可以让电源线里的工作电压流通,而N-MOS上面接了VSS,若给高电平是无法导通的,因为它没有接电源线是无法输出高电平的,如果给了N-MOS高电平即便流通了因为没有VDD电源线它也无法正常输出电流,若给了低电平则会流向VSS接地处,所以N-MOS只能给低电平才有效,若想N-MOS驱动可以外接上拉电阻。

        所以这里输出低电流的话输出到N-MOS晶体管的引脚上,那么始终输出的是接地部分,可以有效降低材料的消耗率。

二、GPIO输入输出的8种模式

GPIO支持4种输入模式(浮空输入、上拉输入、下拉输入、模拟输入)和4种输出模式(开漏输出、开漏复用输出、推挽输出、推挽复用输出)。同时,GPIO还支持三种最大翻转速度(2MHz、10MHz、50MHz)- 电平翻转的速度(0变1,1变0),不通芯片的驱动能力可能不一样。

上拉输入

        默认情况下输入引脚数据为1,高电平(IO端口悬空状态,通过上拉电阻,输入数据默认为1)

下拉输入

        和上拉输入相反,IO端口悬空时,引脚默认输入数据为0,低电平

浮空输入

        浮空输入模式下,I/O端口的电平信号直接进入输入数据寄存器。也就是说,I/O的电平状态是不确定的,完全由外部输入决定;如果在该引脚悬空(在无信号输入)的情况下,读取该端口的电平是不确定的。

通常用于IIC、USART。

模拟输入

        模拟输入模式下,I/O端口的模拟信号(电压信号,而非电平信号)直接模拟输入到片上外设模块,比如ADC模块等。

通用开漏输出

        N-MOS上面接了VSS,若给高电平是无法导通的,因为它没有接电源线是无法输出高电平的,如果给了N-MOS高电平即便流通了因为没有VDD电源线它也无法正常输出电流,若给了低电平则会流向VSS接地处,所以N-MOS只能给低电平才有效,若想N-MOS驱动可以外接上拉电阻。

       当设置输出的值为低电平的时候,N-MOS管处于开启状态,此时I/O端口的电平就是低电平。当设置输出的值为高电平的时候,P-MOS管处于关闭状态,此时I/O端口的电平就不会由输出的高低电平决定,而是由I/O端口外部的上拉或者下拉决定

开漏模式下 可以直接读取IDR的状态,不需要修改io口。在读取IDR前,对应IO口要先输出1,此时N-MOS管处于关闭状态,i/o口的电平完全由外部电路决定,因此可以在IDR读到外部电路信号

复用开漏输出

通用推挽输出

复用推挽输出

三、外部中断

        正常的代码运行逻辑自上而下,顺序执行,这种也称之为“轮询执行”;主程序正常运行,当突然发生紧急事件需要停下当前正在运行程序,转而去处理这个紧急事件。当紧急事件处理完成后,再恢复主程序的运行。这里紧急事件就是中断。

1. 中断和异常

大部分情况下,中断就是异常,异常就是中断

  • 中断是指CM3内核之外的能够打断正常执行流的事件---外设上会产生的一些紧急事件
  • 而异常指的是CM3内核内部能够打断正常执行流的事件

         CM3内核搭载了一个中断控制器,它管理所有的中断。它所管理的中断类型高达255种,其中异常15种,中断240种。为了便于区分,它给这些异常和中断进行了编号。编号为 1-15 的对应异常,大于等于 16 的则全是中断。为了解决多个中断同时产生时的处理问题,它引入了优先级的概念。也就是给每种中断都可以设定一个优先级(数字,数字越小优先级越高)。除了个别中断的优先级被定死外,其它中断的优先级都是可编程的。可查看内核指南,查看中断清单。

2. EXIT功能框图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值