For NOR Flash, can RY/BY# (or Ready/Busy) pin replace Data Polling (and toggling bits) method?

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
yuxi_3250341
Level 3
Level 3
First like received

Hi there,

I'm currently using Cypress NOR Flash in my design, including:

  S29JL064J,

  S29JL064H (this 064H is not recommended now),

  S29GL256P,

  S29gl01GT

From there datasheets I know these NOR Flash memories provide two means to obtain the result status of Program/Erase operations:

1, Ready/Busy# output (RY/BY#) pin,

   -- which is a Hardware method for detecting program or erase cycle completion;

2, Data# polling and toggle bits,

   -- which provides a software method of detecting the status of program or erase operations.

My usage for NOR Flash is:

In my design, I simply use the simplest, most straight forward read, program, sector erase and chip erase functions. I do NOT use "advanced" functions such as Erase Suspend or operations that involve a high-voltage. What I intend to use is just the simplest read, program, erase.

My question is:

1, Is RY/BY# pin fully interchangable with the Data# polling and toggle bits method?

2, Can RY/BY# pin replace the Data# polling and toggle bits method?

3, If I only use RY/BY# pin, and do NOT use Data# polling and toggle bits, is it OK?

4, Reversely, if I only use Data# polling and toggle bits method, and do NOT use RY/BY# pin, is it OK?

thanks & BR !

0 Likes
1 Solution

Hello,

Yes, your understanding is correct. You can use only data polling to know the status of internal operation of flash device and leave RY/BY# pin floating, if not used.

We recommend you to check all the relevant DQ bits mentioned in the datasheet to check the completion status of program and erase operations. Please see the data polling status table from GL-T datasheet (https://www.cypress.com/file/218336/download ) below.

pastedImage_0.png

As you see in this table, you have to check DQ7, DQ6, DQ5, DQ2 and DQ1 lines to know the completion status of a program operation. Please implement your data polling function as per the above table.

Thanks and Regards,

Sudheesh

View solution in original post

0 Likes
8 Replies
SudheeshK
Moderator
Moderator
Moderator
250 sign-ins First question asked 750 replies posted

Hello,

Please see the answer for your query from the following KBA, What is the difference between the Ready/Busy (RY/BY#) output pin status and the Data Polling (DQ7) ... . As mentioned in the KBA, RY/BY# pin cannot indicate whether an embedded operation completed successfully or not. So, we recommend to use Data polling or status register to know the actual status of an embedded operation (program and erase). Please let me know, if you need any clarifications.

Thanks and Regards,

Sudheesh

0 Likes

Hello Sudheesh,

Thanks for you kind reply! From your explanations, my understanding is as below, am I correct?

1, RY/BY# pin tells us whether the device is busy in erase/program, or, the erase/program op is "complete";

however, "complete" can mean "completes with FAILURE" or "SUCCESSFULLY completes".

Consequently, from RY/BY# we ONLY know when the prog/erase is "finished",

but we CANNOT know whether prog/erase successfully delivered expected result or it just failed.

2, Data polling or status register tells us:

(1) when the prog/erase op is finished;

(2) whether the prog/erase op is successful.

So, data polling or status register can completely replace RY/BY# pin, and RY/BY# pin can be left unused.

Can you please confirm whether my previous statements are correct or not?

And, besides, to make my design compatible across different capacities of NOR Flash,

I intend to use Data Polling, not Status Register.

However, it has many bits to poll: DQ7, DQ6, DQ2, DQ5, DQ3, and their meanings are little bit intertwined.

So, another question is, in order to detect the program/erase status result, which ones are a "minimum set of DQ bits" to poll?

Thanks & Best Regards ~

0 Likes

Hello,

Yes, your understanding is correct. You can use only data polling to know the status of internal operation of flash device and leave RY/BY# pin floating, if not used.

We recommend you to check all the relevant DQ bits mentioned in the datasheet to check the completion status of program and erase operations. Please see the data polling status table from GL-T datasheet (https://www.cypress.com/file/218336/download ) below.

pastedImage_0.png

As you see in this table, you have to check DQ7, DQ6, DQ5, DQ2 and DQ1 lines to know the completion status of a program operation. Please implement your data polling function as per the above table.

Thanks and Regards,

Sudheesh

0 Likes

Hello Sudheesh,

Thanks for your careful explanations!

As for the Data Polling method, after re-examining the datasheets, I have some further questions:

1, In S29JL064H datasheet, Figure 11.1 on page 33 explains the Data# Polling process, as shown below:

pastedImage_1.png

In S29JL064J datasheet page 35, and S29GL01GT datasheet page 39, there are identical flow diagrams.

However, in S29GL256P datasheet, I CANNOT find a similar "Data# Polling Algorithm" flow chart.

Does the "Data# Polling Algorithm" flow diagram apply to S29GL256P?

2, In the above "Data# Polling Algorithm" flow chart,

if the first round of poll gives DQ7=Data, then the flow will go to "PASS" and skip over DQ5.

In such case, with the ABSENCE of DQ5,

how can we know whether the program/erase exceeded the timing limits?

How can we know the program/erase finished with SUCCESS or FAILURE?

3, In the above "Data# Polling Algorithm" flow chart,

if DQ5 continuously stays at 0, then we will need to Read DQ7-DQ0 many times.

For these read operations, can I deassert CE# after each read?

That is:

Is it required that CE# must continuously stay at 0 during the many reads of data# polling process?

Or, is it OK that I set CE#=0 at the beginning of each read, and then set CE#=1 after each read?

4, Still about the above "Data# Polling Algorithm" flow chart,

if RY/BY# is unused and left unconnected, then with the absence of RY/BY#,

how can I know the current read op is giving me the status data, or the actual true data in the specified address?

Thanks & Best Regards!

xieyl

0 Likes

Hello,

Please find the answer for your queries below.

1. Yes, the same flow chart is applicable for S29GL256P device also. Data polling flow chart for program operation is given on page 32 of S29GL256P (https://www.cypress.com/file/219926/download ​).

2. Flash device sets the DQ5 bit to 1 only when the programming is not successful. So, you will not see DQ7 = Data when a timeout happens.

3. Yes, you can make CE# high after each read during data polling.

4. I am not clear about your 4th query. After each program/erase operation you have to perform perform data polling and make sure that the embedded operation completed successfully. If there are any error, then you have to make appropriate actions. e.g. If DQ5 is 1 during data polling, then you must write the reset command to return to read mode. Please clarify your query, if my understanding is wrong.

Thanks and Regards,

Sudheesh

0 Likes

Hello Sudheesh,

Thank you for your careful response to my queries.

2. Based on your explanation, my understanding is:

In the "Data# Polling Algorithm" flow chart, if the first round of polling gives DQ7=Data, then it implies DQ5 is 0 and the program op is successful. Am I right?

4. The original intention of query 4 is:

Without RY/BY# pin, data# polling is the only way to know whether a program/erase op is finished or not; however, in my understanding a "polling" is actually equivalent to a data read operation. So my question was, how can I know the DOUT of the current read op is giving me the "polling status result" or "actual data read output"?

Now, after your previous explaination of query 2, I may try to answer it for myself, as is shown below, can you please confirm whether I'm correct or not?

(1) After a program op, if a read op gives DQ7=Programmed Data at this bit, then the program is FINISHED and SUCCESSFUL, one more successive read op will give the actual data programmed in the address location;

(2) After a program op, if a read op gives DQ7 = complement of Programmed data at this bit, then the program is still IN PROGRESS, and we should follow the "Data# Polling Algorithm" flow chart below to know when it FINISHes, and whether it's FAIL/SUCCESS;

(3) After an erase op, if a read op gives DQ7=1, then the erase op is FINISHed and SUCCESSFUL;

(4) After an erase op, if a read op gives DQ7=0, then the program is still IN PROGRESS, and we should follow the "Data# Polling Algorithm" flow chart below to know when it FINISHes, and whether it's FAIL/SUCCESS.

(5) This flow chart applies to S29JL064H, S29JL064J, S29GL256P and S29GL01GT;

(6) This flow chart applies to all other Cypress parallel NOR Flash devices.

Am I correct ?

pastedImage_1.png

Thanks & Best Regards!

xieyl

Feb 18, 2020

0 Likes

Hello,

Yes, your understanding is correct. All of our parallel NOR flash devices have similar data# polling algorithm. I request you to refer the respective datasheets for specific details.

Thanks and Regards,

Sudheesh

0 Likes

Hello, Sudheesh,

Thank you for your careful crystal clear explanations!

Thanks and Best Regards

xieyl

Feb 18, 2020.

0 Likes