1、APB总线概述
APB:Advanced Peripheral Bus。APB是高级微控制器总线体系中层次的一部分,为了降低功耗消耗和接口复杂性做了优化,APB应该被用来连接任何一种低宽带且不需要任何高性能通道的总线接口的外设。APB总线可以看是APB bridge和APB从设备两部分组成的,APB Bridge可以锁存总线所有地址、数据和控制信号,并进行二级译码来产生APB从设备选择信号
2、APB slave 接口框图
3、APB信号释义
PCLK | 总线时钟 | 总线时钟,同步所有传输,时钟上升沿触发信号 |
PRESETn | 复位信号 | 复位信号低有效 |
PSELx | 从选择 | 通过地址译码选择出哪个slave被传输信号 |
PENABLE | 选通信号 | 指示APB操作的第二个周期 |
PADDR | 地址总线 | 32位地址总线 |
PWRITE | 数据传输方向 | 0是读数据,1是写数据 |
PWDATA | 写数据总线 | 写操作,master传输给slave的数据总线 |
PRDATA | 读数据总线 | 读操作,slave返回给master的数据总线 |
4、状态机
IDLE:当前总线的默认状态
SETUP:当有数据传输的时候,总线转移到SETUP状态,这时对应的选择信号,产生使能信号PSELx。总线仅在SETUP状态保持一个时钟周期并将总是在下一个时钟的上升沿移动到 ENABLE状态。
ENABLE:这个状态下PENABLE信号会被拉高,SETUP转换到ENABLE状态的时候,地址数据、控制信号和选择信号都会一直保持稳态,维持一个周期如果没有数据是传输的要求就返回IDLE,如果有就返回SETUP。
5、APB写传输
T1时刻:状态机进入IDLE状态
T2时刻:PADDR、PWRITE、PWDATA数据发生变化,开始为写操作做准备,PWRITE拉高,表明是写操作。这时候处于SETUP 阶段,译码器会根据地址选择出要写入数据的slave,PSEL拉高。
T3时刻:PENABLE拉高,有限状态机进入ENABLE状态。
T4时刻:PENABLE和PSEL信号拉低,PADDR和PWDATA暂时不做改变,为了低功耗。
T5时刻:回到IDLE阶段。
6、APB读传输
读跟写的最大差别就是PWRITE信号,PWRITE为低表示为读信号,要特别注意的是,在 T3 后,也就是在进入 ENABLE 周期后,APB 从必须要将 M 所要读取的数据准备好,以便 M 可以在 ENABLE 周期末被 T4 正时钟沿触发时正确的将数据读取。
7、APB bridge
APB桥的作用是将系统总线传输转换为APB传输,并实现以下功能:
-
锁存地址
-
译码地址,产生一个选择信号PSELx
-
写数据:把数据传输到APB总线上,读数据:驱动APB数据驱动到总线上
-
产生一个时序选通信号
接口框图
APB桥为AHB的一个从设备,但它在APB中是唯一的主设备,而APB中其它低速和低功率消耗的外围皆为APB桥的从设备
APB bridge是通过利用HREADY信号,打断AHB的流水传输,从而达到时序转换的效果。把AHB的时序转换为APB。
8、APB到AHB的时序转换
读数据(突发读传输)
每一组数据都只需要一个等待周期:
T1时刻:HADDR、HRDATA产生数据。
T1-T2时刻:HREADY拉高,HADDR传送地址数据,地址信号被 APB 总线采样。如果该传送是针对外设的话,这个地址就会被译码成选择信号发往外 设,HWRITE置0,表示是读操作。
T2-T3时刻:HREADY拉低,打断了AHB的流水线传输操作;PSEL拉高,PENABLE为低,APB进入SETUP阶段,读取地址和控制信号
T3-T4时刻:PENABLE拉高,PSEL为1,APB进入ENABLE阶段,通过PRDATA读取APB slave的数据;HREADY拉高,将读取APB slave数据
写数据(突发写传输)
当批量写操作的时候,第一块数据不需要等待周期,之后的每一块数据都需要一个等待周期。 APB桥中需要有 2 个地址寄存器,当处理一个数据块写操作时,可以寄存下一个数据块的地址。APB总线上的单块数据写操作不需要等待周期。APB桥的责任是对地址和数据进行采样,并在写操作的过程中保持它们的值。
读写交替传输
如果写操作之后跟随着读操作,那么需要 3 个等待周期来完成读操作。通常的情况下,不会有读操作之后紧跟着写操作的发生,因为两者之间 CPU 会进行指令读取。