Nor Flash Forum Discussions
text.format{('custom.tabs.no.results')}
Hello,
We are using this type of a memory in our board.
We are using it as SPI communication with CLK frequency 20 MHz.
We want to connect EEPROM SPI memory with the NOR Flash. The problem is the chosen EEPROM SPI memory runs at 10 MHz CLK. Is it possible to lower the frequency of the NOR FLASH to 10 MHz and to connect the EEPROM with the signals CLK, MOSI, MISO and two CS for both chips?
Thank you in advance!
Best regards,
Ana Ilieva
I modified the vhdl model to default the Configuration Register to QUAD mode. This bit is non-volatile. So, i wanted to have the chip default to what it would be in my system after having programmed that bit.
-- *** Configuration Register 1 ***
--SHARED VARIABLE Config_reg1 : std_logic_vector(7 downto 0) := (others => '0');
SHARED VARIABLE Config_reg1 : std_logic_vector(7 downto 0) := x"02";
I also modified the processes below to properly set the _pullup to a valid value if QUAD = '1' (not 0)
HOLD_PULL_UP : PROCESS(HOLDNegIn)
BEGIN
IF (QUAD = '0') THEN
IF (HOLDNegIn = 'Z') THEN
HOLDNeg_pullup <= '1';
ELSE
HOLDNeg_pullup <= HOLDNegIn;
END IF;
ELSE
HOLDNeg_pullup <= HOLDNegIn;
END IF;
END PROCESS HOLD_PULL_UP;
WP_PULL_UP : PROCESS(WPNegIn)
BEGIN
IF (QUAD = '0') THEN
IF (WPNegIn = 'Z') THEN
WPNeg_pullup <= '1';
ELSE
WPNeg_pullup <= WPNegIn;
END IF;
ELSE
WPNeg_pullup <= WPNegIn;
END IF;
END PROCESS WP_PULL_UP;
When I do a READ (QIOR4) the data that comes back is NOT what was preloaded in the memory.
I did set UserPreload to TRUE. Everything works fine when operating in QUAD=0 mode and doing a FAST_READ4. The proper data comes back.
I am using the s25fl512s.mem file and I am reading from address 0x0000000.
I should see 01 02 03 04 ... coming back.
From the .mem file:
@0000000
01
02
03
04
05
Instead I see:
10
01
32
22
FF
Any ideas what is going on? The .docx file may be easier to view and zoom in on.
Show LessI want the IBIS model and S-parameters model of S28HS01GTGZBHM030. Where is it on the web? Can you provide me it if it is not on the Web?
Thanks,
Tetsuo
We are trying to measure the Sector Erase time for S29GL032N.
We want to know how the Min and Max given in the datasheet (0.5 Sec and 3.5Sec) (Page 70) are mentioned. What are the test conditions and which sectors these readings are applicable?
Show Less
We are using NOR Flash in our new product. I want to derive Sector Address as required for Protect/Unprotect function. The below shared code uses few macros for deriving the Sector Address. This code did not share the values of the macros used in this function. Can I get the values for macros used in this function?
SHORT_FLASH_SECTOR_ADDRESS, LARGE_SECTOR_SIZE, SMALL_SECTOR_SIZE
void flashProtectAllSectors( void )
{
Uint32 sectorAddress, saIndx;
volatile Uint16 *p; // flash pointer
// Calculate the sector offset address relative to the flash base address.
// See device datasheet Table 3. S29JL032J Sector Addresses - Top Boot Devices
for( saIndx=0; saIndx<71; saIndx++ )
{
// Note that "sectorAddress" is the sector's starting address. Values
// calculated here are as given in the aforementioned Table 3,
// column "(x8)Address Range" 000000h (SA0) through to 3FE000h (SA70)
if ( saIndx < ( ( SHORT_FLASH_SECTOR_ADDRESS & 0x3F0000 ) >> 16 ) )
{ // 32 KWords
sectorAddress = saIndx*LARGE_SECTOR_SIZE;
}
else
{ // 4K Words
sectorAddress = SHORT_FLASH_SECTOR_ADDRESS;
sectorAddress += ( saIndx - ( ( SHORT_FLASH_SECTOR_ADDRESS & 0x3F0000 ) >> 16 ) )*SMALL_SECTOR_SIZE;
}
// Device datasheet Figure 2 - In-System Sector Protect sector algorithm.
flashProtectSector( sectorAddress );
// Feedback.
printf( "Sector Protected %d \n\r", saIndx );
}// for all sectors SA0 through SA70
printf("Boot sector protect complete. Ensure 12VDC has been removed from RESET#.\n\r");
printf( "...\n\r" );
printf("\n\r");
/**NOTE NOT SHOWN --> SYSTEM PAUSED HERE TO REMOVE RESET# Vid 12VDC BEFORE PROCEEDING**/
// The 12VDC shall have been removed from RESET# at this time.
// Reset the flash (FLASH_START_ADDRESS 0x90000000)
p = ( Uint16* )FLASH_START_ADDRESS;
resetFlash(p);
} // flashProtectAllSectors
Show LessHello, I want to use the S29GL512T through SM32F7 and I can't program/erase. In prior’s designs, the board had the memory S29GL128N and now I want to use the new S29GL512T without change the board design.
Thus, the first question is, can I issue the S29GL512T as 128Mbits memory keeping the A23 and A24 pins to no connect? Or is there any other inconvenient?
Then if there is no problem to use S29GL512T, I’ve developing an external loader to program the memory and, as I said, the program/erase doesn't work. I'm not sure what happens, but I suspect the sequence isn't sent successfully because the RD/BY# pin never detects the falling edge. Can you help me and suggest things to check for the program/erase process works?
This is the code for MassErase
int MassErase(void) {
uint8_t mass_erase = 0;
unsigned long polling_counter = 0xFFFFFFFF;
volatile uint16_t status_reg;
NOR_WRITE(NOR_ADDR_SHIFT(BSP_NOR_BASE_ADDR, NOR_MEMORY_16B, 0x555), 0xAA);
NOR_WRITE(NOR_ADDR_SHIFT(BSP_NOR_BASE_ADDR, NOR_MEMORY_16B, 0x2AA), 0x55);
NOR_WRITE(NOR_ADDR_SHIFT(BSP_NOR_BASE_ADDR, NOR_MEMORY_16B, 0x555), 0x80);
NOR_WRITE(NOR_ADDR_SHIFT(BSP_NOR_BASE_ADDR, NOR_MEMORY_16B, 0x555), 0xAA);
NOR_WRITE(NOR_ADDR_SHIFT(BSP_NOR_BASE_ADDR, NOR_MEMORY_16B, 0x2AA), 0x55);
NOR_WRITE(NOR_ADDR_SHIFT(BSP_NOR_BASE_ADDR, NOR_MEMORY_16B, 0x555), 0x10);
do {
polling_counter--;
NOR_WRITE(NOR_ADDR_SHIFT(BSP_NOR_BASE_ADDR, NOR_MEMORY_16B, 0x555), 0x70);
status_reg = *(__IO uint32_t *)(uint32_t)BSP_NOR_BASE_ADDR;
if( (status_reg & 0x80) == 0x80 ) /* Are all devices done bit 7 is 1 */
break;
}while(polling_counter);
#if DEBUG
if ((status_reg & 0x20) == 0x20) {
PRINT_TEXT("Mass erase error");
mass_erase = 0;
} else {
PRINT_TEXT("Mass erase done!");
mass_erase = 1;
}
#endif
return mass_erase;
}
Show Less
Can you please provide the IBIS and Step models for S25FL512SAGMFMR10 ?
Hello,
One of our boards has a problem while reading the device id of S25FL064L. Design is consist of the multiplexer, ethernet controller, nor flash, and spi header. We can select either an ethernet controller or spi header. When I selected to spi header, nor flash does not respond to the manufacturer id etc. I can read only 00 from spi emulator.
When I selected to ethernet controller, the MOSI pin seems weird. You may see that the signal level is about 1.6V. Flash also drives the MOSI pin. I think that nor flash was wrongly configured. ( I do not know how it is) It may be in QSPI flash mode.
Is there any way to exit from this mode using normal spi reading or writing?
Thanks
Show LessHi,
Now I use S25HS512T flash chip in our project, and need SDK for the chip of your product.
I have submitted download request, but that request has not been progressed. So I hope you can deal it early!
Thank you!
Show LessWe are planning to use Erase Suspend and Resume operations for S29GL032N NOR Flash in our product.
We want to know how much time Erase Suspend command execution will take (min and max values).
This time is not given in the datasheet.
Regards,
Anil Patil
Show Less