关于EASYARM2200外部存储器实验
// FLASH的起始地址(分配为Bank1块)#defineFLASH_ADDR0x81000000
// 转换地址。将要发送给SST39VF160的地址值进行转换,以便于LPC2210输出。
// 由于SST39VF160的A0是与LPC2210的A1相连,所以addr要左移1位。
#defineGetAddr(addr) (volatile uint16*)(FLASH_ADDR|(addr<<1))
/****************************************************************************
* 名称:WordProgram()
* 功能:半字(16位)数据编程。
* 入口参数:Addr编程地址(SST39VF160内部地址)
* Data编程数据
* 出口参数:返回TRUE表示操作成功,返回FALSE表示操作失败
****************************************************************************/
uint8WordProgram(uint32 Addr, uint16 Data)
{volatile uint16*ip;
uint16temp1,temp2;
ip = GetAddr(0x5555); // 转换地址0x5555
ip = 0xaaaa; // 第一个写周期,地址0x5555,数据0xAA
ip = GetAddr(0x2aaa);
ip = 0x5555; // 第二个写周期,地址0x2aaa,数据0x55
ip = GetAddr(0x5555);
ip = 0xa0a0; // 第三个写周期,地址0x5555,数据0xA0
ip = GetAddr(Addr);
*ip = Data; // 第四个写周期,地址Addr,数据Data
while (1) // 等待操作完成 (若编程操作没有完成,每次读操作DQ6会跳变)
{temp1 = *ip;
temp2 = *ip;
if (temp1 == temp2)
{if (temp1 != Data)
{return(FALSE);
}
else
{return(TRUE);
}
}
}
return(TRUE);
}
第四个写周期是什么意思??
等待操作完成 (若编程操作没有完成,每次读操作DQ6会跳变)
什么意思?
谢谢大家
页:
[1]