一、EBI总线介绍
EFM32的外部接口总线接口EBI是一个并行地址、数据总线接口,它提供了一个通用接口与 sram、flash、ADC、lcd等相连接。这个接口通过内存映射的方式映射到了Cortex-M3的地址总线上,这意味着MCU访问外部设备时在逻辑上这些外部设备被视为内存的一部分,这种映射方式使得CPU能够像访问内部内存一样访问外部设备,无需额外的IO级别的操作,直接通过读写内存地址就可以实现对外部设备到的控制。
二、EBI工作模式及相关配置
EBI接口的数据和地址总线是可以复用的,这样减少了引脚数量,我们可以通过调整总线的时序来满足不同种类的外部设备,如LCD、SRAM设备等,注意这些设备都是异步设备,因为EBI外设是不提供时钟线的。
EBI支持三种模式:(1)8 位地址线, 8 位数据线模式。这种模式下, EBI_AD[07:00]被用作数据线, EBI_AD[15:08]用作地址线。不需要复用数据线和地址线,因此不需要任何外部电路。
(2) 16 位地址线, 16 位数据线模式。这种模式下, EBI_AD[15:00]以复用的方式来使用,先当做地址线,然后当做数据线。所以,需要在配合锁存器来实现这种模式,另外,还需要额外的 EBI_ALE, EBI_CSn, EBI_REn 引脚。具体可以参考 EFM32 设备的参考手册。
(3) 24 位地址线, 8 位数据线模式。这种模式下, EBI 总线也必须通过复用地址线和数据线来实现,读写数据的时候也是需要分两步。第一步, EBI_AD[15:08]用来传送地址信号ADDR[23:16],同时 EBI_AD[07:00]传送 ADDR[15:08]。第二步, EBI_AD[15:08]用来传送地址 ADDR[7:0], 同时 EBI_AD[07:00]传送 8 位数据, DATA[7:0]。当然,辅助控制引脚EBI_ALE, EBI_CSn, EBI_REn 也需要被用到,用来控制外部锁存芯片。
本文例程只用到了D16A16模式,下面着重讲解:
-
16位地址和16位数据复用:在这种模式下,EBI_AD总线既用于传输地址,也用于传输数据。这意味着地址和数据在同一个总线上分时复用。
-
外部地址锁存器的使用:由于地址和数据复用在同一个总线上,需要一个外部地址锁存器来锁存地址信息,以便外部设备可以正确地使用地址进行数据读写操作。
那么,ALE(Address Latch Enable )信号是如何实现地址复用的呢?
-
硬件连接如上图:
-
地址和数据复用总线(EBI_AD)连接到地址锁存器的输入端。ALE信号连接到地址锁存器的使能端。
-
地址锁存器的输出端连接到外部设备的地址输入端。
-
-
时序控制:
-
当CPU或处理器需要访问外部设备时,它首先将地址信息发送到地址/数据复用总线上,并同时激活ALE信号。
-
地址锁存器在ALE信号的上升沿检测到地址信息,并在ALE信号的下降沿锁存地址。
-
锁存器保持地址信息,直到下一个ALE信号到来。
-
-
数据传输:
-
在ALE信号被激活后,处理器可以将总线切换到数据模式,发送或接收数据。
-