STM32 芯片架构

发布时间:2024-07-31  

把STM32 想像类比成一台电脑。
CPU 通过 总线(Bus) 控制各类外设。

img

img

img

各部分功能如下:

  1. CPU:包含运算器,控制器及若干寄存器,是单片机的控制和指挥中心。

  2. ROM (STM32中称为FLASH):用于存放程序和数据,为只读储存器。更改(擦除)和写入程序都较为麻烦, 需要遵守FLASH相关的协议。可以认为是计算机的硬盘。

  3. RAM(STM32中称为SRAM):用于存放运算的中间结果、数据暂存及数据缓冲等。可以随机读入或读出,读写速度快,读写方便;但是断电或复位会丢失数据。可以认为是计算机的内存。

  4. 总线矩阵:总线矩阵用于主控总线之间的访问仲裁管理,提高了各部件交流的效率。

  5. 寄存器:虽然图里面没有寄存器,但是后续会经常提到它。寄存器可以看成储存0和1的一个指定名字和功能的地址。如果我们要在某个引脚输出一个低电平,我们只要往相的引|脚对应的寄存器写一个1,即可实现。

  6. GPIO:通用型输入输出(接口),意思是你可以随意使用它输出或输入0和1,甚至以115200次每秒的速度翻转或接收0和1。

说明:上面的各部分功能都集成在一个芯片上,集成度高。

img

img

ICode 总线

ICode 中的 I 表示 Instruction,即指令,它是专门用来取指令的。
我们写好的程序编译之后都是一条条指令,存放在 Flash 中,内核要读取这些指令来执行程序就必须通过 ICode 总线,它几乎每时每刻都需要被使用,是专门用来去指的。

驱动单元

1.DCode 总线

DCode 中的 D 表示 Data,即数据,那说明这条总线是用来取数的。我们在写程序的时
候,数据有常量和变量两种,常量就是固定不变的,在C语言中用const 关键字修饰,是放在内部Flash中,变量是可变的放在内部SRAM当中。

2.系统总线

系统总线主要是访问外设的寄存器,我们通常说的寄存器编程,即读写寄存器都是通
过这根系统总线来完成的。

3.DMA 总线

DMA 总线也主要是用来传输数据,这个数据可以是在某个外设的数据寄存器,可以在SRAM,可以在内部的 FLASH。因为数据可以被 Dcode 总线和 DMA 总线访问,所以为了避免访问冲突,在取数的时候需要经过一个总线矩阵来仲裁,决定哪个总线在取数。

4.总线矩阵

总线矩阵:主要负责协调内核总线与DMA主控总线之间的访问仲裁,因为系统内核总线和DMA主控总线都能访问数据(来自FLASH、SRAM或者某个外设),避免冲突,需要总线矩阵来仲裁决定在哪个总线进行访问。

img

被动单元

1.内部 FLASH

FLASH,我们编写好的程序就放在这个地方。
一般程序编译后的二进制代码存储的地方,常量或者const修饰的也放在这里。
内核通过 ICode 总线来取里面的指令。

2.内部 SRAM

内部SRAM:程序函数内部的局部变量和全局变量,堆(malloc分配)栈(局部变量)等。
内核通过DCODE总线访问SRAM

3.FSMC(Flexible static memory controller): 灵活静态存储控制器

灵活的静态的存储器控制器,通过 FSMC,我们可以扩展内存,如

  • 外部的SRAM

  • NANDFLASH

  • NORFLASH
    注意的是:

  • FSMC 只能扩展静态的内存,即名称里面的 S: static。

  • 不能是动态的内存,比如 SDRAM 就不能扩展。

4.AHB到APB的桥

从 AHB 总线延伸出来的两条 APB2 和 APB1 总线,上面挂载着 STM32 各种各样的特色外设。我们经常说的GPIO、串口、 I2C、 SPI这些外设就挂载在这两条总线上,这个是我们学习 STM32 的重点,就是要学会编程这些外设去驱动外部的各种设备。

  • AHB总线:是Advanced High performance Bus的缩写,译作高级高性能总线,这是一种【系统总线】。AHB主要用于高性能模块(如CPU、DMA和DSP等)之间的连接。AHB 系统由主模块、从模块和基础结构(Infrastructure)3部分组成,整个AHB总线上的传输都由主模块发出,由从模块负责回应。

  • APB1总线:连接的是低速外设,包括电源接口、备份接口、CAN、 USB、 12C1、 12C2、 USART2、 USART3、 UART4、 UART5、 SP12、 SP3等。

    • 操作速度限制于36MHZ

  • APB2总线:连接的是高速外设,包括UART1、SPI1、 Timer1、 ADC1、 ADC2、 ADC3、所有的普通1/0口(PA-PE)、第二功能V/O (AFIO)口等。

    • 操作速度限制于72MHZ。

img

STM32外设

  1. MISC:把NVIC的外设驱动放在了misc.c中(NVIC提供中断控制器,用于总体管理异常,称之为“内嵌向量中断控制器)

  2. ADC:模数转换

  3. BKP:备份数据

  4. CAN:CAN总线是一种通信方式。STM32主要负责程序的运行,而CAN总线只是一种通信协议。STM32之间的通信可以通过CAN总线进行数据交换。

  5. CEC:网络模块

  6. DAC:数模转换

  7. DBGMCU:调试支持

  8. DMA:直接内存存取控制器(传输数据)

  9. EXTI:外部中断事件控制器

  10. FLASH:闪存存储器

  11. FSMC:灵活的静态存储器控制器

  12. GPIO:通用输入输出

  13. I2C:I2C接口

  14. IWDG:独立看门狗

  15. PWR:电源/功耗控制

  16. RCC:复位与时钟控制器

  17. RTC:实时时钟

  18. SDIO:SDIO接口

  19. SPI:串行外设接口

  20. TIM:定时器

  21. USART:通用同步/异步接收器

  22. WWDG:窗口看门狗

STM32 开发方式

STM32的3种开发方式:寄存器开发,标准库,HAL库。

  1. 寄存器开发:通过直接操作寄存器进行开发,但是由于STM32的寄存器数量众多,逐个查询比较繁琐。

  2. 标准库:ST公司为每一款芯片都编写了一份库文件,也就是工程文件里的stm32F1XX…之类的,这些.c .h文件中包含了一些常用量的宏定义,一些外设也通过结构体进行包装起来,例如GPIO口时钟等,只需要配置结构体变量的成员就可以修改外置的配置寄存器。

  3. HAL(Hardware Abstraction Layer)库:硬件抽象层。是ST公司为了更好的移植性推出的一个软件库。相对于标准库来说更为简洁。只要使用相通的外设,程序可以通用。ST公司研发的STM32CubeMX软件,可以通过图形化的配置功能,直接生成整个使用HAL库的工程文件。

STM32 启动方式

  1. 用户闪存存储器启动模式(Main Flash memory) 正常的用户工作模式,通过 jtag 和 swd 模式进行下载程序,重启后也直接从这启动程序。

  2. 系统存储器启动模式(System memory) 从系统存储器启动,这种模式启动的程序功能是由厂家设置的。

  3. SRAM启动(Embedded Memory) SRAM,没有程序存储的能力,这个模式一般用于程序调试。

img


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>