Fuses: Difference between revisions

No edit summary
Line 11: Line 11:
!  Address
!  Address
|-
|-
| [[#FUSE_CTRL|FUSE_CTRL]]
| [[#FUSE_FUSECTRL|FUSE_FUSECTRL]]
| 0x7000F800
| 0x7000F800
|-
|-
| [[#FUSE_REG_ADDR|FUSE_REG_ADDR]]
| [[#FUSE_FUSEADDR|FUSE_FUSEADDR]]
| 0x7000F804
| 0x7000F804
|-
|-
| [[#FUSE_REG_READ|FUSE_REG_READ]]
| [[#FUSE_FUSERDATA|FUSE_FUSERDATA]]
| 0x7000F808
| 0x7000F808
|-
|-
| [[#FUSE_REG_WRITE|FUSE_REG_WRITE]]
| [[#FUSE_FUSEWDATA|FUSE_FUSEWDATA]]
| 0x7000F80C
| 0x7000F80C
|-
|-
| FUSE_TIME_RD1
| FUSE_FUSETIME_RD1
| 0x7000F810
| 0x7000F810
|-
|-
| FUSE_TIME_RD2
| FUSE_FUSETIME_RD2
| 0x7000F814
| 0x7000F814
|-
|-
| FUSE_TIME_PGM1
| FUSE_FUSETIME_PGM1
| 0x7000F818
| 0x7000F818
|-
|-
| [[#FUSE_TIME_PGM2|FUSE_TIME_PGM2]]
| [[#FUSE_FUSETIME_PGM2|FUSE_FUSETIME_PGM2]]
| 0x7000F81C
| 0x7000F81C
|-
|-
| [[#FUSE_PRIV2INTFC|FUSE_PRIV2INTFC]]
| [[#FUSE_PRIV2INTFC_START|FUSE_PRIV2INTFC_START]]
| 0x7000F820
| 0x7000F820
|-
|-
Line 44: Line 44:
| 0x7000F828
| 0x7000F828
|-
|-
| [[#FUSE_DIS_PGM|FUSE_DIS_PGM]]
| [[#FUSE_DISABLEREGPROGRAM|FUSE_DISABLEREGPROGRAM]]
| 0x7000F82C
| 0x7000F82C
|-
|-
| [[#FUSE_WRITE_ACCESS|FUSE_WRITE_ACCESS]]
| [[#FUSE_WRITE_ACCESS_SW|FUSE_WRITE_ACCESS_SW]]
| 0x7000F830
| 0x7000F830
|-
|-
Line 56: Line 56:
| 0x7000F83C
| 0x7000F83C
|-
|-
| FUSE_TIME_RD3
| FUSE_FUSETIME_RD3
| 0x7000F84C
| 0x7000F84C
|-
|-
Line 75: Line 75:
|}
|}


==== FUSE_CTRL ====
==== FUSE_FUSECTRL ====
{| class="wikitable" border="1"
{| class="wikitable" border="1"
!  Bits
!  Bits
Line 81: Line 81:
|-
|-
| 0-1
| 0-1
| Fuse command (1 = FUSE_READ; 2 = FUSE_WRITE; 3 = FUSE_SENSE)
| FUSE_FUSECTRL_CMD
0x00: IDLE
0x01: READ
0x02: WRITE
0x03: SENSE_CTRL
|-
|-
| 16-20
| 16-20
| Fuse state (4 = STATE_IDLE)
| FUSE_FUSECTRL_STATE
0x00: STATE_RESET
0x01: STATE_POST_RESET
0x02: STATE_LOAD_ROW0
0x03: STATE_LOAD_ROW1
0x04: STATE_IDLE
0x05: STATE_READ_SETUP
0x06: STATE_READ_STROBE
0x07: STATE_SAMPLE_FUSES
0x08: STATE_READ_HOLD
0x09: STATE_FUSE_SRC_SETUP
0x0A: STATE_WRITE_SETUP
0x0B: STATE_WRITE_ADDR_SETUP
0x0C: STATE_WRITE_PROGRAM
0x0D: STATE_WRITE_ADDR_HOLD
0x0E: STATE_FUSE_SRC_HOLD
0x0F: STATE_READ_BEFORE_WRITE_SETUP
|-
| 21
| FUSE_FUSECTRL_MARGIN_READ
|-
| 22
| FUSE_FUSECTRL_RWL
|-
| 23
| FUSE_FUSECTRL_TRCS
|-
| 24
| FUSE_FUSECTRL_AT1
|-
| 25
| FUSE_FUSECTRL_AT0
|-
|-
| 26
| 26
| Fuse power down mode flag (FUSE_CTRL_PD)
| FUSE_FUSECTRL_PD_CTRL
|-
|-
| 30
| 30
| Fuse sense status (FUSE_CTRL_SENSE_DONE)
| FUSE_FUSECTRL_FUSE_SENSE_DONE
|-
| 31
| FUSE_FUSECTRL_RECORD_SHIFT_DONE
|}
|}


Before fuse reading/writing the power down mode must be disabled.
Before fuse reading/writing the power down mode must be disabled.
FUSE_SENSE mode flushes programmed values into the [[Fuses#Cache_registers|cache registers]].
SENSE_CTRL mode flushes programmed values into the [[Fuses#Cache_registers|cache registers]].


==== FUSE_REG_ADDR ====
==== FUSE_FUSEADDR ====
This register takes the address of the fuse to be read/written/sensed.
This register takes the address of the fuse to be read/written/sensed.


==== FUSE_REG_READ ====
==== FUSE_FUSERDATA ====
This register receives the value read from the fuse.
This register receives the value read from the fuse.


==== FUSE_REG_WRITE ====
==== FUSE_FUSEWDATA ====
This register takes the value to be written to the fuse.
This register takes the value to be written to the fuse.


==== FUSE_TIME_PGM2 ====
==== FUSE_FUSETIME_PGM2 ====
This register takes the fuse programming pulse (0xC0 == 19200 kHz).
This register takes the fuse programming pulse (0xC0 == 19200 kHz).


==== FUSE_PRIV2INTFC ====
==== FUSE_PRIV2INTFC_START ====
{| class="wikitable" border="1"
{| class="wikitable" border="1"
!  Bits
!  Bits
Line 114: Line 152:
|-
|-
| 0
| 0
| FUSE_PRIV2INTFC_SDATA
| FUSE_PRIV2INTFC_START_DATA
|-
|-
| 1
| 1
| FUSE_PRIV2INTFC_SKIP_RECORDS
| FUSE_PRIV2INTFC_START_SKIP_RECORDS
|}
|}


==== FUSE_DIS_PGM ====
==== FUSE_DISABLEREGPROGRAM ====
If set to 0x01, this register disables fuse programming.
If set to 0x01, this register disables fuse programming.


==== FUSE_WRITE_ACCESS ====
==== FUSE_WRITE_ACCESS_SW ====
If set to 0x01, this register disables software writes to the fuse driver registers.
If set to 0x01, this register disables software writes to the fuse driver registers.