- 一、总线的概念
- 二、STM32的总线结构
- 2.1 STM32的总线矩阵
- 2.2 STM32的存储器映射
- 2.3 STM32的外设寄存器
一、总线的概念
总线是连接多个部件的信息传输线,是各部件共享的传输介质。总线是一种电路,它是CPU、RAM、ROM、输入、输出等设备传递信息的公共通道,充当数据在计算机内传输的高速公路。
总线的特性包括以下几方面:
- 机械特性:物理尺寸、插头形状、管脚数、排列顺序等;
- 电气特性:信号线的电平范围、电源电压等;
- 功能特性:每根传输线的功能,如数据、地址、控制等;
- 时间特性:信号的前后时序关系,如时钟同步方式等;
- 性能指标:总线宽度、总线带宽、信号线数、总线控制方式、带载能力等;
总线的应用主要有以下几种:
- 片内总线:芯片内部总线,例如运算器和cache之间的总线;
- 系统总线:系统总线也称为板级总线。处理器与主存、I/O等部件之间的信息传输线。系统总线中常见的三总线结构:数据总线(DB)、地址总线(AB)、控制总线(CB);
- 通信总线:计算机系统之间,或计算机与其他设备之间的信息传输线。通信总线可以分为串行通信和并行通信。
二、STM32的总线结构
STM32是一系列基于ARM Cortex-M内核的32位微控制器,它具有丰富的外设资源和灵活的存储器映射。本文将从以下几个方面介绍STM32的总线结构:
- STM32的总线矩阵
- STM32的存储器映射
- STM32的外设寄存器
2.1 STM32的总线矩阵
STM32采用了多层AHB(Advanced High-performance Bus)总线矩阵,用于连接Cortex-M内核、DMA控制器、外设和存储器。STM32的总线矩阵可以分为以下六部分:
- ICode总线:用于访问存储空间里指令的总线;
- DCode总线:用于访问存储空间里数据的总线;
- System总线:用于访问指令、数据以及调试模块接口;
- DMA总线:用于内存与外设之间的数据传输;
- Bus matrix:用于总线之间的访问优先级管理控制;
- APB总线:用于外设接口的数据传输;
总线结构:
总线矩阵:
其中:
-
ICode、DCode、System Bus都是AHB总线,可以实现高速数据传输。
-
APB(Advanced Peripheral Bus)则是较慢的外设总线,通过两个AHB-APB桥接器连接到AHB上。APB1上挂接有DAC、UART等外设,其最高频率可达36MHz;APB2上挂接有ADC、GPIO等外设,其最高频率可达72MHz。
2.2 STM32的存储器映射
STM32采用了统一编址的方式,将存储器和外设都映射到一个4GB(2^32字节)的逻辑地址空间中。STM32将4GB空间分为了八个区域,每个区域大小为512MB,分别为:
- 0x0000 0000 ~ 0x1FFF FFFF (512MB):作为代码区,用于存放下载的代码。系统上电后,将从该部分读取代码;
- 0x2000 0000 ~ 0x3FFF FFFF (512MB):作为SRAM区,用于存放运行代码。系统上电后,将从Flash读取代码,放到SRAM里,CPU再从SRAM读取代码运行;
- 0x4000 0000 ~ 0x5FFF FFFF (512MB):作为片上外设区,用于存放厂商外设寄存器。要操作外设,即修改这里对应的外设寄存器;
- 0x6000 0000 ~ 0x9FFF FFFF (1GB):作为片外RAM,用于扩展RAM。当SRAM或者Flash不够用时,MCU通过FSMC外接其它IC芯片,则在这个地址范围读写IC芯片数据;
- 0xA000 0000 ~ 0xDFFF FFFF (1GB):作为片外外设区,用于读写扩展IC芯片的寄存器。ST只用了这里的一半空间,另外一空间未使用;
- 0xE000 0000 ~ 0xFFFF FFFF (512MB):作为内核外设区,用于存放Cortex-M3内核的内部外设。Cortex-M3内核的内部外设有NVIC、Systick等;
2.3 STM32的外设寄存器
STM32的外设寄存器是用来控制和配置外设功能的特殊存储单元,它们与存储器统一编址,可以通过指针操作来访问和修改。STM32的外设寄存器包括以下几类:
- 复位和时钟控制寄存器(RCC):用于控制系统时钟源、时钟分频、时钟使能等功能;
- 中断和异常控制寄存器(NVIC):用于控制中断和异常的优先级、使能、屏蔽等功能;
- 通用输入输出端口寄存器(GPIO):用于控制GPIO的模式、速度、输出类型、上下拉等功能;
- 定时器寄存器(TIM):用于控制定时器的工作模式、预分频、自动重装载、捕获比较等功能;
- 串行通信接口寄存器(USART):用于控制串口的波特率、数据位、停止位、校验位等功能;
- 模数转换器寄存器(ADC):用于控制模拟信号的采样、转换、触发等功能;
STM32的外设寄存器是编程中最常用到的部分,需要熟练掌握每个寄存器的功能和位域含义。本文只是简单介绍了STM32的总线结构。
把 永 远 爱 你 写 进 诗 的 结 尾 ~