4.3 Nonvolatile Memory (eFuse)

The ATWILC3000A devices have 768 bits of nonvolatile eFuse memory that can be read by the CPU after device Reset. The eFuse is partitioned into six 128-bit banks (Bank 0 – Bank 5). Each bank has the same bit map (see the following figure). The purpose of the first 108 bits in each bank is fixed and the remaining 20 bits are general purpose software-dependent bits or reserved for future use. Currently, the Bluetooth address is derived from the Wi-Fi MAC address, such that Bluetooth address = Wi-Fi MAC address + 1.

This nonvolatile one-time-programmable (OTP) memory can be used for storing the following customer-specific parameters:
  • MAC address.
  • Calibration information. For example, crystal frequency offset.
  • Other software-specific configuration parameters.
Each bank can be programmed independently, which allows for several updates of the device parameters following the initial programming. For example, if the MAC address is currently programmed in Bank 1 and the MAC address has to be changed, the following steps should be performed:
  1. Invalidate the contents of Bank 1 by programming the Bank Invalid bit field of Bank 1.
  2. Program Bank 2 with the new MAC address along with the values of ADC Calib (from Bank 1), Frequency Offset (from Bank 1), IQ Amp Correction (from Bank 1) and IQ Pha Correction (from Bank 1). The Used bit field for each corresponding value bit field should also be programmed.
  3. Validate the contents of Bank 2 by programming the Bank Used bit field of Bank 2.

Each bit field (that is, MAC Addr, ADC Calib, Freq Offset, IQ Amp Correction and IQ Pha Correction) has its corresponding Used bit field. Each Used bit field is used to indicate to the firmware that the value in the related bit field is valid. A value of ‘0’ in the Used bit field indicates that the following bit field is invalid, and a value of ‘1’ programmed to the Used bit field indicates that the corresponding bit field is valid and can be used by the firmware. By default, all the ATWILC3000A devices are programmed with the ADC Calib, IQ Amp and IQ Phase fields of Bank 0. In IC variants where the MAC address is assigned, the MAC address bit field will be programmed in Bank 0. For more information on IC marking, refer to Ordering Information and IC Marking.

Figure 4-1. Bitmap for ATWILC3000A eFuse Bank
Note: The bit map was updated with bit fields IQ Amp correction and IQ Pha correction fields from firmware version 15.3 for WILC Linux® and 4.5 for WILC RTOS onwards. Earlier, these bit fields were reserved for future use. For customers using firmware older than 15.3 for WILC Linux and 4.5 for WILC RTOS, IQ Amp correction and IQ Pha correction bit fields will not be used by the firmware.

The matrix table below provides details on how different versions of the firmware handle the IQ Amp Used, IQ Amp Correction, IQ Pha Used and IQ Pha Correction bit fields during Initialization.

Firmware VersionIQ Amp Used and IQ Pha Used Bit Status
Device with IQ Amp Used and IQ Pha Used Bit Fields with Value as ‘1Device with IQ Amp Used and IQ Pha Used Bit Fields with Value as ‘0
15.3 or later for WILC Linux

4.5 or later for WILC RTOS

The firmware loads the IQ calibration values from the IQ Amp Correction and IQ Pha Correction bit fields of the corresponding eFuse bank and proceeds with Initialization.The firmware ignores the values in the IQ Amp Correction and IQ Pha Correction bit fields and proceeds with Initialization.
Prior to 15.3 for WILC Linux

Prior to 4.5 for WILC RTOS

The firmware does not check for the IQ Amp Used and IQ Pha Used bit fields and proceeds with Initialization.