单片机STM32学习笔记

推挽输出开漏输出的区别
推挽输出:可以输出高,低电平,连接数字器件;
开漏输出:输出端相当于三极管的集电极. 要得到高电平状态需要上拉电阻才行. 适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内).
    推挽结构一般是指两个三极管分别受两互补信号的控制,总是在一个三极管导通的时候另一个截止.
要实现“线与”需要用OC(open collector)电路.是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中,各负责正负半周的波形放大任务,电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小,效率高。输出既可以向负载灌电流,也可以从负载抽取电流。
问题:
很多芯片的供电电压不一样,有3.3v5.0v,需要把几种IC的不同口连接在一起,是不是直
接连接就可以了?实际上系统是应用在I2C上面。
    简答:
1、部分3.3V器件有5V兼容性,可以利用这种容性直接连接ndm
2、应用电压转换器件,如TPS76733就是5V输入,转换成3.3V1A输出。
开漏电路特点及应用
在电路设计时我们常常遇到开漏(open drain)和开集(open collector)的概念。所谓开漏电路概念中提到的就是指MOSFET的漏极。同理,开集电路中的就是指三极管的集电极。开漏电路就是指以MOSFET的漏极为输出的电路。一般的用法是会在漏极外部的电路添加上拉电阻。完整的开漏电路应该由开漏器件和开漏上拉电阻组成。如图1所示:   

组成开漏形式的电路有以下几个特点:
1. 利用外部电路的驱动能力,减少IC内部的驱动。当IC内部MOSFET导通时,驱动电流是从外部的VCC流经R pull-up MOSFETGNDIC内部仅需很下的栅极驱动电流。如图1
2. 可以将多个开漏输出的Pin,连接到一条线上。形成 “与逻辑 关系。如图1,当PIN_APIN_BPIN_C任意一个变低后,开漏线上的逻辑就为0了。这也是I2CSMBus等总线判断总线占用状态的原理。
3. 可以利用改变上拉电源的电压,改变传输电平。如图2, IC的逻辑电平由电源Vcc1决定,而输出高电平则由Vcc2决定。这样我们就可以用低电平逻辑控制输出高电平逻辑了。
4. 开漏Pin不连接外部的上拉电阻,则只能输出低电平(因此对于经典的51单片机的P0口而言,要想做输入输出功能必须加外部上拉电阻,否则无法输出高电平逻辑)
5. 标准的开漏脚一般只有输出的能力。添加其它的判断电路,才能具备双向输入、输出的能                    力。
应用中需注意:
1.  开漏和开集的原理类似,在许多应用中我们利用开集电路代替开漏电路。例如,某输入Pin要求由开漏电路驱动。则我们常见的驱动方式是利用一个三极管组成开集电路来驱动它,即方便又节省成本。如图3
2. 上拉电阻R pull-up的阻值决定了逻辑电平转换的沿的速度 。阻值越大,速度越低功耗越小。反之亦然。
Push-Pull输出就是一般所说的推挽输出,在CMOS假死电路里面应该较CMOS输出更合适,应为在CMOS里面的pushpull输出能力不可能做得双极那么大。输出能力看IC内部输出极NP管的面积。和开漏输出相比,pushpull的高低电平由IC的电源低定,不能简单的做逻辑操作等。pushpull是现在CMOS电路里面用得最多的输出级设计方式。
at91rm9200 GPIO 模拟I2C接口时注意!!
判断上拉输入和下拉输入
当一个按键按下的时候,对应的引脚输入数据是01是不确定的,还要看外部电路的组成是上拉还是下拉,当外部电路时上拉的时候,即外部接正的时候,读入的数据是1;当外部电路是下拉的时候,读入的数据是0.
上拉例子:无键按下的时候是1  ,有键按下是0
下拉例子:无键按下的时候是0,有键按下时是1
   
STM32学习----时钟
STM32中,有五个时钟源,为HSIHSELSILSEPLL
风力摆HSI是高速内部时钟,RC振荡器,频率为8MHz
HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz
LSI是低速内部时钟,RC振荡器,频率为40kHz
LSE是低速外部时钟,接频率为32.768kHz的石英晶体。
PLL为锁相环倍频输出,其时钟输入源可选择为HSI/2HSE或者HSE/2。倍频可选择为      2~16倍,但是其输出频率最大不得超过72MHz
其中40kHzLSI供独立看门狗IWDG使用,另外它还可以被选择为实时时钟RTC的时钟源。另外,实时时钟RTC的时钟源还可以选择LSE,或者是HSE128分频。RTC的时钟源通过RTCSEL[1:0]来选择。
STM32中有一个全速功能的USB模块,其串行接口引擎需要一个频率为48MHz的时钟源。该时钟源只能从PLL输出端获取,可以选择为1.5分频或者1分频,也就是,当需要使用US
B模块时,PLL必须使能,并且时钟频率配置为48MHz72MHz
另外,STM32还可以选择一个时钟信号输出到MCO(PA8)上,可以选择为PLL输出的2分频、HSIHSE、或者系统时钟。
系统时钟SYSCLK,它是供STM32中绝大部分部件工作的时钟源。系统时钟可选择为PLL输出、HSI或者HSE。系统时钟最大频率为72MHz,它通过AHB分频器分频后送给各模块使用,AHB分频器可选择12481664128256512分频。其中AHB分频器输出的时钟送给5大模块使用:
、送给AHB总线、内核、内存和DMA使用的HCLK时钟。
、通过8分频后送给Cortex的系统定时器时钟。
、直接送给Cortex的空闲运行时钟FCLK
、送给APB1分频器。APB1分频器可选择124816分频,其输出一路供APB1外设使用(PCLK1,最大频率36MHz),另一路送给定时器(Timer)234倍频器使用。该倍频器可选择1或者2倍频,时钟输出供定时器234使用。
、送给APB2分频器。APB2分频器可选择124小型航空发动机、816分频,其输出一路供APB2
设使用(PCLK2,最大频率72MHz),另一路送给定时器(Timer)1倍频器使用。该倍频器可选择1或者2倍频,时钟输出供定时器1使用。另外,APB2分频器还有一路输出供ADC分频器使用,分频后送给ADC模块使用。ADC
分频器可选择为2468分频。
在以上的时钟输出中,有很多是带使能控制的,例如AHB总线时钟、内核时钟、各种APB1外设、APB2外设等等。当需要使用某模块时,记得一定要先使能对应的时钟。
需要注意的是定时器的倍频器,当APB的分频为1时,它的倍频值为1,否则它的倍频值就为2
连接在APB1(低速外设)上的设备有:电源接口、备份接口、CANUSBI2C1I2C2UART2UART3SPI2、窗口看门狗、Timer2Timer3Timer4。注意USB模块虽然需要一个单独的48MHz时钟信号,但它应该不是供USB模块工作的时钟,而只是提供给串行接口引擎(SIE)使用的时钟。USB模块工作的时
钟应该是由APB1提供的。
连接在APB2(高速外设郭仕伟)上的设备有:UART1SPI1Timer1弾孔、ADC1ADC2、所有普通IO(PA~PE)、第二功能IO口。
下图为STM32芯片的时钟结构图。从图中可以直观的看出STM32的时钟封装。
STM32资料一
flash: 芯片内部存储器flash操作函数
我的理解——对芯片内部flash进行操作的函数,包括读取,状态,擦除,写入等等,可以允许程序去操作flash上的数据。
1,FLASH时序延迟几个周期,等待总线同步操作。推荐按照单片机系统运行频率,0—24MHz时,取Latency=0;24—48MHz时,取Latency=1;48~72MHz时,取Latency=2。所有程序中必须的
用法:FLASH_SetLatency(FLASH_Latency_2);
位置:RCC初始化子函数里面,时钟起振之后。
2,开启FLASH预读缓冲功能,加速FLASH的读取。所有程序中必须的
用法:FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
位置:RCC初始化子函数里面,时钟起振之后。
3、lib:调试所有外设初始化的函数。
我的理解——不理解,也不需要理解。只要知道所有外设在调试的时候,EWRAM需要从这个函数里面获得调试所需信息的地址或者指针之类的信息。
基础应用1,只有一个函数debug。所有程序中必须的。
用法:        #ifdef DEBUG
              debug();

本文发布于:2024-09-21 22:22:26,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/570644.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:输出   时钟   电路   开漏   上拉
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议