程序执行EMI_Config(0, j);后EMI_BCON0=0X803D, Check_SST_39VF160X()中ReturnStatus = FALSE;,电路是CS0接FLASH,请问哪里不对??<br /><br /><br />#define FALSE 0<br />#define TRUE 1<br /><br />#define SECTOR_SIZE 2048 // Must be 2048 words for 39VF160X<br />#define BLOCK_SIZE 32768 // Must be 32K words for 39VF160X<br /><br />#define SST_ID 0x00BF // SST Manufacturer's ID code<br />#define SST_39VF1601 0x234B // SST39VF1601 device code<br />#define SST_39VF1602 0x234A // SST39VF1602 device code<br /><br />typedef unsigned char BYTE; // BYTE is 8-bit in length<br />typedef unsigned int WORD; // WORD is 16-bit in length<br />typedef unsigned long int Uint32; // Uint32 is 32-bit in length<br /><br />Uint32 system_base = 0x60000000; // 4GByte System Memory Address.<br /> // This sample code uses 0xC0000000 as the system_base address.<br /> // The user should modify this address accordingly.<br /><br />#define sysAddress(offset) ((volatile WORD *)(system_base + offset))<br /><br /><br />int Check_SST_39VF160X(void)<br />{<br /> WORD SST_id1;<br /> WORD SST_id2;<br /> int ReturnStatus;<br /><br /> // Issue the Software Product ID code to 39VF160X<br /> *sysAddress(0x5555) = 0x00AA; // write data 0x00AA to device addr 0x5555<br /> *sysAddress(0x2AAA) = 0x0055; // write data 0x0055 to device addr 0x2AAA<br /> *sysAddress(0x5555) = 0x0090; // write data 0x0090 to device addr 0x5555<br /> Delay_150_Nano_Seconds(); // Tida Max 150ns for 39VF160X<br /><br /> // Read the product ID from 39VF160X<br /> SST_id1 = *sysAddress(0x0000); // get first ID byte<br /> SST_id2 = *sysAddress(0x0001); // get second ID byte<br /><br /> // ------------------------------------------------------------<br /> // Determine whether there is a SST 39VF1601 installed or not<br /> // use the following code:<br /><br /> if ((SST_id1 == SST_ID) && (SST_id2 == SST_39VF1601))<br /> ReturnStatus = TRUE;<br /> else<br /> ReturnStatus = FALSE;<br /> // ------------------------------------------------------------<br /> // Or determine whether there is a SST 39VF1602 installed or not<br /> // use the following code:<br /> <br /> if ((SST_id1 == SST_ID) && (SST_id2 == SST_39VF1602))<br /> ReturnStatus = TRUE;<br /> else<br /> ReturnStatus = FALSE;<br /> // ------------------------------------------------------------<br /><br /> // Issue the Software Product ID Exit code, thus returning the<br /> // 39VF160X to the normal operation.<br /> *sysAddress(0x5555) = 0x00AA; // write data 0x00AA to device addr 0x5555<br /> *sysAddress(0x2AAA) = 0x0055; // write data 0x0055 to device addr 0x2AAA<br /> *sysAddress(0x5555) = 0x00F0; // write data 0x00F0 to device addr 0x5555<br /> Delay_150_Nano_Seconds(); // Tida Max 150ns for 39VF160X<br /> <br /> return (ReturnStatus);<br />}<br /><br /><br /><br />void __main(void)<br />{<br /> int i = 0, j;<br /><br /> <br /> j= EMI_WAITSTATE(15);<br /> j=j| EMI_SIZE_16;<br /> j=j|EMI_ENABLE;<br /> EMI_Config(0, j);<br /> Check_SST_39VF160X();<br /><br />}<br /> |
|