之前刚开始学32的时候,对于AHB、APB1和APB2始终不太理解具体的区别和用途,现在在这里总结一下。
总线
总线是一种用于连接处理器、内存和外设的通信架构,它可以传输数据和控制信号
区别
AHB(Advanced High Performance Bus),翻译为高级高性能总线。AHB用于高性能模块(如CPU、DMA和DSP等)之间的连接,连接处理器核心、高速存储器和高带宽外设。
AHB 系统由主模块、从模块和基础结构(Infrastructure)3部分组成,整个AHB总线上的传输都由主模块发出,由从模块负责回应。
APB(Advanced Peripheral Bus),翻译为高级外设总线。APB主要用于低带宽的周边外设之间的连接。在STM32中APB又可分为APB1和APB2,APB1、2它们俩都是外设时钟使能寄存器,APB1(RCC_APB1ENR) 、APB2(RCC_APB2ENR)
具体所连接的外设又有所不同,如下图(STM32F10xxx系统结构图)
APB1 | APB2 | |
最大频率 | 36MHZ | 72MHZ |
外设 | 1:DAC接口时钟使能 2:接口时钟使能 3:备份接口时钟使能 4 5:CAN2、1接口时钟使能 6 7:IIC2、1接口时钟使能 8-11:USART5、4、3、2接口时钟使能 12 13:SPI3、2接口时钟使能 14:窗口看门狗时钟使能(15-20) -7时钟使能 | 1:USART1接口时钟使能 2:SPI1接口时钟使能 3:定时器1时钟使能 4 5:ADC2、1接口时钟使能 6-10:端口A-E时钟使能 11:辅助功能IO时钟使能 |
可用位 | 20位,都是R/W,一位对应一个外设,0关闭,1打开 | 11位,其余的bit保留(保留位读为0) |
这里的外设是相对CortexM3的内核来讲的。这两个寄存器都是32的,占用四个字节。这两个寄存器都位于结构体RCC_TypeDef中,名字叫APB1ENR和APB2ENR(开头所说)。操作的时候就是 RCC->APB1ENR=xxxxxxxx
AHB、APB总线和计算机总线的区别
学完组成原理后,总感觉这两者之间有点联系,后来查资料在这里总结两者的联系与区别
计算机组成原理中的总线分为:数据总线、地址总线和控制总线。它们用于处理器与内存和外设之间的数据传输、地址定位和控制信号传递。
在32中,AHB、APB属于处理器总线中的一种,而不是计算机三大总线中的数据总线、地址总线和控制总线。用于连接处理器和外设之间的数据传输和控制信号传递。
APB和AHB总线,类似于个人PC系统里的北桥和南桥总线。南桥总线上挂接的都是鼠标、键盘这些慢速的设备,北桥上挂接显卡等高速设备。南桥频率低,北桥频率高。另外,南桥最后也要接到北桥上。
尾话:其实《STM32F10xxx参考手册》中第二章“存储器和总线构架”有写,所以总是读一些参考手册,学习单片机还得脚踏实地 打好基础 搞清楚