正在加载图片...
E AO (1<16)/ eeayAR2200和IDE接口直接相连,p1.16*/ #define IDE AI (1<17)/ BayaR2200和IDE接口直接相连,p1.17*/ (1<<18) /* EeayAR2200和IDE接口直接相连,p1.18* # define IDE CS0(1<19)/ EeayARM2200和IDE接口直接相连,p1.19* define IDE CSI /* eeayARM2200和IDE接口直接相连,p1.20* IDE DMACK (1<<21) /* EeayARM2200和IDE接口直接相连,p1.21*/ Define IDE CSEL (1<<2 /* EeayARM2200和IDE接口直接相连,p1.23* IDEI0CS16(1<24)/ eeayARy2200和IDE接口直接相连,p1l.24*/ IDE PDIAG(1<25)/ eeayARy2200和IDE接口直接相连,p1.25*/ #define IDE RST (1<<17) /* eeayarM2200和IDE接口直接相连,p0.17*/ DE_ DMAREQ(14<18)/ EeayARy2200和IDE接口直接相连,p0.18*/ #define (1<19)/ Eeayarla00和IDE接口直接相连,p0.19* define IDE INTRQ(1<20)/ EeayARM2200和IDE接口直接相连,p0.20*/ Define (1<21)/* Ebay ARM2200和IDE接口直接相连,p0.21*/ Eeay ARM2200/ #define Addr CS at P1 (IDE A0+ IDE Al +IDE A2+ IDE CS0 IDE CS1) #define MASK DATA CATA DATA) 1.1.2函数接口的实现 1.ATA设备寄存器读写函数 IDEA0、IDEA1、IDEA2地址信号引脚和 IDE CS0、 IDE CS1片选信号引脚都是在 LPC2210的P1口上,正好由这些信号线确定ATA设备一个具体寄存器的地址;为了便于地 址的设定,将P1口上同时为高电平的信号引脚定义为 Addr cs at p宏,如程序清单1.1(1) 所示 为了便于数据总线的方向改变和数值输出,可定义数据输出的屏蔽值 MASK DATA如 程序清单1.1(2)所示 模拟读ATA设备寄存器步骤如下 (1)关系统中断,预防在读寄存器操作中产生中断 (2)准备读取设备数据信号,设置GPIO模拟ATA接口数据的引脚为输入状态 (3)设置寄存器的相应地址; (4)使读ATA设备寄存器的信号引脚为低电平 (5)读取GPO模拟ATA接口数据的引脚的电平(这时数据线上的值应为设备寄存器中 的值),并调整数据位置 (6)使读ATA设备寄存器的信号引脚为高电平; (7)如果ATA设备(CF卡)是8位总线模式,并且操作的是数据寄存器(16位),则 需重复(3)、(4)、(5)步,再整合成16位的数据。 (8)取消ATA设备寄存器地址的选择 (9)开系统中断。 GPIO模拟读ATA设备寄存器的函数如程序清单12所示,ATA设备各寄存器地址宏定#define IDE_A0 (1<<16) /* EeayARM2200 和 IDE 接口直接相连,p1.16 */ #define IDE_A1 (1<<17) /* EeayARM2200 和 IDE 接口直接相连,p1.17 */ #define IDE_A2 (1<<18) /* EeayARM2200 和 IDE 接口直接相连,p1.18 */ #define IDE_CS0 (1<<19) /* EeayARM2200 和 IDE 接口直接相连,p1.19 */ #define IDE_CS1 (1<<20) /* EeayARM2200 和 IDE 接口直接相连,p1.20 */ #define IDE_DMACK (1<<21) /* EeayARM2200 和 IDE 接口直接相连,p1.21 */ #define IDE_CSEL (1<<23) /* EeayARM2200 和 IDE 接口直接相连,p1.23 */ #define IDE_IOCS16 (1<<24) /* EeayARM2200 和 IDE 接口直接相连,p1.24 */ #define IDE_PDIAG (1<<25) /* EeayARM2200 和 IDE 接口直接相连,p1.25 */ #define IDE_RST (1<<17) /* EeayARM2200 和 IDE 接口直接相连,p0.17 */ #define IDE_DMAREQ (1<<18) /* EeayARM2200 和 IDE 接口直接相连,p0.18 */ #define IDE_WR (1<<19) /* EeayARM2200 和 IDE 接口直接相连,p0.19 */ #define IDE_INTRQ (1<<20) /* EeayARM2200 和 IDE 接口直接相连,p0.20 */ #define IDE_RD (1<<21) /* EeayARM2200 和 IDE 接口直接相连,p0.21 */ /* EeayARM2200 */ #define Addr_CS_at_P1 (IDE_A0 + IDE_A1 +IDE_A2 + IDE_CS0 + IDE_CS1) (1) #define MASK_DATA (~ATA_DATA) (2) 1.1.2 函数接口的实现 1.ATA 设备寄存器读写函数 IDE_A0、IDE_A1、IDE_A2 地址信号引脚和 IDE_CS0、IDE_CS1 片选信号引脚都是在 LPC2210 的 P1 口上,正好由这些信号线确定 ATA 设备一个具体寄存器的地址;为了便于地 址的设定,将 P1 口上同时为高电平的信号引脚定义为 Addr_CS_at_P1 宏,如程序清单 1.1(1) 所示。 为了便于数据总线的方向改变和数值输出,可定义数据输出的屏蔽值 MASK_DATA.如 程序清单 1.1(2)所示。 模拟读 ATA 设备寄存器步骤如下: (1) 关系统中断,预防在读寄存器操作中产生中断; (2) 准备读取设备数据信号,设置 GPIO 模拟 ATA 接口数据的引脚为输入状态; (3) 设置寄存器的相应地址; (4) 使读 ATA 设备寄存器的信号引脚为低电平; (5) 读取 GPIO 模拟 ATA 接口数据的引脚的电平(这时数据线上的值应为设备寄存器中 的值),并调整数据位置; (6) 使读 ATA 设备寄存器的信号引脚为高电平; (7) 如果 ATA 设备(CF 卡)是 8 位总线模式,并且操作的是数据寄存器(16 位),则 需重复(3)、(4)、(5)步,再整合成 16 位的数据。 (8) 取消 ATA 设备寄存器地址的选择。 (9) 开系统中断。 GPIO 模拟读 ATA 设备寄存器的函数如程序清单 1.2 所示,ATA 设备各寄存器地址宏定
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有