# Qwantum ASIC Registers

This section describes the register addresses and values that may be accessible in read/write by the SPI master.

## Register Map <a href="#bookmark61" id="bookmark61"></a>

## **Table - Register Map**

<table data-header-hidden><thead><tr><th></th><th width="84" valign="top"></th><th width="77.33331298828125" valign="top"></th><th width="94" valign="top"></th><th width="83.3333740234375" valign="top"></th><th valign="top"></th><th width="90.66668701171875" valign="top"></th></tr></thead><tbody><tr><td>Group</td><td valign="top">Lower Addr Range</td><td valign="top">Upper Addr Range</td><td valign="top">Number of Data Words</td><td valign="top">Access Type</td><td valign="top"><p> </p><p>Description</p></td><td valign="top">Default Value</td></tr><tr><td>User Registers</td><td valign="top">0x00</td><td valign="top">0x00</td><td valign="top">1</td><td valign="top">R/W</td><td valign="top">Configuration Register</td><td valign="top">0x0000</td></tr><tr><td>User Registers</td><td valign="top">0x01</td><td valign="top">0x01</td><td valign="top">1</td><td valign="top">R/W</td><td valign="top">FSM State Command Register</td><td valign="top">0x0000</td></tr><tr><td>User Registers</td><td valign="top">0x02</td><td valign="top">0x02</td><td valign="top">1</td><td valign="top">R</td><td valign="top">Status 1 Register</td><td valign="top">0x2000</td></tr><tr><td>User Registers</td><td valign="top">0x03</td><td valign="top">0x04</td><td valign="top">2</td><td valign="top"> </td><td valign="top">Reserved</td><td valign="top"> </td></tr><tr><td>User Registers</td><td valign="top">0x05</td><td valign="top">0x05</td><td valign="top">1</td><td valign="top">R/W</td><td valign="top">Acknowledge Register</td><td valign="top">0x0000</td></tr><tr><td>User Registers</td><td valign="top">0x06</td><td valign="top">0x09</td><td valign="top">4</td><td valign="top"> </td><td valign="top">Reserved</td><td valign="top"> </td></tr><tr><td>EEPROM Shadow Registers</td><td valign="top">0x0A</td><td valign="top">0x0A</td><td valign="top">1</td><td valign="top">R/W</td><td valign="top">MagTek Password Register</td><td valign="top">0x0000</td></tr><tr><td>EEPROM Shadow Registers</td><td valign="top">0x0B</td><td valign="top">0x0F</td><td valign="top">5</td><td valign="top"> </td><td valign="top">Reserved</td><td valign="top"> </td></tr><tr><td>EEPROM Shadow Registers</td><td valign="top">0x10</td><td valign="top">0x10</td><td valign="top">1</td><td valign="top">R</td><td valign="top">ASIC C Test Revision Code Register</td><td valign="top"> </td></tr><tr><td>EEPROM Shadow Registers</td><td valign="top">0x11</td><td valign="top">0x18</td><td valign="top">8</td><td valign="top"> </td><td valign="top">Reserved</td><td valign="top"> </td></tr><tr><td>EEPROM Shadow Registers</td><td valign="top">0x19</td><td valign="top">0x1C</td><td valign="top">4</td><td valign="top">R</td><td valign="top">Security Certification Code Register</td><td valign="top"> </td></tr><tr><td>EEPROM Shadow Registers</td><td valign="top">0x1D</td><td valign="top">0x1D</td><td valign="top">1</td><td valign="top">R</td><td valign="top"><p>Program Lock C</p><p>Read Security Lock Register</p></td><td valign="top"> </td></tr><tr><td>EEPROM Shadow Registers</td><td valign="top">0x1E</td><td valign="top">0x1F</td><td valign="top">2</td><td valign="top"> </td><td valign="top">Reserved</td><td valign="top"> </td></tr><tr><td>Reserved</td><td valign="top">0x30</td><td valign="top">0x7F</td><td valign="top">80</td><td valign="top"> </td><td valign="top">Reserved</td><td valign="top"> </td></tr></tbody></table>

## User Registers <a href="#bookmark62" id="bookmark62"></a>

## **Table - Configuration Register (address = 0x00)**

<table data-header-hidden><thead><tr><th valign="top"></th><th valign="top"></th><th valign="top"></th></tr></thead><tbody><tr><td valign="top">Bit</td><td valign="top">Name</td><td valign="top">Description</td></tr><tr><td valign="top">15</td><td valign="top">QT_DIS</td><td valign="top"><p>Qwantum Token Disable</p><p>= 0; Enable Qwantum Token</p><p>= 1; Disable Qwantum Token</p></td></tr><tr><td valign="top"> 14</td><td valign="top"> QTEXT_DIS</td><td valign="top"><p>Qwantum Token Extended Mode Disable</p><p>= 0; Enable Qwantum Token Extended Mode</p><p>= 1; Disable Qwantum Token Extended Mode (Standard Mode)</p></td></tr><tr><td valign="top"><p> </p><p>13</p></td><td valign="top"><p> </p><p>TKA_DIS</p></td><td valign="top"><p>Track A Disable</p><p>= 0; Enable Track A</p><p>= 1; Disable Track A</p></td></tr><tr><td valign="top">12</td><td valign="top"> </td><td valign="top">Reserved</td></tr><tr><td valign="top"><p> </p><p>11</p></td><td valign="top"><p> </p><p>TKC_DIS</p></td><td valign="top"><p>Track C Disable</p><p>= 0; Enable Track C</p><p>= 1; Disable Track C</p></td></tr><tr><td valign="top"><p> </p><p>10</p></td><td valign="top"><p> </p><p>IRQ_DIS</p></td><td valign="top"><p>Card Present Interrupt Request Disable</p><p>= 0; MISO pin signals the microcontroller for both card present detection and data ready</p><p>= 1; MISO pin only signals the microcontroller for data ready</p></td></tr><tr><td valign="top">9</td><td valign="top"> </td><td valign="top">Reserved</td></tr><tr><td valign="top"><p> </p><p>8</p></td><td valign="top"><p> </p><p>OBFUSCATION_DIS</p></td><td valign="top"><p>Obfuscation Disable</p><p>= 0; Enable Obfuscation</p><p>= 1; Disable Obfuscation</p></td></tr><tr><td valign="top">7:0</td><td valign="top"> </td><td valign="top">Reserved</td></tr></tbody></table>

{% hint style="info" %}
**NOTES:** The Configuration register may be accessed in write only when FSM\_STATE\_STATUS\[2:0]=OFF, ATR or WAKEUP. If the SPI master sends the write command for the Configuration register when FSM\_STATE\_STATUS\[2:0] is not OFF or ATR or WAKEUP, then the command will be disregarded.
{% endhint %}

## **Table - FSM State Command Register (address = 0x01)**

<table data-header-hidden><thead><tr><th width="82.33334350585938" valign="top"></th><th width="201.33331298828125" valign="top"></th><th valign="top"></th></tr></thead><tbody><tr><td valign="top">Bit</td><td valign="top">Name</td><td valign="top">Description</td></tr><tr><td valign="top"><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p>15:12</p></td><td valign="top"><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p>FSM_STATE_CMD[3:0]</p></td><td valign="top"><p>Finite State Machine State Command</p><p> </p><p>When the SPI command is Write Register Command WREG:</p><p> </p><p>= 0001 then FSM State moves to OFFSET CORRECTION state. When the offset correction is complete, the state machine will move on to the OFF state. The command is valid only if the FSM is in the OFF state or in the ATR state. The FSM state can be obtained reading the Status 1 Register (address=0x02): FSM_STATE_STATUS[3:0].</p><p> </p><p>= 0010 then FSM State moves to OFF state. The command is valid only if the FSM is in the EXTRACT or ATR state. The FSM state can be obtained reading the Status 1 Register (address=0x02): FSM_STATE_STATUS[3:0].</p><p> </p><p>= 0110 then FSM State moves to ATR state. The command is valid only if the FSM is in the OFF or EXTRACT state. The FSM state can be obtained reading the Status 1 Register (address=0x02): FSM_STATE_STATUS[3:0].</p></td></tr><tr><td valign="top">11:0</td><td valign="top"></td><td valign="top">Reserved</td></tr></tbody></table>

## **Table - Status 1 Register (address = 0x02)**<br>

<table data-header-hidden><thead><tr><th valign="top"></th><th valign="top"></th><th valign="top"></th></tr></thead><tbody><tr><td valign="top">Bit</td><td valign="top">Name</td><td valign="top">Description</td></tr><tr><td valign="top"><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p>15:12</p></td><td valign="top"><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p>FSM_STATE_STATUS[3:0]</p></td><td valign="top"><p>Finite State Machine Status:</p><p> </p><p>= 0000; Status = POR/RESET</p><p>= 0001; Status = OFFSET CORRECTION</p><p>= 0010; Status = OFF</p><p>= 0011; Status = DIGITAL_OFFSET_CORRECTION</p><p>= 0100; Status = MPR_COPY</p><p>= 0101; Status = SWIPE</p><p>= 0110; Status = ATR</p><p>= 0111; Status = WAKEUP</p><p>= 1100; Status = EXTRACT</p><p>= 1101; Status = ERASEMEM</p><p>= 1111; Status = ERASEMEM</p></td></tr><tr><td valign="top"><p> </p><p>11</p></td><td valign="top"><p> </p><p>PAIR_STATUS</p></td><td valign="top"><p>Determine if the microcontroller is paired with Qwantum ASIC</p><p>= 0; Not paired</p><p>= 1; Paired</p></td></tr><tr><td valign="top"><p> </p><p>10</p></td><td valign="top"><p> </p><p>PROG_LOCK_STATUS</p></td><td valign="top"><p>Determine if EEPROM programming is locked</p><p>= 0; Not locked</p><p>= 1; Locked</p></td></tr><tr><td valign="top"><p> </p><p>9</p></td><td valign="top"><p> </p><p>READ_LOCK_STATUS</p></td><td valign="top"><p>Determine if EEPROM read is locked</p><p>= 0; Not locked</p><p>= 1; Locked</p></td></tr><tr><td valign="top"><p> </p><p>8</p></td><td valign="top"><p> </p><p>DIRECTION</p></td><td valign="top"><p>Card swipe direction</p><p>= 0; Forward</p><p>= 1; Reverse</p></td></tr><tr><td valign="top">7:0</td><td valign="top"> </td><td valign="top">Reserved</td></tr></tbody></table>

## **Table - Acknowledge Register (address = 0x05)**

<table data-header-hidden><thead><tr><th width="70.99996948242188" valign="top"></th><th width="108" valign="top"></th><th valign="top"></th></tr></thead><tbody><tr><td valign="top">Bit</td><td valign="top">Name</td><td valign="top">Description</td></tr><tr><td valign="top">15:1</td><td valign="top"> </td><td valign="top">Reserved</td></tr><tr><td valign="top"><p> </p><p> </p><p>0</p></td><td valign="top"><p> </p><p> </p><p>IRQN_ACK</p></td><td valign="top"><p>IRQn Acknowledge</p><p> </p><p>When the MISO pin signals the microcontroller of a card present condition, writing a 1 to this bit will clear the MISO pin until data ready.</p></td></tr></tbody></table>

## **Table - MagTek Password Register (address = 0x0A)**

<table data-header-hidden><thead><tr><th width="59" valign="top"></th><th width="234" valign="top"></th><th valign="top"></th></tr></thead><tbody><tr><td valign="top">Bit</td><td valign="top">Name</td><td valign="top">Description</td></tr><tr><td valign="top"><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p>15:0</p></td><td valign="top"><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p>MAGTEK_PASSWORD[15:0</p><p>]</p></td><td valign="top"><p>MagTek Password Register</p><p> </p><p>MagTek may enter in test mode by writing the MagTek Password Register with the value 0x7A53.</p><p> </p><p>In MagTek test mode the customer has access to some EEPROM shadow registers.</p><p> </p><p>Register address = 0x11 is available in Read/Write. This feature should be used only for debug. Security Certification Code Registers (addresses = [0x19 ~ 0x1A]) are available in</p><p>Read for allowing the pairing between the device and the microcontroller.</p></td></tr></tbody></table>

## EEPROM Shadow Registers

## **Table - Test Revision Code & ASIC Revision Code Register (address = 0x10)**

<table data-header-hidden><thead><tr><th width="65.6666259765625" valign="top"></th><th width="167" valign="top"></th><th valign="top"></th></tr></thead><tbody><tr><td valign="top">Bit</td><td valign="top">Name</td><td valign="top">Description</td></tr><tr><td valign="top">15:12</td><td valign="top">EE_ASIC_MAJ[7:4]</td><td valign="top">Major Silicon Revision for All Layers</td></tr><tr><td valign="top">11:8</td><td valign="top">EE_ASIC_MIN[3:0]</td><td valign="top">Minor Silicon Revision for Metal Layers only</td></tr><tr><td valign="top">7:0</td><td valign="top">EE_TEST[7:0]</td><td valign="top">Test Revision</td></tr></tbody></table>

## Table - Security Certification Code Register (address = \[0x19 \~ 0x1C])

<table data-header-hidden><thead><tr><th width="63.6666259765625" valign="top"></th><th width="218" valign="top"></th><th valign="top"></th></tr></thead><tbody><tr><td valign="top">Bit</td><td valign="top">Name</td><td valign="top">Description</td></tr><tr><td valign="top"><p> </p><p> </p><p> </p><p> </p><p> </p><p>15:8</p></td><td valign="top"><p> </p><p> </p><p> </p><p> </p><p> </p><p>EE_PAIRING_CODE[63:0]</p></td><td valign="top"><p>Security Certification Code Register</p><p> </p><p>The code is 8 bytes (64 bits) width. The code shall be unique from die to die and is generated at tester level. The code can be read only in MagTek test mode or Manufacturer test mode. The code allows to pair the device with the microcontroller. The pairing happens if the SPI master writes the Security Certification Code Register with the value stored in the register. The write does not take place. The write value is used only to compare it with the value stored in the register.</p></td></tr></tbody></table>

## **Table - Program Lock & Read Security Lock Register (address = 0x1D)**

<table data-header-hidden><thead><tr><th valign="top"></th><th valign="top"></th><th valign="top"></th></tr></thead><tbody><tr><td valign="top">Bit</td><td valign="top">Name</td><td valign="top">Description</td></tr><tr><td valign="top"> 15:8</td><td valign="top"> EE_PROG_LOCK_CODE[7: 0]</td><td valign="top"><p>NVM Program Lock Code Register</p><p>Once the NVM Program Lock Code register is written with the value 0xFF then the EEPROM is no longer programmable: the NVM may still be read but will not be programmable. This behavior prevents accidental reprogramming.</p></td></tr><tr><td valign="top"><p> </p><p> </p><p> </p><p>7:0</p></td><td valign="top"><p> </p><p> </p><p>EE_READ_LOCK_CODE[7: 0]</p></td><td valign="top"><p>NVM Read Lock Code Register</p><p> </p><p>Once the NVM Read Lock Code Register is written with the value 0xFF then the NVM is no longer readable. The customer has to enter into MagTek test mode to read the Security Certification Code Register in order to pair the device with</p><p>the microcontroller.</p></td></tr></tbody></table>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://developer.magtek.com/qwantum-services/qwantum-asic/draft-versions/draft-of-msr-chip-spi-firmware-implementation-guide/qwantum-asic-registers.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
