Skip to content

DSP

JP150PCB 1.3PCB 1.4generatedJan PřibyslavskýThis page does not apply to the product or PCB revision chosen in the header.

The ADAU1452 DSP: parameter writes, direct and through the indirect parameter access table (IPAT), the level meter, the status of the last boot and of the core, and the self-boot setting. The status queries read the DSP's registers live and answer ERROR while the DSP is held in reset (SLEEP and STANDBY) or while the I2C guard is triggered; ERROR is an answer, not a timeout.

Commands

Command Function Parameter Answer Since Boards
DSP:SETBLOCK Write one value to a DSP address <address>,<value> setblock:<address>,<value> 26.6.2 1.3, 1.4
DSP:IPAT:SETBLOCK Write one value through the DSP's parameter table <write_address>,<value> ipatsetblock:<address>,<value> 26.7.0 1.3, 1.4
DSP:LVLMETER:RMS? Level-meter RMS reading – DSP:LVLMETER:RMS:<raw>,<linear> 26.7.0 1.3, 1.4
DSP:CORE:START? The program start bit of the DSP – DSP:CORE:START:<0|1|ERROR> 26.6.2 1.3, 1.4
DSP:CORE:KILL? The kill bit of the DSP core – DSP:CORE:KILL:<0|1|ERROR> 26.6.2 1.3, 1.4
DSP:PLL:LOCK? The DSP's PLL is locked – DSP:PLL:LOCK:<0|1|ERROR> 26.6.2 1.3, 1.4
DSP:PC:ADVANCING? The DSP executes a program – DSP:PC:ADVANCING:<0|1|ERROR> 26.6.2 1.3, 1.4
DSP:CORE:STATUS? State of the DSP core – DSP:CORE:STATUS:<code>,<name> 26.10.1 1.3, 1.4
DSP:PANIC? Panic flag and code of the DSP – DSP:PANIC:<flag>,0x<code> 26.10.1 1.3, 1.4
DSP:BOOT? The last DSP boot, state and duration – DSP:BOOT:<state>,<ms>,<not_started>,<no_answer> 26.10.1 1.3, 1.4
DSP:SELFBOOT? DSP self boot setting and the level of the SELFBOOT pin – DSP:SELFBOOT:<setting>,<pin> 26.10.1 1.3, 1.4
DSP:SELFBOOT Set the DSP self boot 0, 1 DSP:SELFBOOT:OK 26.10.1 1.3, 1.4

Since is the release the command appeared in; 26.6.2 is the oldest release documented here, so a command marked 26.6.2 may be older.

DSP:SETBLOCK

A direct write of one 4-byte value to a parameter address of the DSP program, as SigmaStudio would do it. A diagnostic primitive: parameters that the DSP program manages through its IPAT (the input mux among them) must be written with DSP:IPAT:SETBLOCK, so that the program's own copy stays in step.

DSP:SETBLOCK 100,123456  ->  setblock:100,123456

DSP:IPAT:SETBLOCK

Writes one value through the indirect parameter access table (IPAT) of the DSP program. The first parameter is the table's write address of the parameter, from the program's export. Nothing is read back. DSP: parameters over the control interface explains the table.

DSP:IPAT:SETBLOCK 24576,2  ->  ipatsetblock:24576,2

DSP:LVLMETER:RMS?

The RMS output of the program's level meter, read through the IPAT: raw is the Q8.24 word (16777216 = full scale), linear is raw / 16777216 with six decimals. The conversion to dB is left to the host. The meter sits before the volume. A read failure is an SCPI error, never a stale value. The automatic power-down compares its threshold with this reading.

DSP:LVLMETER:RMS?  ->  DSP:LVLMETER:RMS:167772,0.010000

DSP status bits

Commands: DSP:CORE:START?, DSP:CORE:KILL?, DSP:PLL:LOCK?, DSP:PC:ADVANCING?

Four status bits of the ADAU1452, read live. A running program reads start 1, kill 0, PLL 1, advancing 1. DSP:PC:ADVANCING? answers 1 while the core status is running or sleeping between samples; it no longer samples the program counter, which also moves while no program runs. ERROR while the DSP is in reset or the I2C guard is triggered.

DSP:CORE:START?    ->  DSP:CORE:START:1
DSP:PLL:LOCK?      ->  DSP:PLL:LOCK:1
DSP:PC:ADVANCING?  ->  DSP:PC:ADVANCING:1

DSP:CORE:STATUS?

SLEEP is the normal reading of a running program: the core has finished its instructions for this sample and waits for the next one. DSP:CORE:STATUS:ERROR while the DSP is in reset or the I2C guard is triggered.

DSP core states

Value Meaning
0,NOT_RUNNING No program runs
1,RUNNING The core executes instructions
2,PAUSED The core is paused
3,SLEEP The core finished this sample and waits for the next one, the normal reading of a running program
4,STALLED The core is stalled
DSP:CORE:STATUS?  ->  DSP:CORE:STATUS:3,SLEEP

DSP:PANIC?

The ADAU1452's panic manager, read live; both registers stay set until the DSP is reset. After three failed self-boot attempts the core raises a software panic (bit 15, 0x8000). Bits 5 to 7 (0x0020, 0x0040, 0x0080) are data-memory parity flags that the current DSP programs raise at every start on both board revisions, so a non-zero code alone is not a fault. ERROR while the DSP is in reset or the I2C guard is triggered.

DSP:PANIC?  ->  DSP:PANIC:1,0x0080

DSP:BOOT?

The last boot of the DSP as the firmware timed it, after power-up and after every wake that released the DSP from reset. The firmware polls the program start bit every 50 ms from 50 ms after the release and then writes the selected input. ms is the time from the release to the poll that found the program started (about 20 ms short after a wake); not_started counts polls that found no program yet, no_answer polls the DSP did not answer. After 5 s without a start the state is FAILED; the bit is then re-read every second, so a program loaded later by SigmaStudio turns the state to READY. Typical: PCB 1.4 READY,53 from its SPI flash, PCB 1.3 READY,252 from its I2C EEPROM; an image whose speed word does not match the boot memory takes about 3 s. A memory read, not subject to the I2C guard.

DSP boot states

Value Meaning
WAITING The DSP was released from reset and its program has not started yet
READY The program started and the selected input has been written
FAILED No start within 5 s; still re-checked every second
DSP:BOOT?  ->  DSP:BOOT:READY,53,0,0

DSP:SELFBOOT

Commands: DSP:SELFBOOT?, DSP:SELFBOOT

Whether the DSP loads its program from its boot memory when it leaves reset. setting is the stored value, pin the level of the SELFBOOT net now; on PCB 1.3 a closed DIP switch holds the pin at 0 whatever the setting. The DSP samples the pin only when it leaves reset, so a change takes effect at the next DSP reset (SYS:POWER:MODE SLEEP and back to NORMAL, or a power cycle); the command does not restart the DSP. With self boot off the DSP loads no program and there is no audio until the setting is 1 again and the DSP is reset: the state SigmaStudio needs to write the boot memory through the DSP. An invalid value is an SCPI error. A stored setting (autosave after 0.1 s).

Default: 1.

DSP:SELFBOOT?   ->  DSP:SELFBOOT:1,1
DSP:SELFBOOT 0  ->  DSP:SELFBOOT:OK

Changes

  • 26.10.1: added DSP:PANIC?, DSP:BOOT?, DSP:CORE:STATUS?, DSP:SELFBOOT?, DSP:SELFBOOT; removed DSP:AUTOLOAD?, DSP:AUTOLOAD.
  • 26.7.0: added DSP:IPAT:SETBLOCK, DSP:LVLMETER:RMS?.
  • 26.6.2 (oldest release documented): 7 commands.