打印
[应用相关]

STM32开发板例程讲解,GPIO的描述和配置,GPIO_IOTG例程精讲

[复制链接]
楼主: 和下土
手机看帖
扫描二维码
随时随地手机跟帖
41
和下土|  楼主 | 2021-8-4 16:37 | 只看该作者 回帖奖励 |倒序浏览
//gpio A组中的哪些引脚,什么模式 速度



typedefstruct
{
  uint16_t GPIO_Pin;
  GPIOSpeed_TypeDef GPIO_Speed;
  GPIOMode_TypeDef GPIO_Mode;
}GPIO_InitTypeDef;



typedef enum
{
  GPIO_Speed_10MHz = 1,
  GPIO_Speed_2MHz,
  GPIO_Speed_50MHz
}GPIOSpeed_TypeDef;



typedef enum
{ GPIO_Mode_AIN =0x0,   //模拟输入
  GPIO_Mode_IN_FLOATING =0x04, //浮空输入
  GPIO_Mode_IPD =0x28,   //下拉输入
  GPIO_Mode_IPU =0x48,   //上拉输入
  GPIO_Mode_Out_OD =0x14,  //开漏输出
  GPIO_Mode_Out_PP =0x10,  //推挽输出
  GPIO_Mode_AF_OD =0x1C,  //开漏复用功能
  GPIO_Mode_AF_PP =0x18  //推挽复用功能
}GPIOMode_TypeDef;  

库写的相当严谨 使用了枚举,也可见IO 的功能之多性能之强~!

GPIO_Init(GPIOA,&GPIO_InitStructure);//初始化IO口配置结束。

使用特权

评论回复
42
和下土|  楼主 | 2021-8-4 16:38 | 只看该作者
附注1:PLL(Phase Locked Loop): 为锁相回路或锁相环,用来统一整合时脉讯号,使内存能正确的存取资料。PLL用于振荡器中的反馈技术。许多电子设备要正常工作,通常需要外部的输入信号与内部的振荡信号同步,利用锁相环路就可以实现这个目的。

使用特权

评论回复
43
和下土|  楼主 | 2021-8-4 17:04 | 只看该作者
附注2:STM32的GPIO口的输出:开漏输出和推挽输出

使用特权

评论回复
44
和下土|  楼主 | 2021-8-4 17:06 | 只看该作者
1、推挽输出与开漏输出的区别:

>>推挽输出:可以输出高,低电平,连接数字器件

>>开漏输出:输出端相当于三极管的集电极. 要得到高电平状态需要上拉电阻才行. 适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内).

推挽结构一般是指两个三极管分别受两互补信号的控制,总是在一个三极管导通的时候另一个截止.
要实现 线与 需要用OC(open collector)门电路.是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中,各负责正负半周的波形放大任务,电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小,效率高。输出既可以向负载灌电流,也可以从负载抽取电流。


使用特权

评论回复
45
和下土|  楼主 | 2021-8-4 17:09 | 只看该作者
当端口配置为输出时:

开漏模式:输出 0 时,N-MOS 导通,P-MOS 不被激活,输出0。

                输出 1 时,N-MOS 高阻, P-MOS 不被激活,输出1(需要外部上拉电路),也就是说此模式下只有N-MOS对输出起作用;此模式可以把端口作为双向IO使用。

使用特权

评论回复
46
和下土|  楼主 | 2021-8-4 17:11 | 只看该作者
推挽模式:输出 0 时,N-MOS 导通,P-MOS 高阻,输出0。

    输出 1 时,N-MOS 高阻,P-MOS 导通,输出1(不需要外部上拉电路)。

简单来说,开漏是0的时候接GND ,1的时候浮空;推挽是0的时候接GND ,1的时候接VCC。

使用特权

评论回复
47
和下土|  楼主 | 2021-8-4 17:18 | 只看该作者
2、开漏电路特点及应用

    在电路设计时我们常常遇到开漏(open drain)和开集(open collector)的概念。所谓开漏电路概念中提到的“漏”就是指MOSFET的漏极。同理,开集电路中的“集”就是指三极管的集电极。开漏电路就是指以MOSFET的漏极为输出的电路。一般的用法是会在漏极外部的电路添加上拉电阻。完整的开漏电路应该由开漏器件和开漏上拉电阻组成。

使用特权

评论回复
48
和下土|  楼主 | 2021-8-4 17:19 | 只看该作者
组成开漏形式的电路有以下几个特点:
1) 利用 外部电路的驱动能力,减少IC内部的驱动。当IC内部MOSFET导通时,驱动电流是从外部的VCC流经R pull-up ,MOSFET到GND。IC内部仅需很下的栅极驱动电流。

使用特权

评论回复
49
和下土|  楼主 | 2021-8-4 17:24 | 只看该作者
2) 可以将多个开漏输出的Pin,连接到一条线上。形成 “与逻辑” 关系。当PIN_A、PIN_B、PIN_C任意一个变低后,开漏线上的逻辑就为0了。这也是I2C,SMBus等总线判断总线占用状态的原理。

使用特权

评论回复
50
和下土|  楼主 | 2021-8-4 17:26 | 只看该作者
3)可以利用改变上拉电源的电压,改变传输电平。IC的逻辑电平由电源Vcc1决定,而输出高电平则由Vcc2决定。这样我们就可以用低电平逻辑控制输出高电平逻辑了。

使用特权

评论回复
51
和下土|  楼主 | 2021-8-4 17:29 | 只看该作者
4)开漏Pin不连接外部的上拉电阻,则只能输出低电平(因此对于经典的51单片机的P0口而言,要想做输入输出功能必须加外部上拉电阻,否则无法输出高电平逻辑)。

使用特权

评论回复
52
和下土|  楼主 | 2021-8-4 17:39 | 只看该作者
5)标准的开漏脚一般只有输出的能力。添加其它的判断电路,才能具备双向输入、输出的能力。

使用特权

评论回复
53
和下土|  楼主 | 2021-8-4 17:40 | 只看该作者
应用中需注意:
1)   开漏和开集的原理类似,在许多应用中我们利用开集电路代替开漏电路。例如,某输入Pin要求由开漏电路驱动。则我们常见的驱动方式是利用一个三极管组成开集电路来驱动它,即方便又节省成本。
2)上拉电阻R pull-up的 阻值 决定了 逻辑电平转换的沿的速度 。阻值越大,速度越低功耗越小。反之亦然。

使用特权

评论回复
54
和下土|  楼主 | 2021-8-4 17:40 | 只看该作者
Push-Pull输出就是一般所说的推挽输出,在CMOS电路里面Push-Pull输出更合适,因为在CMOS里面的push-pull输出能力不可能做得双极那么大。输出能力看IC内部输出极N管P管的面积。和开漏输出相比,push-pull的高低电平由IC的电源决定,不能简单的做逻辑操作等。 push-pull是现在CMOS电路里面用得最多的输出级设计方式。

使用特权

评论回复
55
和下土|  楼主 | 2021-8-4 17:41 | 只看该作者
3、什么是OC、OD

集电极开路门(集电极开路 OC 或源极开路OD)
open-drain是漏极开路输出的意思,相当于集电极开路(open-collector)输出,即ttl中的集电极开路(oc)输出。一般用于线或、线与,也有的用于电流驱动。

使用特权

评论回复
56
和下土|  楼主 | 2021-8-4 17:42 | 只看该作者
open-drain是对mos管而言,open-collector是对双极型管而言,在用法上没啥区别。
开漏形式的电路有以下几个特点:
1)利用外部电路的驱动能力,减少IC内部的驱动。 或驱动比芯片电源电压高的负载.

使用特权

评论回复
57
和下土|  楼主 | 2021-8-4 17:46 | 只看该作者
2) 可以将多个开漏输出的Pin,连接到一条线上。通过一只上拉电阻,在不增加任何器件的情况下,形成“与逻辑”关系。这也是I2C,SMBus等总线判断总线占用状态的原理。如果作为图腾输出必须接上拉电阻。接容性负载时,下降延是芯片内的晶体管,是有源驱动,速度较快;上升延是无源的外接电阻,速度慢。如果要求速度高电阻选择要小,功耗会大。所以负载电阻的选择要兼顾功耗和速度。

使用特权

评论回复
58
和下土|  楼主 | 2021-8-4 20:57 | 只看该作者
3)可以利用改变上拉电源的电压,改变传输电平。例如加上上拉电阻就可以提供TTL/CMOS电平输出等。

使用特权

评论回复
59
和下土|  楼主 | 2021-8-4 21:01 | 只看该作者
4)开漏Pin不连接外部的上拉电阻,则只能输出低电平。一般来说,开漏是用来连接不同电平的器件,匹配电平用的。

使用特权

评论回复
60
和下土|  楼主 | 2021-8-4 21:03 | 只看该作者
5)正常的CMOS输出级是上、下两个管子,把上面的管子去掉就是OPEN-DRAIN了。这种输出的主要目的有两个:电平转换和线与。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则