系统总线是系统中连接主要部件并进行数据通信的通道,是一组信号线的集合,是外设系统与处理器系统直接传输信息的公共通道。系统总线具有物理特性、功能特性、电气特性和时间特性等,这些特性和规范由总线协议定义。
系统总线从功能上分,主要分以下几类:
①数据总线(DB):一般是指在CPU与RAM之间来回传送需要处理或是需要储存的数据。在STM32F40x系列芯片中,D总线是从内核引出,并连接到总线矩阵,从而实现内核数据与RAM数据之间的通信。
②地址总线(AB):用来指定在RAM(Random Access Memory)中储存的数据地址。
③控制总线(CB):将微处理器控制单元(Control Unit)的信号传送到周边设备。在STM32F4xx系列芯片中,I总线由内核控制单元引出,与总线矩阵连接起来,传输控制指令。
④扩展总线(EB):外部设备和计算机主机进行数据通信的总线,如ISA总线、PCI总线、STM32F4xx系列芯片中的S总线等。
按照信息传输设备的位置来分,系统总线还可以分为内部总线和外部总线;按照总线的时间和空间特点来分,还可以分为串行总线和并行总线。
AHB总线是一种专为高性能同步传输设计的高速总线,层次高于APB(Advance Peripheral Bus)总线,AHB总线可以连接 16 个主设备和任意多个从设备,若主设备多于 16,则通过增加层结构,形成多层的AHB来扩展。AHB总线有以下特性:
①突发传输。
②主设备单时钟周期传输。
③单时钟沿操作。
④非三态实现。
⑤宽数据总线配置(64/128 bit)。
典型的AHB总线系统包括可支持高带宽传输的主干总线、AHB主设备(如高性能CPU和DMA设备等)、AHB从设备(存储器和APB桥等)。典型的AHB总线连接图如图2.8所示。
图2.8 典型的AHB总线连接图
APB是AMBA总线的一部分,是一种优化的、低功耗的、精简接口总线,可以连接多种不同慢速外设;主要应用在低带宽的外设上,如UART,I 2 C,它的架构不像AHB总线是多主设备的架构,APB总线的唯一主设备是APB桥(与AXI或APB相连),因此不需要仲裁一些Re quest/Grant信号。APB总线协议包含一个APB桥,它用来将AHB,ASB总线上的控制信号转化为APB从设备控制器上的可用信号。APB总线上所有的外设都是从设备,这些从设备有以下特点:
①接收有效的地址和控制访问。
②当APB上的外设处于非活动状态时,可以将这些外设处于 0 功耗状态。
③译码器可以通过选通信号,提供输出时序(非锁定接口)。
④访问时可执行数据写入。
Cortex-M4 除了内核内部总线,还有连接外设的总线,这些连接外设的总线基于AHB和APB总线协议,并从Cortex-M4 内核引出,构成了总线矩阵,如图2.9 所示为STM32F4xx系列芯片的总线矩阵。
图2.9 STM32F4xx系列芯片的总线矩阵
主系统由 32 位多层AHB总线矩阵构成。总线矩阵用于主控总线之间的访问仲裁管理。仲裁采取循环调度算法。总线矩阵可实现以下部分互联:8 条主控总线分别是Cortex-M4 内核引出的I总线、D总线、S总线、DMA1 存储器总线、DMA2 存储器总、DMA2 外设总线、以太网DMA总线、USB OTG HS DMA总线。7 条被控总线分别是:内部Flash I-Code总线、内部Flash D-Code总线、主要内部SRAM1(112 kB)、辅助内部SRAM2(16 kB)、辅助内部SRAM3(64 kB)(仅适用于STM32F42xx和STM32F43xx系列器件)、AHB1 外设和AHB2 外设。主控总线的描述见表2.10。
表2.10 主控总线的描述
续表
需要注意的是,在基于STM32F4xx系列芯片的系统架构中,APB总线又分为APB1 和APB2,并且挂载了不同的外设,而大多数外设都挂在了AHB,APB1 和APB2 总线上,由于它们的访问速度不同,因此,访问这些外设时需要对这些总线的时钟进行配置,相关内容将在后面章节讨论。如图2.10 所示为STM32F4xx系列芯片的系统架构图。
图2.10 STM32F4xx系列芯片的系统架构图