The configuration file uses JSON format and includes the fields listed in the following table. For values to use, you need to check the datasheet of the SoC you are working with (for example, for pins, see nRF54L15 pins, nRF5340 pins, or nRF52840 pins).
| Field | Description | Required |
|---|---|---|
firmware_config.peripheral |
Specifies the interface type: "QSPI", "SPIMnn", "EXMIF" (depending on the SoC; nn in "SPIMnn" is the instance number, for example SPIM0 or SPIM00) |
Yes |
firmware_config.compress |
Enables compression of data transferred to or from the target device: true or false.This field is not available for some nRF52 Series devices because of RAM requirements. It is available only on nRF52840, nRF52833, and nRF52832, in addition to nRF54L Series devices, nRF5340, and nRF54H20. |
No (default: true) |
pins.sck |
Clock pin number | Yes |
pins.csn |
Chip select pin number | Yes |
pins.io0 |
Data line 0 pin number | Yes |
pins.io1 |
Data line 1 pin number | Yes |
pins.io2 |
Data line 2 pin number | Used optionally with SPIM/SPI - see below; 4294967295 value means that the pin is not used or is disabled |
pins.io3 |
Data line 3 pin number | Used optionally with SPIM/SPI - see below; 4294967295 value means that the pin is not used or is disabled |
pins.io4 |
Data line 4 pin number | Currently ignored - for future use with EXMIF on nRF54H20 |
pins.io5 |
Data line 5 pin number | Currently ignored - for future use with EXMIF on nRF54H20 |
pins.io6 |
Data line 6 pin number | Currently ignored - for future use with EXMIF on nRF54H20 |
pins.io7 |
Data line 7 pin number | Currently ignored - for future use with EXMIF on nRF54H20 |
pins.read_write_data_strobe |
Read/Write data strobe pin | Currently latched to high level if defined when using EXMIF on nRF54H20 |
pins.reset |
Reset pin | Latched to high level if defined when using EXMIF on nRF54H20 |
flash_size |
Actual size of external memory, in bytes | Yes |
page_size |
Size of memory page in bytes: hardcoded to 4096 |
Yes |
sck_frequency |
Clock frequency used on the SCK pin | Yes |
address_mode |
Addressing mode for memory: "MODE24BIT", "MODE32BIT" |
Yes |
readoc |
Read operation code: "FASTREAD", "READ2O", "READ2IO", "READ4O", "READ4IO" |
QSPI only |
writeoc |
Write operation code: "PP", "PP2O", "PP4O", "PP4IO" |
QSPI only |
pp_size |
Page program size: "PPSIZE256", "PPSIZE512" |
QSPI only |
sck_delay |
Clock delay in cycles: from 0 to 255 |
QSPI only |
rx_delay |
Receive delay in cycles: from 0 to 7 |
QSPI only |
io_pin_impedance |
Value written directly to the DRIVECTRL register | EXMIF on nRF54H20 only |
Tip
The decimal values for the required pins fields can be calculated based on the pin select bit numbers for the peripheral of the SoC you are using.
The formula is:
pin number = port pin number + (32 * port number)
Check the device's register overview in the hardware documentation.
For example, to define pins.sck to pin number 27 on port 1 for nRF52840 with QSPI, look at the PSEL.SCK bit number table: port is selected using bit 5 (B, set to 1), 27 is selected using corresponding bits A. Using the formula above (27 + (32 * 1)), you get the decimal value 59 as the result, which is the value for the configuration file.