频率输出的问题.docx

上传人:hs****ma 文档编号:549011136 上传时间:2023-02-25 格式:DOCX 页数:14 大小:26.63KB
返回 下载 相关 举报
频率输出的问题.docx_第1页
第1页 / 共14页
频率输出的问题.docx_第2页
第2页 / 共14页
频率输出的问题.docx_第3页
第3页 / 共14页
频率输出的问题.docx_第4页
第4页 / 共14页
频率输出的问题.docx_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《频率输出的问题.docx》由会员分享,可在线阅读,更多相关《频率输出的问题.docx(14页珍藏版)》请在金锄头文库上搜索。

1、频率输出地端口输出选用:复用推挽输出推挽输出: 推挽放大器 在功率放大器电路中大量采用推挽放大器电路,这种电路中用两只三极管构成一级放大器电路,两只三极管分别放大输入信号的正半周和负半周,即用一只三极管放大信号的正半周,用另一只三极管放大信号的负半周,两只三极管输出的半周信号在放大器负载上合并后得到一个完整周期的输出信号。 推挽放大器电路中,一只三极管工作在导通、放大状态时,另一只三极管处于截止状态,当输入信号变化到另一个半周后,原先导通、放大的三极管进入截止,而原先截止的三极管进入导通、放大状态,两只三极管在不断地交替导通放大和截止变化,所以称为推挽放大器。 互补推挽放大器 “互补”是通过采

2、用两种不同极性的三极管,利用不同极性三极管的输入极性不同,用一个信号来激励两只不同极性的三极管,这样可以不需要有两个大小相等、相位相反的激励信号。电路中,一个是NPN型三极管,另一个是PNP型三极管,两只三极管的基极相连,在两管的基极加一个音频输入信号作推动信号。 两管基极和发射极并联,由于两只三极管的极性不同,基极上的输入信号电压对两管而言一个是正向偏置,一个是反向偏置。当输入信号为正半周时,两管基极同时电压升高,此时输入信号电压给一管加上正向偏置电压,所以该管进入导通和放大状态。由于基极电压升高,对另一管来讲加上反向偏置电压,所以该管处于截止状态。 输入信号变化到负半周后,两管基极同时电压

3、下降,给另一管正向偏置,使该管进入导通和放大状态,而一管又进入截止状态。 这种利用NPN型和PNP型三极管的互补特性,用一个信号来同时激励两只三极管的电路,称之为“互补”电路,由互补电路构成的放大器称为互补放大器电路。由于两个异极性管工作时,一只三极管导通、放大,另一只三极管截止,工作在推挽状态,所以称为互补推挽放大器。推挽输出推挽方式可完全独立产生高低电平,推挽方式为低阻,推挽适用于输出而不适用于输入,因为若对推挽(低阻)加高电平后,I=U/R,I会很大,将造成口的烧毁。对与C8051F的很多型号片子,将I/O口设置为推挽方式的做法为:PnMDOUT=0xff,Pn=0x00,这样设置I/O

4、口为推挽,并输出低电平(可降低功耗)将I/O口设置为开漏方式的做法为:PnMDOUT=0x00,Pn=0x11,这样设置I/O口为开漏。单片机内部的逻辑经过内部的逻辑运算后需要输出到外面,外面的器件可能需要较大的电流才能推动,因此在单片机的输出端口必须有一个驱动电路。 这种驱动电路有两种形式:其中的一种是采用三极管(npn或n沟道),以npn三极管为例,就是e接地,b接内部的逻辑运算,c引出,b受内部驱动可以控制三极管是否导通但如果三极管的c极一直悬空,尽管b极上发生高低变化,c极上也不会有高低变化,因此在这种条件下必须在外部提供一个电阻,电阻的一端接c(引出脚)另一端接电源,这样当三极管的b

5、有高电压是三极管导通,c电压为低,当b为低电压时三极管不通,c极在电阻的拉动下为高电压,这种驱动电路有个特点:低电压是三极管驱动的,高电压是电阻驱动的(上下不对称),三极管导通时的ec内阻很小,因此可以提供很大的电流,可以直接驱动led甚至继电器,但电阻的驱动是有限的,最大高电平输出电流=(vcc-Vh)/r;1 STM32的输入输出管脚有下面8种可能的配置:(4输入+2输出+2复用输出) 浮空输入_IN_FLOATING 带上拉输入_IPU 带下拉输入_IPD 模拟输入_AIN 开漏输出_OUT_OD 推挽输出_OUT_PP 复用功能的推挽输出_AF_PP 复用功能的开漏输出_AF_OD1.

6、1 I/O口的输出模式下,有3种输出速度可选(2MHz、10MHz和50MHz),这个速度是指I/O口驱动电路的响应速度而不是输出信号的速度,输出信号的速度与程序有关(芯片内部在I/O口的输出部分安排了多个响应速度不同的输出驱动电路,用户可以根据自己的需要选择合适的驱动电路)。通过选择速度来选择不同的输出驱动模块,达到最佳的噪声控制和降低功耗的目的。高频的驱动电路,噪声也高,当不需要高的输出频率时,请选用低频驱动电路,这样非常有利于提高系统的EMI性能。当然如果要输出较高频率的信号,但却选用了较低频率的驱动模块,很可能会得到失真的输出信号。关键是GPIO的引脚速度跟应用匹配(推荐10倍以上?)

7、。比如:1.1.1 对于串口,假如最大波特率只需115.2k,那么用2M的GPIO的引脚速度就够了,既省电也噪声小。1.1.2 对于I2C接口,假如使用400k波特率,若想把余量留大些,那么用2M的GPIO的引脚速度或许不够,这时可以选用10M的GPIO引脚速度。1.1.3 对于SPI接口,假如使用18M或9M波特率,用10M的GPIO的引脚速度显然不够了,需要选用50M的GPIO的引脚速度。1.2 GPIO口设为输入时,输出驱动电路与端口是断开,所以输出速度配置无意义。1.3 在复位期间和刚复位后,复用功能未开启,I/O端口被配置成浮空输入模式。1.4 所有端口都有外部中断能力。为了使用外部

8、中断线,端口必须配置成输入模式。1.5 GPIO口的配置具有上锁功能,当配置好GPIO口后,可以通过程序锁住配置组合,直到下次芯片复位才能解锁。2 在STM32中如何配置片内外设使用的IO端口首先,一个外设经过 配置输入的时钟和 初始化后即被激活(开启);如果使用该外设的输入输出管脚,则需要配置相应的GPIO端口(否则该外设对应的输入输出管脚可以做普通GPIO管脚使用);再对外设进行详细配置。对应到外设的输入输出功能有下述三种情况:一、外设对应的管脚为输出:需要根据外围电路的配置选择对应的管脚为复用功能的推挽输出或复用功能的开漏输出。二、外设对应的管脚为输入:则根据外围电路的配置可以选择浮空输

9、入、带上拉输入或带下拉输入。三、ADC对应的管脚:配置管脚为模拟输入。 如果把端口配置成复用输出功能,则引脚和输出寄存器断开,并和片上外设的输出信号连接。将管脚配置成复用输出功能后,如果外设没有被激活,那么它的输出将不确定。 3 通用IO端口(GPIO)初始化:3.1 GPIO初始化3.1.1 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | B | C, ENABLE):使能APB2总线外设时钟3.1.2 RCC_ APB2PeriphResetCmd (RCC_APB2Periph_GPIOA | B | C, DISABLE):释放GPIO复位3

10、.2 配置各个PIN端口(模拟输入_AIN、输入浮空_IN_FLOATING、输入上拉_IPU、输入下拉_IPD、开漏输出_OUT_OD、推挽式输出_OUT_PP、推挽式复用输出_AF_PP、开漏复用输出_AF_OD)3.3 GPIO初始化完成=最近刚开始学习STM32,所以从最基本的GPIO开始学起;首先看看STM32的datasheet上对GPIO口的简单介绍:每个GPI/O 端口有两个32 位配置寄存器(GPIOx_CRL,GPIOx_CRH),两个32位数据寄存器(GPIOx_IDR,GPIOx_ODR),一个32 位置位/复位寄存器(GPIOx_BSRR),一个16 位复位寄存器(G

11、PIOx_BRR)和一个32 位锁定寄存器(GPIOx_LCKR)。 GPIO 端口的每个位可以由软件分别配置成多种模式。每个I/O 端口位可以自由编程,然而I/0 端口寄存器必须按32 位字被访问(不允许半字或字节访问)。GPIOx_BSRR 和GPIOx_BRR 寄存器允许对任何GPIO 寄存器的读/更改的独立访问;这样,在读和更改访问之间产生IRQ 时不会发生危险。端口位配置 CNFx1:0=xxb,MODEx1:0=xxb再看GPIO功能很强大:1.通用I/O(GPIO):最最基本的功能,可以驱动LED、可以产生PWM、可以驱动蜂鸣器等等;2.单独的位设置或位清除:方便软体作业,程序简

12、单。端口配置好以后只需GPIO_SetBits(GPIOx, GPIO_Pin_x)就可以实现对GPIOx的pinx位为高电平;3.外部中断/唤醒线:端口必须配置成输入模式时,所有端口都有外部中断能力;4.复用功能(AF):复用功能的端口兼有IO功能等。复位期间和刚复位后,复用功能未开启,I/O 端口被配置成浮空输入模式:(CNFx1:0=01b,MODEx1:0=00b)。5.软件重新映射I/O复用功能:为了使不同器件封装的外设I/O 功能的数量达到最优,可以把一些复用功能重新映射到其他一些脚上。这可以通过软件配置相应的寄存器来完成。这时,复用功能就不再映射到它们的原始引脚上了;6.GPIO

13、锁定机制:当在一个端口位上执行了所定(LOCK)程序,在下一次复位之前,将不能再更改端口位的配置。GPIO基本设置GPIOMode_TypeDef GPIO mode 定义及偏移地址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_

14、Mode_AF_PP = 0x18 /推挽复用GPIO输入输出速度选择:typedef enum GPIO_Speed_10MHz = 1,GPIO_Speed_2MHz, GPIO_Speed_50MHzGPIOSpeed_TypeDef;#define IS_GPIO_SPEED(SPEED) (SPEED = GPIO_Speed_10MHz) | (SPEED = GPIO_Speed_2MHz) | (SPEED = GPIO_Speed_50MHz)做一个GPIO输出的试验当I/O 端口被配置为推挽模式输出时:输出寄存器上的0 激活N-MOS,而输出寄存器上的1 将激活P-MOS。用这段程序实现:GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;int main(void)#ifdef DEBUGdebug();#endif/* 设置系统时钟 */RCC_Configuration(); /* 嵌套中断设置*/NVIC_Configuration();/* 激活GPIOC clock */RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);/* Configure PC.04, PC.05, PC.06 and PC.07 as Output push-p

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号