We are not able to set 'WEL' bit in Status Register 1, or even read back what is written in Memory. We are using a FPGA to inter...
We are not able to set 'WEL' bit in Status Register 1, or even read back what is written in Memory. We are using a FPGA to interface with Serial Flash S25FL256S... . Below is the sequence of operations.
Wait for Tpu of 300us
Read JEDC ID (Instruction 0x1F). Correct data is read back.
Issue Status register read (RDSR Instruction 0x05), reads back 0x0. Expect WEL (bit 1 to be set since WREN was issued).
Issue Page Program (PP, Instruction 0x2, address[23:0] = 0x0, 4 Bytes of data).
Wait for 2 ms (for page program to complete).
Read Status 1 register, reads back 0x0.
Read Flash Array (Instruction, 0xB, address [23:0] = 0x0, ), reads back 0xFF all bytes. So data could not be stored.
I am attaching some waveforms showing the operations. The file names of waveforms indicate the type of operation being performed. These waveforms are from Xilinx Vivado ILA. The signal names are mapped as below.
Below is some information about the operations shown in the waveforms.
1) Read JED ID & Issue WREN.jpg: This file shows that reading of JEDEC ID is working. After reading the ID, we are issuing 'WREN' Instruction to set the 'WEL' bit.
2) Erase Flash Array (P4E).jpg: Before writing we are erasing the sector at address 0x0.
3) Read Status register 1, RDSR1 .jpg: Reading Status Register 1, read back data is 0x0.
4) Page Program & Read Status Register.jpg: Write data to memory and read Status Register 1, read back data is still 0x0, WIP bit not set.
5) Read Status Register & Read Flash Array.jpg: Read status register and read data from memory. Status register is still 0x0 and data read from memory is all 0xFF. Four bytes were written and four bytes read back.
Did we miss anything from the datasheet? Are we doing something incorrectly? Please help!
Hello,I am trying to write bit 3 of configuration register 3 in a S25HL250T device. I see in the data sheet that the bit is only writeable in the non...
Hello, I am trying to write bit 3 of configuration register 3 in a S25HL250T device. I see in the data sheet that the bit is only writeable in the nonvolatille memory space address 0x000004. My sequence is as follows: read config 3 using a polling transfer routine // read data = 0x04... I was expecting 0x00 based on the data sheet?? data |= 0x08; //set bit 3 of the write data WRENB_0_0;// write the write enable bit command 0x06
Recently I was doing some hacky/fancy tests of flash chip behavior between different manufacturers when it is used not *exactly* ho...
Recently I was doing some hacky/fancy tests of flash chip behavior between different manufacturers when it is used not *exactly* how it was intended 😉 I was changing configuration of external memory controller in my MCU to drive WE# line low or high during reading operation (used for example for chips with byte lane selection etc.) and I've encountered something strange which I couldn't find in the S29AL016J datasheet.
In other flash chip manufacturers (pin-to-pin comp. + same timings and control) when I try to perform read operation ("uint16_t test = *(uint16_t*)(FLASH_BASE);") everything works correctly, i.e. data is exposed on data lines if WE# line is driven high, and data lines are kept low if WE# line is driven low.
In S29AL016J it doesn't matter if MCU drives WE# line low or high during reading, chip drives data lines anyway!
It looks like some flash chip's internal state machine checks if address set on address lines is "special" one (0x555 etc.) and if not, it executes read operation and exposes data on data lines.
Could anybody confirm it?
Some snippet code looks like that:
//set EMC to drive WE# line low during reading
//set EMC to drive WE# line high during reading
uint8_t test = ( *( Uint16 * )(0x80000000L)) & 0xFF;
I have few identical PCBs with same MCU, only flash chip is different.
I was facing the problem in writing and reading the data into the Flash memory of S25HL512T in QSPI mode. I have the Flash to operate in QS...
I was facing the problem in writing and reading the data into the Flash memory of S25HL512T in QSPI mode. I have the Flash to operate in QSPI mode by writing the configuration registers. The following steps are done for write and read the flash memory.
Writing the memory
Reading the memory
I was following the above steps, but I was not able to Write/read the memory. Please help to resolve.