STM32 GPIO输出模式的理解(推挽、开漏)

---江科大学习笔记

        这是GPIO口中的配置电路内部结构框架。主要的结构是上拉下拉电阻 施密特触发器  以及可以输出的两个mos管(nmos &pmos)

        

         这是stm32的输出电路,左右两部分分别为二极管的点亮和蜂鸣器的驱动电路。

        对于stm32的GPIO口配置成输出的主要有推挽与开漏两种情况。

        由于采用推挽输出模式高低电平驱动能力强,所以两种接法都可以直接驱动外设器件(如led灯)但是一般的单片机都倾向于左上角的那种接法,大部分单片机都是高电平弱驱动、低电平强驱动

        右边的驱动蜂鸣器电路主要利用三极管来协助驱动,避免单片机驱动能力不足的缺陷。

        在采用推挽输出的方法时,不能直接将两个io的输出口“线与”接在一起,这样在两个电路内部就会直接构成短路,具体可以参考第一幅图读者自行推敲一下。

        采用开漏模式(只有nmos工作),只能输出低电平,如果需要输出高电平必须借助外接上拉电阻才能进行输出。同时不会出现线与短路的情况

【转载华为云STM32的推挽输出和开漏输出-云社区-华为云 (huaweicloud.com)】(写的很好!很有帮助)

        开漏输出(Open-Drain Output)是将负载电阻的两端连接到输出管子(通常为 N 晶体管)的漏极和电源之间的输出模式。当输出管子导通时,输出端口的电平为低电平,两端的负载电路被拉低;当输出管子截止时,输出端口的电平处于高阻态(开路状态),负载电路不受影响。

        推挽输出(Push-Pull Output)是将负载电路连接到输出管子(通常为 P 晶体管和 N 晶体管)的漏极和源极之间。当输出管子 N 跟 P 同时导通时,输出为高电平;当输出管子 N 跟 P 同时截止时,输出为低电平。推挽输出常用于直接驱动电阻负载,并能够提供比开漏输出更高的输出电流和更稳定的输出电压。

开漏输出和推挽输出的适用场景如下:

        开漏输出适用于需要连接到一个外部上拉电阻或者 Pull-up 电路中的信号,或者需要实现多个开漏输出端口的连接来驱动负载或实现电平转换的场景。例如,用于驱动 LED 灯模块、I2C 总线等场合。
        推挽输出适用于直接驱动电阻负载的场景,例如,驱动电机、继电器等等场合。
需要注意的是,在使用开漏输出时,由于输出为低电平或高阻态,因此其输出电路需要进行上拉电阻或者具有 Pull-up 功能的电路。而在使用推挽输出时,由于输出可以为低电平或高电平,因此在直接驱动负载时更加方便。

【stm32 代码编写配置】

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//使能GPIOA的时钟

GPIO_InitTypeDef GPIO_InitStructure ;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;//利用库函数形式设置输出模式
{
常用的模式还可设置为;
GPIO_Mode_Out_OD 开漏输出,开漏输出对于一般的stm32只有低电平有驱动能力

GPIO_Mode_Out_PP 推挽输出,推挽输出技能高电平输出也能低电平输出

}

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//(Specifies the speed for the selected pins.)

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;//用于设置i/o口 (English:Specifies the GPIO pins to be configured.)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值