热门文章
大家好,我是张飞实战电子黄忠老师,今天分享如何通过手册理解单片机IO知识点。
含义解释:
1. GPIO:同我们常说的IO口一样, General Purpose Input Output (通用输入/输出)简称为GPIO,每个GPIO端口可通过软件分别配置成输入或输出模式。
2. 外设:指的是除CPU以外的外围功能模块,只不过这部分电路依旧被封装在单片机内部,比如IO,ADC,DAC,TIM等。
3. 复位:把MCU恢复到最开始的状态,比如说我们把电脑重启了一次,就相当于复位了一次,在这里我们把MCU恢复到初始的状态称为复位。
4. 往某一位写1,在硬件上就相当于把把它设置成高电平,清0则与之相反。
芯片的缩略封装图:
STM32F373CCT6 总共有48个引脚(图中左上角红色圈起来的1代表芯片的1号引脚,后面的以此类推,我们这里把1脚简称1Pin),分以下几个类别:
1.可以编程控制的引脚:PAx(x表示0,1,2…),PBx(x表示0,1,2…)等以相同类似方式命名的。STM32F373CCT6分多组 IO口,分别用大写字母表示,即
x=A/B/C/D/E/F,例如GPIOA,表示A组IO口,这组IO口下面又有很多引脚,那么我们就用PA0,PA1,PA2等方式来表示,每组下面最多16个IO口。通俗点来讲:GPIOA就相当于八年级五班这个班级,PA0,PA1相当于班里的学生,有叫李刚的,有叫张华的等等,每个班最多16个学生。
我们看到有的可编程控制的引脚,例如PC14-OSC32-IN,那么说明这个引脚有多种功能,可以当IO口用,也可以当做OSC32-IN用,在下面我们会具体解释这样的引脚。
2. 不可编程控制的引脚:1Pin(备用电源正脚),7 Pin(复位脚), 8 Pin(模拟电源负脚), 9 Pin(模拟电源/参考电压正脚), 17 Pin(数字电源正脚),23 Pin(SDADC1, SDADC2, SDADC3 地),24 Pin(SDADC1, SDADC2, SDADC3 电源),25 Pin(SDADC1, SDADC2, SDADC3的外部参考电压正),44 Pin(启动内存选择引脚),47 Pin(数字电源负脚),48 Pin(数字电源正脚)。
1. 后备区域供电脚 VBAT 脚的供电采用 CR1220 纽扣电池和 VCC3.3 混合供电的方式,在有外部电源 (VCC3.3) 的时候, CR1220 不给 VBAT 供电, 而在外部电源断开的时候, 则由 CR1220给其供电。这样,VBAT 总是有电的,以保证 RTC 的走时以及后备寄存器的内容不丢失。
2. BOOT0
关于详细的引脚功能定义可以查阅《STM32F373xx》数据手册第33页,这里我们解释下关于引脚的功能问题:
1. 默认功能:也就是引脚的普通功能。
2. 复用功能:即将IO口用作普通输入输出以外的功能,通过配置相关寄存器后选择的功能,例如串口输入输出,使用时需要配置复用模式。
想要配置成复用功能,首先需要查看引脚定义看看这个IO口可不可以被配成复用功能,这个是由IO的内部电路决定的。如果有才可以被配置,配置成复用功能不仅仅是要通过寄存器GPIOx_MODER配制成复用功能模式,而且还要通过GPIOx_AFRL,GPIOx_AFRH寄存器选择IO复用功能。这样IO口才能真正被配成复用功能。
3. 附加功能:配置相关外设寄存器来选择的功能,比方配置ADC使能某些通道等来使能相应管脚的附加功能。同样想要配置成附加功能,首先需要查看引脚定义看看这个IO口可不可以被配成附加功能,这个也是由IO的内部电路决定的。如果有,那么通过寄存器GPIOx_MODER配制成模拟功能模式。
每组通用 I/O 端口包括 4 个 32 位配置寄存器 (MODER、 OTYPER、 OSPEEDR和 PUPDR) 、2 个 32 位数据寄存器(IDR 和 ODR) 、1 个 32 位置位/复位寄存器 (BSRR)、1 个 32 位锁定寄存器 (LCKR) 和 2 个 32 位复用功能选择寄存器(AFRH 和 AFRL)等,可以被配置成一下几种不同的模式:
输入上拉:IO口上拉就是在IO口通过接一个电阻到电源(注意这个电压要和单片机供电电压相同,否则过高会烧毁IO),电阻的大小决定了电源到IO口电流的不同,这就是我们常说的弱上拉等。下面附图一张。
输入下拉:下拉就是在IO口通过接一个电阻到地,电阻的大小决定了IO口到地电流的不同,这就是我们常说的弱下拉等。下面附图一张。
输入浮空/模拟输入:浮空(floating)就是逻辑器件的输入引脚即不接高电平,也不接低电平。浮空最大的特点就是电压的不确定性,它可能是0V,也可能是VCC,还可能是介于两者之间的某个值. 浮空一般用来做ADC输入用,可能有的芯片把浮空模式和模拟输入模式分开了,在此解释一下,在浮空模式下使能了IO的模拟功能就相当于是模拟输入。
开漏输出:开漏输出就是我们所说的OC输出,不输出电压,相当于N型三极管的集电极作为单片机的IO口,需要在外部加一个上拉电阻配合使用。如图:
推挽输出:可以输出高,低电平,但相对于普通的输出而言,这种输出方式增加了输出能力。如图:
复用开漏输出、复用推挽输出:可以理解为GPIO口被用作第二功能时的配置情况(即并非作为通用IO口使用)。
上图为引脚的内部电路框图(红圈内或旁边数字代表序号,下面简称1号等)
输出部分解析:输出分三路
第一路,1号(读/写动作-由片内外设控制)——>3号(经过一个逻辑门->输出控制电路)
第二路,15号(写动作)——>14号(Bit Set/Reset register 位设置/清零寄存器),——>13号(Output data register数据输出寄存器)——>3号(经过一个逻辑门->输出控制电路)
第三路,2号(复用功能输出)——>3号(经过一个逻辑门->输出控制电路)。
三路都通过控制4号(MOS管电路,根据配置的不同模式,驱动P-MOS或者N-MOS或者两个一起驱动)——>5/7号的下拉/上拉电阻(我们可以看到上/下拉电阻有开关控制,意思就是可以通过外部的某些东西去控制使能或者失能上/下拉)——>6号的保护二极管(这里利用了二极管钳位的功能,可以在一部分程度上起到保护引脚的作用)——>IO口。
输入操作解析:同样分三路
第一路,IO口——>6号的保护二极管输出到——>9号(模拟输入)——> 片上外设
第二路,IO口——>6号的保护二极管输出到——>8号(开关,可靠外部控制)——>10号(复用功能输入)——> 片上外设
第三路,IO口——>6号的保护二极管输出到——>8号(开关,可靠外部控制)——>12号(Input data register输入数据寄存器)——> 11号(可供读取数据)。
如何结合寄存器以及硬件电路来实现具体输入输出请看下篇分析~
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表乌云踏雪网立场。
文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。