lpc中有IOPIN,IOSET,IOCLR,IODIR好像都不能存储数据
而avr有PORTA,PINA,DDRA,PORTA是数据锁存器,感觉PINA像lpc中的IOPIN,DDRA像IODIR。
lpc2148中有没有数据锁存器,像avr中的PORTA那样的,能存储数据的。如果没有的话数据怎么读写。
我是用lpc2148接nand flash(K9F2G08U0M)。flash的8个IO接lpc的P1.16-P1.23 。 CLE—P0.10,WE—P0.11,RE—P0.12,ALE—P0.13,RY/BY—P0.14 。 没有使用CE口是因为硬件已经确定了,IO口用完了.CE是总是接上的。
我定义了P1口高速使能 。 void BusSetOutput() { FIO1DIR2=0xFF; }
void BusSetInput() { FIO1DIR2=0x00; }
void BusSetData(BYTE Data) { FIO1PIN2= Data; }
BYTE BusGetData() { BYTE Result; Result=FIO1PIN2; return Result; }
void FlashWriteData(BYTE Data) { FLASH_WE_LOW;
BusSetData(Data); FLASH_WE_HIGH; }
BYTE FlashReadData()//? { BYTE Result;
FLASH_RE_LOW; Result = BusGetData(); FLASH_RE_HIGH;
return Result; } BYTE FlashReadDeviceInfo() { BYTE FlashMaker; // FLASH_CE_LOW; BusSetOutput(); // Default is Output FLASH_RE_HIGH; FLASH_WE_HIGH; FLASH_CLE_HIGH; FlashWriteData(CMD_READ_ID); FLASH_CLE_LOW; FLASH_ALE_HIGH; FlashWriteData(0x00);//? FLASH_ALE_LOW;
BusSetInput(); FlashMaker = FlashReadData(); BusSetOutput(); return FlashMaker;
} 这样可以读出flash的ID吗???我主要是不确定BusSetData()和BusGetData()是否正确!!我在板子上试了,不可以。那要怎么读写数据,地址和命令呢??? 是不是要根据电路图来确定数据寄存器,地址寄存器,命令寄存器的地址??怎么确定??
请教高手们!!!! |