Why can't I program/erase a Flash device?
The inability to program/erase a Flash device may be a result of different factors. Listed are the most common causes and resolutions:
- Make certain the algorithm flowchart is followed, as detailed in the data sheet. Use the data polling or toggle method to determine the completion of the operation. Do not try to assign typical time duration to the operation and assume the operation will be completed after the assigned time duration has elapsed.
- In an 8-bit data bus system, input A0 of the system address bus connects to A0 of an 8-bit only Flash device, input A1 of the system address bus connects to A1, etc
However, in a 16-bit data bus system with byte addressing capability using two 8-bit Flash devices, the system address bus should be shifted relative to the Flash address inputs by one bit. That is, input A1 of the system address bus connects to A0 of the Flash address inputs, input A2 of the system address bus connects to A1 of the Flash address inputs, and so on. Input A0 of the system address bus is not connected to the Flash device, and can be used to select the Flash device to be used for low or high byte transfer. This is similar to a 16-bit system using two dual-mode (x8/x16) Flash devices in byte mode. A1 of the system address bus connects to A-1 of the Flash device, A2 of the system address bus connects to A0 on the Flash device, etc.
Since physical address connections are shifted by one bit, the command values on the address lines from the processor's point of view will be different from those stated in the Command Definitions Table, where the Flash device is the reference point. As well, make certain no excessive undershoots occur on any input signals to the Flash device. Terminate the signals if necessary.