名词
AMBA是EP93xx采用的内部总线结构,他包含一个高速总线(AHB)和一个低速总线(APB)。
AHB (Advanced High-Performance Bus),包含一个高速内部总线时钟,用来同步协处理 器、MMU、cache、DMA控制器和其他内存模块。
APB (Advanced Peripheral Bus),此总线就来连接一些低速并行设备,比如UART和GPIO。 AHB 和 APB 使用 AMBA 架构中的 AHB/APB 总线连接,
GPIO (General Purpose I/O),GPIO在EP93xx中是APB的一个子模块,他提供简单的LED控制, 可实现非常基础的调试功能(相当于printk?)。
GPIO
GPIO 包含两种类型和8个接口。
- 标准GPIO (port C, D, E, G, H)。每个端口包含两组寄存器
- data reg x1
- data direction reg x1
- 增强型的GPIO(EGPIO, port A, B, F),包含三种寄存器
- data reg x1
- data direction reg x1
- intr reg and status regs x?
标准GPIO的每个端口都包含一个8位数据寄存器(data regs)和另外的8位数据方向寄存器 (datadirection regs)。而EGPIO还会多包含一组8位中断控制寄存器。
ABF端口还包括了七个多余的寄存器。
- GPIO Interrupt Enable registers (GPIOAIntEn, GPIOBIntEn, GPIOFIntEn)
- GPIO Interrupt Type 1 registers (GPIOAIntType1, GPIOBIntType1, GPIOFIntType1)
- GPIO Interrupt Type 2 registers (GPIOAIntType2, GPIOBIntType2, GPIOFIntType2)
- GPIO End-Of-Interrupt registers (GPIOAEOI, GPIOBEOI, GPIOFEOI)
- GPIO Debounce registers (GPIOADB, GPIOBDB, GPIOFDB)
- Interrupt Status registers (IntStsA, IntStsB, IntStsF)
- Raw Interrupt Status registers (RawIntStsA, RawIntStsB, RawIntStsF)
GPIO 初始化
系统复位的时候,GPIO 会执行初始化。
- 所有端口的 data reg 和 data direction reg 都将清零,设置为 input 方式
- Port E[1:0] 用来表示 RDLED 和 GRLED,他们将会被置高,也就是 0x11
- Port G[3:2] 用来表示 SLA[1:0] 输出,他们被置低。
- Port G[1:0] 用来表示 EEDAT 和 EECLK,设置为 input 方式
- 所有的中断控制寄存器和祛抖动寄存器都被清零
GPIO端口和针脚映射
EP93xx的阵脚情况不一样,后继版本的板子总是多了点,下面只是列出EP9301/EP9302的针 脚映射:
主板针脚名称 | 位于GPIO模块上的端口 |
---|---|
EGPIO[7:0] | Port A |
EGPIO[15:8] | Port B |
GRLED1 | Port E0 |
RDLED2 | Port E1 |
EECLK3 | Port G0 |
EEDAT4 | Port G1 |
GPIO 寄存器映射
鉴于GPIO寄存器很多,我也就不列出来了。
只是说几个要点。
- PADR ― PHDR,数据寄存器
- 读取这些寄存器将会返回GPIO模块输入端口的值(由PXDDR控制),默认情况是缺省端 口映射下的端口状态信息。
- PEDR,他的bit[1:0]提供了LED 驱动方法,默认是0x11
- RAWSTATUSx,共三个寄存器。显示了无关针脚的读取状态
寄存器索引
略