GPIO
1.GPIO硬件原理图
GPIO_InitTypeDef GPIO_InitStructure; //定义结构体变量
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE); //使能端口F时钟
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT; //输出模式
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;//管脚设置F9
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;//速度为100M
GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;//推挽输出
GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;//上拉
GPIO_Init(GPIOF,&GPIO_InitStructure); //初始化结构体
GPIO_SetBits(GPIOF,GPIO_Pin_9);
1.1保护二极管
防止引脚外部电压过高或过低,当外部过高时上方二极管导通吸收高电压,外部电压过低时下方二极管导通补充低电压。
1.2上下拉电阻
开启上拉电阻,引脚默认为高电平。开启下拉电阻,引脚默认为低电平。若都不开启,此时为浮空模式。引脚电压不确定。
将GPIO_InitStructure.GPIO_PuPd 设置为GPIO_PuPd_UP 上拉时,上拉电阻开关闭合,此时为高电平。
将GPIO_InitStructure.GPIO_PuPd 设置为GPIO_PuPd_DOWN 下拉时,下拉电阻开关闭合。
将GPIO_InitStructure.GPIO_PuPd 设置为GPIO_PuPd_NOPULL 浮空时,上下拉开关打开。
1.3P-MOS和N-MOS管
1.3.1推挽输出与开漏输出
1.定义不同
**NPN型三极管:**由两块N型和一块P型半导体组成,P型半导体在中间,两块N型半导体在两侧。三极管是电子电路中最重要的器件,它最主要的功能是电流 放大和开关作用。
**PNP型三极管:**由2块P型半导体中间夹着1块N型半导体所组成的三极管,所以称为PNP型三极管。也可以描述成,电流从发射极E流入的三极管。
2.电流控制不一样
**NPN:**用 B→E 的电流(IB)控制 C→E 的电流(IC)。E极电位最低,且正常放大时通常C极电位最高,即 VC > VB > VE
**PNP:**用 E→B 的电流(IB)控制 E→C 的电流(IC)。E极电位最高,且正常放大时通常C极电位最低,即 VC < VB < VE
3.输出状态不同
PNP与NPN型传感器其实就是利用三极管的饱和和截止,输出两种状态,属于开关型传感器。但输出信号是截然相反的,即高电平和低电平。NPN输出是低电平0,PNP输出的是高电平1。
推挽输出,内部电阻很小,高低电平都具备电流输出能力,也都具备驱动能力。缺点是不能将两个推挽输出的IO口进行线与,当一个引脚为高电平另一个引脚为低电平时,电流会从高电平引脚的上方MOS流出,直接流入低电平引脚的下方MOS,与GND相通,造成短路,进而造成IO口损坏。优点是推挽输出高电平时电流较大,驱动能力比开漏输出高电平时强很多。
开漏输出,当IN端为高电平时,MOS管断路,OUT端电压为VDD。若没有外接上拉电阻R8,电流驱动能力很弱,故称不是真正意义上的高电平。只能通过外接上拉电阻,提高高电平时的驱动能力。但输出电压和电流大小很好通过选择不同电源及电阻实现控制。另外开漏输出弥补了推挽输出不能线与的功能。
特点总结
项目 | 推挽输出 | 开漏输出 |
---|
高电平驱动能力 | 强 | 需外部上拉电阻 | 低电平驱动能力 | 强 | 强 | 电平跳变速度 | 快 | 由外部上拉电阻决定,电阻越小,反应越快 | 线与功能 | 不支持 | 支持 | 电平转换 | 不支持 | 支持 |
|