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