STM32学习基本 存储器、CRC、电源

改成问答式,便于我的云词跟supermeno记忆
1、STM32命名规则?
例子:STM32 F 103 C 8 T 6 A xxx
其中:
(1) 产品系列
STM32:基于ARM核心的32位微控制器;
(2)产品类型:
F:通用型
(3)产品子系列:
101:基本型;102:USB基本型,USB2.0全速设备;103:增强型;105/107:互联型。
(4)引脚数目:
T:36脚;C:48脚;R:64脚;V:100脚;z:144脚。
(5)闪存存储器容量:
4:16k;6:32k;8:64k;B:128k;C:256k;D:384k;E:512K。
(6)封装:
H:BGA;T:LQFP;U:VFQFPN;Y:WLCSP64;
(7)温度范围:
6:工业级:-4:0-85;7:工业级:-40-105.
(8)内部编码:A或空
(9)选项:TR编带包装;xxx:三个数字,已编程的器件代号。
2、stm32中寄存器描述表中rw缩写什么意思?
read/write 读写
3、stm32中寄存器描述表中r缩写什么意思?
read only只读
4、stm32中寄存器描述表中w缩写什么意思?
write only只写
5、stm32中寄存器描述表中rc_w1缩写什么意思?
raed/clear 可读,可以通过写1清除此位,写0无影响;
6、stm32中寄存器描述表中rc_w0缩写什么意思?
raed/clear 可读,可以通过写0清除此位,写1无影响;
7、stm32中寄存器描述表中rc_r缩写什么意思?
read/clear by read 可读,在读时自动将此位清除为0,写0无影响。
8、stm32中寄存器描述表中rs缩写什么意思?
read/set 可读也可以设置该位
9、stm32中寄存器描述表中rt_w缩写什么意思?
read-only write trigger 可读此位,写0或1会触发一个事件,但是对该位状态无影响。
10、stm32中寄存器描述表中t缩写什么意思?
toggle 软件只能通过写1来翻转此位,写0无影响。
11、stm32中寄存器描述表中Res.缩写什么意思?
reserved 保留位。
12、stm32的小容量产品,总容量产品,大容量产品分别指什么?
指的是闪存器容量:小容量:16k-32k,中容量:64k-128k;大容量:256k-512k。
13、stm32的四个驱动单元包括?
(1)cortex-M3内核D-Code总线(D-BUS);
(2)系统总线(S-BUS);
(3)通用DMA1;
(4)通用DMA2.
14、STM32的四个被动单元?
(1)内部SRAM;
(2)内部闪存存储器;
(3)FSMC;
(4)AHB到APB的桥(AHB2APBx),他连接所有的APB设备。
15、互联型STM32与基本型STM32的驱动单元和被动单元有何不同?
(1)驱动单元多出了以太网DMA;
(2)被动单元没有FSMC。
16、什么是ICode总线?
该总线将Cortex™-M3内核的指令总线与闪存指令接口相连接。指令预取在此总线上完成。
17、什么是D-Code总线?
该总线将Cortex™-M3内核的DCode总线与闪存存储器的数据接口相连接(常量加载和调试访 问)。
18、什么是系统总线Sbus?
此总线连接Cortex™-M3内核的系统总线(外设总线)到总线矩阵,总线矩阵协调着内核和DMA间 的访问。
19、什么是DMA总线?
此总线将DMA的APB2主控接口与总线矩阵相联,总线矩阵协调着CPU的DCode和DMA到 SRAM、闪存和外设的访问。
20、什么是总线矩阵?
(1)总线矩阵协调内核系统总线和DMA主控总线之间的访问仲裁,仲裁利用轮换算法。在互联型产品中,总线矩阵包含5个驱动部件(CPU的DCode、系统总线、以太网DMA、DMA1总线和 DMA2总线)和3个从部件(闪存存储器接口(FLITF)、SRAM和 APB2 2APB桥)。在其它产品中总线矩阵包含4个驱动部件(CPU的DCode、系统总线、DMA1总线和DMA2总线)和4个被动部件(闪存存储器接口(FLITF)、SRAM、FSMC和 AHB2APB桥)。
(2)APB2外设通过总线矩阵与系统总线相连,允许DMA访问。
21、什么是AHB、APB桥?
(1)两个AHB/APB桥在AHB和2个APB总线间提供同步连接。APB1操作速度限于36MHz,APB2操作于全速(最高72MHz)。
(2)在每一次复位以后,所有除SRAM和 FLITF以外的外设都被关闭,在使用一个外设之前,必须设置寄存器RCC_ AHBENR来打开该外
设的时钟。
(3)当对APB寄存器进行8位或者16位访问时,该访问会被自动转换成32位的访问:桥会自动将8位或者32位的数据扩展以配合32位的向量。
22、STM32数据字节是小端模式还是大端模式?
数据字节以小端格式存放在存储器中。一个字里的最低地址字节被认为是该字的最低有效字 节,而最高地址字节是最高有效字节。
23、STM32的地址空间多大?
程序存储器、数据存储器、寄存器和输入输出端口被组织在同一个4GB的线性地址空间内。
24、STM32中USB OTG的起始地址是多少?使用总线是哪个?
0x5000 0000~0x5003 ffff;使用AHB总线。
25、 STM32中以太网的起始地址是多少?使用总线是哪个?
0x4002 8000~0x40029fff;使用AHB总线。
26、STM32中CRC的起始地址是多少?使用总线是哪个?
0x4002 3000~0x4002 33ff;使用 AHB 总线。
27、 STM32中闪存存储器接口的起始地址是多少?使用总线是哪个?
0x4002 2000~0x4002 23ff;使用 AHB 总线。
28、STM32中复位和时钟控制(RCC)的起始地址是多少?使用总线是哪个?
0x4002 1000~0x4002 13ff;使用 AHB 总线。
29、 STM32中DMA2的起始地址是多少?使用总线是哪个?
0x4002 0400~0x4002 07ff;使用AHB总线。
30、STM32中DMA1的起始地址是多少?使用总线是哪个?
0x4002 0000~0x4002 03ff;使用AHB总线。
31、 STM32中SDIO的起始地址是多少?使用总线是哪个?
0x4001 8000 - 0x4001 83FF ;使用AHB总线。
32、STM32中ADC3 的起始地址是多少?使用总线是哪个?
0x4001 3C00 - 0x4001 3FFF;使用APB2总线。
33、STM32中 USART1 的起始地址是多少?使用总线是哪个?
0x4001 3800 - 0x4001 3BFF ;使用APB2总线。
34、STM32中TIM8定时器的起始地址是多少?使用总线是哪个?
0x4001 3400 - 0x4001 37FF;使用 APB2 总线。
35、STM32中 SPI1 的起始地址是多少?使用总线是哪个?
0x4001 3000 - 0x4001 33FF ;使用 APB2 总线。
36、STM32中TIM1定时器的起始地址是多少?使用总线是哪个?
0x4001 2C00 - 0x4001 2FFF;使用 APB2 总线。
37、STM32中 ADC2 的起始地址是多少?使用总线是哪个?
0x4001 2800 - 0x4001 2BFF;使用APB2总线。
38、STM32中ADC1的起始地址是多少?使用总线是哪个?
0x4001 2400 - 0x4001 27FF;使用APB2总线。
39、STM32中 GPIO端口G 的起始地址是多少?使用总线是哪个?
0x4001 2000 - 0x4001 23FF ;使用APB2总线。
40、STM32中 GPIO端口F 的起始地址是多少?使用总线是哪个?
0X4001 1C00 - 0x4001 1FFF ;使用APB2总线。
41、STM32中 GPIO端口E 的起始地址是多少?使用总线是哪个?
0x4001 1800 - 0x4001 1BFF ;使用APB2总线。
42、STM32中 GPIO端口D 的起始地址是多少?使用总线是哪个?
0x4001 1400 - 0x4001 17FF ;使用APB2总线。
43、STM32中 GPIO端口C 的起始地址是多少?使用总线是哪个?
0x4001 1000 - 0x4001 13FF ;使用APB2总线。
44、STM32中 GPIO端口B 的起始地址是多少?使用总线是哪个?
0X4001 0C00 - 0x4001 0FFF;使用APB2总线。
45、STM32中 GPIO端口A 的起始地址是多少?使用总线是哪个?
0x4001 0800 - 0x4001 0BFF ;使用APB2总线。
46、STM32中 EXTI 的起始地址是多少?使用总线是哪个?
0x4001 0400 - 0x4001 07FF ;使用APB2总线。
47、STM32中 AFIO 的起始地址是多少?使用总线是哪个?
0x4001 0000 - 0x4001 03FF;使用APB2总线。
////////////////////////////////////////////////////////////////////////////////////////
48、STM32中DAC 的起始地址是多少?使用总线是哪个?
0x4000 7400 - 0x4000 77FF;使用APB1总线。
49、STM32中电源控制(PWR) 的起始地址是多少?使用总线是哪个?
0x4000 7000 - 0x4000 73FF ;使用APB1总线。
50、STM32中后备寄存器(BKP) 的起始地址是多少?使用总线是哪个?
0x4000 6C00 - 0x4000 6FFF;使用 APB1 总线。
51、STM32中bxCAN2 的起始地址是多少?使用总线是哪个?
0x4000 6800 - 0x4000 6BFF;使用 APB1 总线。
52、STM32中bxCAN1的起始地址是多少?使用总线是哪个?
0x4000 6400 - 0x4000 67FF;使用 APB1 总线。
53、STM32中USB/CAN共享的512字节SRAM 的起始地址是多少?使用总线是哪个?
0x4000 6000 - 0x4000 63FF ;使用APB1总线。
54、STM32中USB全速设备寄存器的起始地址是多少?使用总线是哪个?
0x4000 5C00 - 0x4000 5FFF;使用APB1总线。
55、STM32中I2C2 的起始地址是多少?使用总线是哪个?
0x4000 5800 - 0x4000 5BFF ;使用APB1总线。
56、STM32中I2C1 的起始地址是多少?使用总线是哪个?
0x4000 5400 - 0x4000 57FF;使用APB1总线。
57、STM32中UART5 的起始地址是多少?使用总线是哪个?
0x4000 5000 - 0x4000 53FF ;使用APB1总线。
58、STM32中UART4的起始地址是多少?使用总线是哪个?
0x4000 4C00 - 0x4000 4FFF;使用APB1总线。
59、STM32中USART3 的起始地址是多少?使用总线是哪个?
0x4000 4800 - 0x4000 4BFF;使用APB1总线。
60、STM32中USART2 的起始地址是多少?使用总线是哪个?
0x4000 4400 - 0x4000 47FF;使用APB1总线。
61、STM32中 SPI3/I2S3 的起始地址是多少?使用总线是哪个?
0x4000 3C00 - 0x4000 3FFF;使用APB1总线。
62、STM32中SPI2/I2S3 的起始地址是多少?使用总线是哪个?
0x4000 3800 - 0x4000 3BFF ;使用APB1总线。
63、STM32中独立看门狗(IWDG) 的起始地址是多少?使用总线是哪个?
0x4000 3000 - 0x4000 33FF ;使用APB1总线。
64、STM32中窗口看门狗(WWDG) 的起始地址是多少?使用总线是哪个?
0x4000 2C00 - 0x4000 2FFF ;使用APB1总线。
65、STM32中RTC 的起始地址是多少?使用总线是哪个?
0x4000 2800 - 0x4000 2BFF;使用APB1总线。
66、STM32中TIM7定时器 的起始地址是多少?使用总线是哪个?
0x4000 1400 - 0x4000 17FF;使用APB1总线。
67、STM32中TIM6定时器 的起始地址是多少?使用总线是哪个?
0x4000 1000 - 0x4000 13FF ;使用APB1总线。
68、STM32中TIM5定时器的起始地址是多少?使用总线是哪个?
0x4000 0C00 - 0x4000 0FFF;使用APB1总线。
69、STM32中 TIM4定时器的起始地址是多少?使用总线是哪个?
0x4000 0800 - 0x4000 0BFF ;使用APB1总线。
70、STM32中TIM3定时器的起始地址是多少?使用总线是哪个?
0x4000 0400 - 0x4000 07FF ;使用APB1总线。
71、STM32中TIM2定时器 的起始地址是多少?使用总线是哪个?
0x4000 0000 - 0x4000 03FF;使用APB1总线。
72、STM32F10xxx内置SRAM的容量,访问方式,起始地址分别是多少?
  (1)STM32F10xxx内置64K字节的静态SRAM。
  (2)它可以以字节、半字(16位)或全字(32位)访问。
  (3) SRAM的起始地址是0x2000 0000。
73、STM32别名区中的每个字是如何对应位带区的相应位的?
  bit_word_addr = bit_band_base + (byte_offset×32) + (bit_number×4)
其中:
bit_word_addr是别名存储器区中字的地址,它映射到某个目标位。
bit_band_base是别名区的起始地址。
byte_offset是包含目标位的字节在位段里的序号
bit_number是目标位所在位置(0-31)
  最后一位乘4的原因是一个word占四个字节,32位。
比如: 0x22006008 = 0x22000000 + (0x300×32) + (2×4). 对0x22006008地址的写操作与对SRAM中地址0x20000300字节的位2执行读-改-写操作有着相
同的效果。
74、STM32闪存存储器接口的特性?
  ●  带预取缓冲器的读接口(每字为2×64位)
●  选择字节加载器
●  闪存编程/擦除操作
●  访问/写保护
75、闪存存储器分为哪两部分?
  闪存存储器有主存储块和信息块组成:
  (1)主存储块:
  小容量产品主存储块最大为4K×64位,每个存储块划分为32个1K字节的页;
中容量产品主存储块最大为16K×64位,每个存储块划分为128个1K字节的页;
大容量产品主存储块最大为64K×64位,每个存储块划分为256个2K字节的页;
互联型产品主存储块最大为32K×64位,每个存储块划分为128个2K字节的页。
  (2)信息块:
  互联型产品有2360×64位, 其它产品有258×64位。
76、STM32闪存的读取是怎样进行的?
  (1) 闪存的指令和数据访问是通过AHB总线完成的。
  (2) 预取模块是用于通过ICode总线读取指令的。
  (3) 裁是作用在闪存接口,并且DCode总线上的数据访问优先。
77、STM32读访问有哪些配置选项?
  (1)等待时间;
  (2)预取缓冲区(2个64位);
  (3)半周期。
78、如何理解STM32读闪存中的等待周期的配置;
  (1) 等待周期体现了系统时钟(SYSCLK)频率与闪 存访问时间的关系:
0等待周期,当0 < SYSCLK < 24MHz
1等待周期,当24MHz < SYSCLK ≤48MHz
2等待周期,当48MHz < SYSCLK ≤72MHz 。
  (2)可以随时更改的用于读取操作的等待状态的数量。
79、如何理解STM32读闪存中的半周期的配置?
  (1)半周期配置用于功耗优化。
  (2) 半周期配置不能与使用了预分频器的AHB一起使用,时钟系统应该等于HCLK时钟。该特性 只能用在时钟频率为8MHz或低于8MHz时,可以直接使用的内部RC振荡器(HSI),或者是主振 荡器(HSE),但不能用PLL。
80、STM32的预取缓存区的好处?
  (1) 在每一次复位以后被自动打开,由于每个缓冲区的大小(64位)与闪 存的带宽相同,因此只通过需一次读闪存的操作即可更新整个缓冲区的内容。
  (2) 由于预取缓 冲区的存在,CPU可以工作在更高的主频。
  (3) CPU每次取指最多为32位的字,取一条指令 时,下一条指令已经在缓冲区中等待。
81、开启 预取缓存区需要注意的关于时钟的问题有哪些?
  (1)当AHB预分频系数不为1时,必须置预取缓冲区处于开启状态。
  (2) 只有在系统时钟(SYSCLK)小于24MHz并且没有打开AHB的预分频器(即HCLK必须等于 SYSHCLK)时,才能执行预取缓冲器的打开和关闭操作。一般而言,在初始化过程中执行预取 缓冲器的打开和关闭操作,这时微控制器的时钟由8MHz的内部RC振荡器(HSI)提供。
82、如何使用DMA访问闪存存储器?有何优势?
  DMA在DCode总线上访问闪存存储器,它的优先级比ICode上的取指高。DMA在 每次传送完成后具有一个空余的周期。有些指令可以和DMA传输一起执行。
83、如何理解STM32闪存的编程与擦除?
  (1)闪存编程一次可以写入16位(半字)。
  (2)闪存擦除操作可以按页面擦除或完全擦除(全擦除)。全擦除不影响信息块。
  (3)为了确保不发生过度编程,闪存编程和擦除控制器块是由一个固定的时钟控制的。
  (4)写操作(编程或擦除)结束时可以触发中断。仅当闪存控制器接口时钟开启时,此中断可以用来从 WFI模式退出。
84、如何配置STM32的三种启动模式?
  (1)在STM32F10xxx里,可以通过BOOT[1:0]引脚选择三种不同启动模式。
  (2)boot0=0,启动模式为主闪存存储器,主闪存存储器被选为启动区域
  (3)boot[1:0]=0x01,启动模式为系统存储器 系统存储器被选为启动区域;
  (4) boot[1:0]=0x03,启动模式为 内置SRAM 内置SRAM被选为启动区域;
85、STM32进入启动模式的两种情况?
  (1) 在系统复位后,SYSCLK的第4个上升沿,BOOT引脚的值将被锁存。用户可以通过设置BOOT1 和BOOT0引脚的状态,来选择在复位后的启动模式。
  (2)在从待机模式退出时,BOOT引脚的值将被被重新锁存;因此,在待机模式下BOOT引脚应保持 为需要的启动配置。在启动延迟之后,CPU从地址0x0000 0000获取堆栈顶的地址,并从启动 存储器的0x0000 0004指示的地址开始执行代码。
86、主闪存存储器、系统存储器或SRAM三种启动模式访问方式的不同?
  (1)从主闪存存储器启动:主闪存存储器被映射到启动空间(0x0000 0000),但仍然能够在它原 有的地址(0x0800 0000)访问它,即闪存存储器的内容可以在两个地址区域访问,0x0000 0000或0x0800 0000。
(2)  从系统存储器启动:系统存储器被映射到启动空间(0x0000 0000),但仍然能够在它原有的 地址(互联型产品原有地址为0x1FFF B000,其它产品原有地址为0x1FFF F000)访问它。
(3)从内置SRAM启动:只能在0x2000 0000开始的地址区访问SRAM。
  备注: 当从内置SRAM启动,在应用程序的初始化代码中,必须使用NVIC的异常表和偏移寄存器,重 新映射向量表至SRAM中。
87、如何启用STM32的自举程序?
  (1)内嵌的自举程序存放在系统存储区,由ST在生产线上写入,用于通过可用的串行接口对闪存存储器进行重新编程:
  (2)对于小容量、中容量和大容量的产品而言,可以通过USART1接口启用自举程序。
  (3) 对于互联型产品而言,可以通过以下某个接口启用自举程序:USART1、USART2(重映像 的)、CAN2(重映像的)或USB OTG全速接口的设备模式(通过设备固件更新DFU协议)。 USART接口依靠内部8MHz振荡器(HSI)运行。只有在外部使用8MHz、14.7456MHz或 25MHz时钟(HSE)时,才能使用CAN或USB OTG接口。
88、什么是CRC?
  (1)循环冗余校验(CRC)计算单元是根据固定的生成多项式得到任一32位全字的CRC计算结果。
  (2) EN/IEC 60335-1即提供了一种核实闪存存储器完整性的方法。CRC计算单元可以在程序运行时 计算出软件的标识,之后与在连接时生成的参考标识比较,然后存放在指定的存储器空间。
89、STM32的CRC的主要特点是?
  ( 1) 使用CRC-32(以太网)多项式:0x4C11DB7 (X 32 + X 26 + X 23 + X 22 + X 16 + X 12 + X 11 + X 10 + X 8 + X 7 + X 4 + X 2 + X +1 )
  (2) 一个32位数据寄存器用于输入/ 输出
  (3)CRC计算时间:4个AHB时钟周期(HCLK)
  (3)通用8位寄存器(可用于存放临时数据)
90、CRC一般起什么作用?
CRC技术主要应用于核实数据传输或者数据存储的正确性和完整性。比如通讯校验。
91、STM32的CRC操作主要使用哪些寄存器?
  (1)CRC计算单元包括2个数据寄存器和1个控制寄存器。
  (2)数据寄存器(CRC_DR): 地址偏移:0x00 , 复位值:0xFFFF FFFF
  (3) 独立数据寄存器(CRC_IDR) : 地址偏移:0x04 , 复位值:0x0000 0000
  (4) 控制寄存器(CRC_CR): 地址偏移:0x08 , 复位值:0x0000 0000
92、如何理解CRC_DR寄存器?
  32位使用, 数据寄存器位, 写入CRC计算器的新数据时,作为输入寄存器; 读取时返回CRC计算的结果。
92、 如何理解CRC_IDR寄存器?
  (1) 通用8位数据寄存器位, 可用于临时存放1字节的数据。
  (2)此寄存器不参与CRC计算,可以存放任何数据。
  (3) 寄存器CRC_CR的RESET位产生的CRC复位对本寄存器没有影响。
93、 如何理解CRC_CR寄存器?
  (1)位0为 RESET位。
  (2)复位CRC计算单元,设置数据寄存器为0xFFFF FFFF。
  (3) 只能对该位写’1’,它由硬件自动清’0’。
94、STM32的工作电压VDD是多少?
STM32的工作电压(VDD)为2.0~3.6V,通过内置的电压调节器提供所需的1.8V电源(内核供电电压为1.8V)。
95、STM32的Vbat引脚的作用?‘
当主电源VDD掉电后,通过V BAT脚为实时时钟(RTC)和备份寄存器提供电源。
96、如何对stm32的AD转换器供电?
  (1)为了提高转换的精确度,ADC使用一个独立的电源供电,过滤和屏蔽来自印刷电路板上的毛刺 干扰。
  (2) ADC的电源引脚为VDDA, 独立的电源地VSSA, 如果有VREF-引脚(根据封装而定),它必须连接到VSSA
  (3) 100脚和144脚封装: 为了确保输入为低压时获得更好精度,用户可以连接一个独立的外部参考电压ADC到VREF+和 VREF-脚上。在VREF+的电压范围为2.4V~VDDA。
  (4) 64脚或更少封装: 没有VREF+和VREF-引脚,他们在芯片内部与ADC的电源(VDDA)和地(VSSA)相联。
97、Vbat的供电区域(电池备份区域)包括哪些些?
VBAT脚为RTC、LSE振荡器和PC13至PC15端口供电,可以保证当主电源被切断时RTC能继续工作。切换到VBAT供电的开关,由复位模块中的掉电复位功能控制。
98、描述一下Vbat是怎样工作的?
  (1) 在VDD上升阶段(tRSTTEMPO)或者探测到PDR(掉电复位)之后,VBAT和VDD之间的电源开关仍会保持 连接在VBAT。
  (2) 在VDD上升阶段,如果VDD在小于tRSTTEMPO的时间内达到稳定状态(关于tRSTTEMPO数值可参考数据 手册中的相关部分),且VDD > VBAT + 0.6V时,电流可能通过VDD和VBAT之间的内部二极管注入到 VBAT。
  (3) 如果与VBAT连接的电源或者电池不能承受这样的注入电流,强烈建议在外部VBAT和电源之间连 接一个低压降二极管。
  (4)如果在应用中没有外部电池,建议VBAT在外部连接到VDD并连接一个100nF的陶瓷滤波电容。
99、备份区域在Vbat供电时与Vdd供电时有何不同?
  (1)VDD供电时:
a、 PC14和PC15可以用于GPIO或LSE引脚 5 ;
    b、 PC13可以作为通用I/O口、TAMPER引脚、RTC校准时钟、RTC闹钟或秒输出
  (2)Vbat供电时:
    a、PC14和PC15只能用于LSE引脚;
      b、PC13可以作为TAMPER引脚、RTC闹钟或秒输出;
100、备份区域在VDD供电作为GPIO时有何限制?
因为模拟开关只能通过少量的电流(3mA),在输出模式下使用PC13至PC15的I/O口功能是有限 制的:速度必须限制在2MHz以下,最大负载为30pF,而且这些I/O口绝对不能当作电流源(如驱 动LED)。

猜你喜欢

转载自blog.csdn.net/wenlong184747694/article/details/46889129
今日推荐