高级外设总线 (APB) 接口:架构、协议与应用解析(上)
扫描二维码
随时随地手机看文章
一、APB 接口的基本概念
高级外设总线 (Advanced Peripheral Bus, APB) 是 ARM 公司开发的一种片上总线协议,属于 AMBA (Advanced Microcontroller Bus Architecture) 总线家族的一部分。APB 专为低带宽、低功耗的外设设计,旨在提供一种简单、高效的方式来连接微控制器中的低速外设,如 UART、GPIO、定时器等。与 AMBA 家族中的其他总线 (如 AHB、AXI) 相比,APB 的设计更为简化,降低了系统的复杂性和功耗,非常适合对成本和功耗敏感的嵌入式系统应用。
APB 的历史发展
APB 最初作为 AMBA 1.0 规范的一部分被引入,旨在为 ARM 处理器提供一种连接低速外设的标准方法。随着嵌入式系统的发展和需求变化,APB 经历了多次修订和改进,目前最新版本是 AMBA 5.0 规范中的 APB5。每个新版本都在保持原有简单性的基础上,增加了一些新特性,如更好的电源管理支持、错误检测机制等,以适应不断变化的应用需求。
APB 在系统中的位置
在典型的嵌入式系统中,APB 通常作为二级总线存在,通过桥接器与系统中的主总线 (如 AHB 或 AXI) 相连。主处理器通过主总线访问高速设备,而低速外设则连接到 APB 总线上,这种分层设计使系统能够同时满足高速和低速设备的需求,优化了系统性能和资源利用。
二、APB 接口的架构设计
基本组成部分
APB 接口主要由以下几个部分组成:
APB 主设备:通常是系统中的处理器或 DMA 控制器,负责发起对从设备的读写操作。
APB 从设备:连接到 APB 总线上的各种外设,如 UART、GPIO、ADC 等,负责响应主设备的请求。
APB 桥接器:用于连接主总线 (如 AHB 或 AXI) 和 APB 总线的组件,负责协议转换和数据传输。
互连结构:包括地址线、数据线和控制信号,用于在主设备和从设备之间传输数据和控制信息。
信号定义
APB 总线定义了一组标准信号,这些信号分为以下几类:
地址和控制信号
PADDR [31:0]:32 位地址线,用于传输主设备要访问的从设备地址。
PSELx:从设备选择信号,每个从设备有一个独立的 PSEL 信号,由主设备驱动。
PENABLE:使能信号,指示当前传输周期是否有效。
PWRITE:写控制信号,高电平表示写操作,低电平表示读操作。
PPROT [2:0]:保护类型信号,用于指示传输的特权级别和安全属性。
数据信号
PWDATA [31:0]:32 位写数据线,用于主设备向从设备写入数据。
PRDATA [31:0]:32 位读数据线,用于从设备向主设备返回读取的数据。
状态信号
PREADY:就绪信号,由从设备驱动,表示当前传输是否完成。
PSLVERR:从设备错误信号,指示传输过程中是否发生错误。
传输机制
APB 采用两阶段传输机制,包括 SETUP 阶段和 ENABLE 阶段:
SETUP 阶段:主设备驱动 PADDR、PSELx、PWRITE 等信号,指示要访问的从设备地址、操作类型等信息。此时 PENABLE 信号为低电平。
ENABLE 阶段:主设备将 PENABLE 信号置高,从设备根据 PADDR 和 PWRITE 信号执行相应的读写操作,并在 PREADY 信号有效时返回数据或状态。
这种两阶段传输机制简化了总线控制逻辑,降低了硬件实现成本,但也限制了 APB 的传输效率,使其更适合低速外设的连接。