There are memory locations that are
programmable in non-volatile memory (NVM) using OTP (One Time Progammable). The
memory space is divided in two groups: factory space and customer space. The factory
space stores the device configurations that are essential for normal operation. This
space is not accessible by the host. The customer space contains the default device
settings that the host system can customize for their application configuration.
This space is readable and programmable by the host.
Follow the procedures found below for
OTP programming:
- Unlock the OTP programming.
- Write the following data to
OTP_PROG_UNLOCK1A to OTP_PROG_UNLOCK1D:
- OTP_PROG_UNLOCK1A
<- data 0x02
- OTP_PROG_UNLOCK1B
<- data 0xB7
- OTP_PROG_UNLOCK1C
<- data 0x78
- OTP_PROG_UNLOCK1D
<- data 0xBC
- Do another write with
following data to OTP_PROG_UNLOCK2A to OTP_PROG_UNLOCK2D registers.
- OTP_PROG_UNLOCK2A
<- data 0x7E
- OTP_PROG_UNLOCK2B
<- data 0x12
- OTP_PROG_UNLOCK2C
<- data 0x08
- OTP_PROG_UNLOCK2D
<- data 0x6F
Note: Each block of
registers must be written in order (that is A,B,C, then D) with no other
writes or reads between. The best practice is to use the same Write command
to update. If there is any attempt to update the registers out of sequence
or if another register is written/read between writes, the entire sequence
must be redone.
- Check to confirm the OTP unlock
procedure is successful.
- Read to confirm
OTP_PROG_STAT[UNLOCK] = 1.
Note: Issuing a Read command
after step 1 is allowed, but issuing a [PROG_GO] must be the next write
command after the unlock procedures.
- Select the proper OTP page and
start the OTP programing.
- To program page1, set
OTP_PROG_CTRL[PAGESEL][PROG_GO] = 0x01, OR
- To program page2, set
OTP_PROG_CTRL[PAGESEL][PROG_GO] = 0x03.
- Wait tPROG for
the OTP programming to complete.
- Check to ensure there is no error
during OTP programming. The following bits are expected to be ‘1’ after a
successful OTP programming.
- OTP_PROG_STAT[DONE] = 1,
OTP programming is done. No other bit shall be set in this
register.
- If page 1 is programmed,
OTP_CUST*_STAT*[PROGOK], [TRY], [OVOK] and [UVOK] bits shall be ‘1’.
Other bits shall be ‘0’.
- If page 2 is programmed,
OTP_CUST1_STAT[LOADED], [PROGOK], [TRY], [OVOK], and [UVOK] bits shall
be ‘1’. Other bits in OTP_CUST*_STAT shall be '0'.
- Issue a digital reset to reload the
registers with the updated OTP values.
- CONTROL1[SOFT_RESET] =
1
During the programming procedure, the
device performs a programming voltage stability test prior to actually programming
the OTP. If a programming voltage fails the stability test, the device does not set
the OTP_CUST*_STAT[TRY] bit, giving the customer another attempt to program the page
again.
If the host incorrectly selected a
page for programming, the OTP_PROG_STAT[PROGERR] bit is set. This indicates that the
selected page is not available to be programmed. Select the correct page and retry
programming.