完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
Stm32 最小系统
Stm32芯片要正常工作起来,必须为芯片加相应的外围电路,使其构成最小系统。 最小系统最基本的电路包括:晶振电路,复位电路,电源电路,下载电路。 如果将Stm32比作人类的大脑,那么电源可以理解为人类的消化系统,将外部输入能量稳定供给单片机;晶振则类似心脏, 提供时序(脉搏)保障芯片内部工作正常;复位可以说是单片机的免疫系统,单片机工作时,有时候会因为程序bug或者硬件原因而工作混乱, 复位可以让单片机系统一切归零,重新开始工作。 晶振电路 stm32工作时序可以由HSE、LSE、HSI、LSI、PLL五个时钟源产生, 其中高速外部时钟(HSE)可以使用一个4~16MHz的晶振构成的振荡器产生; 低速外部时钟(LSE)可以使用一个32.768kHz的晶体/陶瓷谐振器构成的振荡器产生。 时钟源,系统时钟参考:stm32 滴答定时器与数码管 如下图所示,在我们自制的 STM32F103C8最小系统 中, 选取8M晶振作为高速外部时钟,32.768K晶振作为低速外部时钟。 在应用中,谐振器和负载电容必须尽可能地靠近振荡器的引脚,以减小输出失真和启动时的稳定时间。 上图中的C6-C9为晶振起振电容。 对于电容,建议使用高质量的、为高频应用而设计的(典型值为)5pF~25pF之间的瓷介电容器,并挑选符合要 求的晶体或谐振器。通常两个电容具有相同参数,晶体制造商通常以两个电容的串行组合给出负载电容的参数。 在选择电容时,PCB和MCU引脚的容抗应该考虑在内(可以粗略地把引脚与PCB板的电容按10pF估计)。 负载电容CL计算公式如下: CL = CL1 x CL2 / (CL1 + CL2) + Cstray, 其中Cstray是引脚的电容和PCB板或PCB 相关的电容。 复位 复位电路的作用是为了使系统恢复到初始状态。STM32F10xxx支持三种复位形式,分别为系统复位、电源复位和备份区域复位。 系统复位 除了时钟控制器的RCC_CSR寄存器中的复位标志位和备份区域中的寄存器以外,系统复位将复位所有寄存器至它们的复位状态。 当发生以下任一事件时,产生一个系统复位: NRST引脚上的低电平(外部复位) 窗口看门狗计数终止(WWDG复位) 独立看门狗计数终止(IWDG复位) 软件复位(SW复位) 低功耗管理复位 可通过查看RCC_CSR控制状态寄存器中的复位状态标志位识别复位事件来源。 软件复位 通过将Cortex™-M3中断应用和复位控制寄存器中的SYSRESETREQ位置’1’。 低功耗管理复位 在以下两种情况下可产生低功耗管理复位: 在进入待机模式时产生低功耗管理复位:通过将用户选择字节中的nRST_STDBY位置’1’将使能该复位。这时,即使执行了进入待机模式的过程,系统将被复位而不是进入待机模式。 在进入停止模式时产生低功耗管理复位:通过将用户选择字节中的nRST_STOP位置’1’将使能该复位。这时,即使执行了进入停机模式的过程,系统将被复位而不是进入停机模式。 电源复位 当以下事件中之一发生时,产生电源复位: 上电/掉电复位(POR/PDR复位) 从待机模式中返回 电源复位将复位除了备份区域外的所有寄存器。复位源将最终作用于RESET引脚,并在复位过程中保持低电平。复位入口矢量被固定在地址0x0000_0004。 芯片内部的复位信号会在NRST引脚上输出,脉冲发生器保证每一个(外部或内部)复位源都能有至少20μs的脉冲延时;当NRST引脚被拉低产生外部复位时,它将产生复位脉冲。 在C8最小系统中,就是通过按下按键,是NRST引脚产生低电平从而复位单片机系统。 备份域复位 备份区域拥有两个专门的复位,它们只影响备份区域。当以下事件中之一发生时,产生备份区域复位。 软件复位,备份区域复位可由设置备份域控制寄存器 (RCC_BDCR)(见6.3.9节)中的BDRST位产生。 在VDD和VBAT两者掉电的前提下, VDD或VBAT上电将引发备份区域复位。 电源电路 VDD = 2.0~3.6V: VDD引脚为I/O引脚和内部调压器供电。 VSSA、VDDA = 2.0~3.6V:为ADC、复位模块、 RC振荡器和PLL的模拟部分提供供电。使用ADC时, VDDA不得小于2.4V。 VDDA和VSSA必须分别连接到VDD和VSS。 VBAT = 1.8~3.6V:当关闭VDD时, (通过内部电源切换器)为RTC、外部32kHz振荡器和后备寄存器供电 在我们的电路中预留了一个TTL转USB模块的接口和一个SWD下载程序的接口。TTL模块可以直接给C8最小系统提供5V电压,在经过AMS1117-3.3电源芯片转成3.3V,SWD则可以直接提供3.3V。 下载电路 在了解下载方式之前我们先看看数据手册中32的启动模式。 启动模式 在STM32F10xxx里,可以通过BOOT[1:0]引脚选择三种不同启动模式 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4nj3bVIK-1621218393429)()] 在系统复位后, SYSCLK的第4个上升沿, BOOT引脚的值将被锁存。用户可以通过设置BOOT1和BOOT0引脚的状态,来选择在复位后的启动模式。 在从待机模式退出时, BOOT引脚的值将被被重新锁存;因此,在待机模式下BOOT引脚应保持为需要的启动配置。 在启动延迟之后, CPU从地址0x0000 0000获取堆栈顶的地址,并从启动存储器的0x0000 0004指示的地址开始执行代码。 因为固定的存储器映像,代码区始终从地址0x0000 0000开始(通过ICode和DCode总线访问),而数据区(SRAM)始终从地址0x2000 0000开始(通过系统总线访问)。 Cortex-M3的CPU始终从ICode总线获取复位向量,即启动仅适合于从代码区开始(典型地从Flash启动)。 STM32F10xxx微控制器实现了一个特殊的机制,系统可以不仅仅从Flash存储器或系统存储器启动,还可以从内置SRAM启动。 根据选定的启动模式,主闪存存储器、系统存储器或SRAM可以按照以下方式访问: 从主闪存存储器启动:主闪存存储器被映射到启动空间(0x0000 0000),但仍然能够在它原有的地址(0x0800 0000)访问它,即闪存存储器的内容可以在两个地址区域访问, 0x00000000或0x0800 0000。 从系统存储器启动:系统存储器被映射到启动空间(0x0000 0000),但仍然能够在它原有的地址访问它。 从内置SRAM启动:只能在0x2000 0000开始的地址区访问SRAM。 所以我们也应该明白Keil中设置的某些莫名的值。 那么现在再来看stm32单片机的两种下载方式,一种是串口下载,一种是仿真器下载。 串口下载 stm32内嵌了自举程序,存放在系统存储区,由ST在生产线上写入,用于通过可用的串行接口对闪存存储器进行重新编程,即串口下载程序。 下面是使用CH340芯片组成的一键下载电路。 从电路图可以看出,BOOT0和RESET分别由CH340G芯片的RST和DTR控制,而这两个引脚可以通过与下载程序的上位机通信来改变电平的高低,从而控制启动方式进行程序下载。 仿真器下载 stm32支持JLINK、JTAG、ULINK和STLINK等,如原理图所示,我们在这里留的SWD调试接口。 GND:公共地信号; SWDIO:串行数据输入信号,作为仿真信号的双向数据信号线,建议上拉; SWCLK:串行时钟输入,作为仿真信号的时钟信号线,建议下拉; VCC:3.3V 使用jlink或者stlink连接即可下载程序。参考 stm32 调试下载。 |
|
|
|
只有小组成员才能发言,加入小组>>
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
407 浏览 1 评论
262 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
230 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
602 浏览 2 评论
627 浏览 2 评论
1345浏览 9评论
STM32F429 U盘IAP升级程序跳转APP异常的原因?
26浏览 4评论
stm32f4下spi+dma读取数据不对是什么原因导致的?
23浏览 3评论
STM32F103时钟硬件程序会卡在“while((SPI3->SR SPI_I2S_FLAG_RXNE) == (uint16_t)RESET);”导致异常复位的原因?
119浏览 3评论
21浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-23 22:49 , Processed in 0.692621 second(s), Total 75, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号