Difference between revisions of "84PCE:OS:Serial Flash Commands"

From WikiTI
Jump to: navigation, search
(Basic Flash Commands)
Line 29: Line 29:
  
 
Afterwards, write each byte to $E00900, followed by a normal wait.
 
Afterwards, write each byte to $E00900, followed by a normal wait.
 +
 +
=== Read Status Register ===
 +
<pre>
 +
00000000 00000001 01000000 000000XX
 +
</pre>
 +
 +
X is $05 for register 1, $35 for register 2, or $15 for register 3.
 +
 +
Afterwards, wait for $E00818 bit 1 to be set and read register value from $E00900.

Revision as of 02:00, 30 June 2019

The Python Edition calculator contains a new serial flash chip with an entirely new interface. For pre-Python calculators see the old parallel interface.

For reference, pages are 256 bytes, sectors are 4KB, and blocks are 64KB.

Datasheet for the W25Q32JV is here.

Basic Flash Commands

You write a command to the range $E00800-$E0080F and then wait until $E00824 bit 0 is set at which point you acknowledge by setting the same bit.

Erasing

00000000 00000001 00000000 02000006
XXXXXXXX 03000001 00000000 020000D8
00000000 00000001 00000000 04000005

X is the address of the block to erase.

Writing

Writes can only happen within a single page at a time.

00000000 00000001 00000000 02000006
XXXXXXXX 03000001 YYYYYYYY 42000032

X is the address to write to.

Y is the number of bytes to write, at most the number of bytes remaining in the page.

Afterwards, write each byte to $E00900, followed by a normal wait.

Read Status Register

00000000 00000001 01000000 000000XX

X is $05 for register 1, $35 for register 2, or $15 for register 3.

Afterwards, wait for $E00818 bit 1 to be set and read register value from $E00900.