Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

DSP Interface (DSPI)

The DSP interface controls the DSP in the Flipper and allows the CPU to communicate with it through mailboxes and DMAs.

Registers

Mailbox registers

The mailbox registers are used to send and receive small 31 bit messages to/from the DSP. Software often interacts with mailboxes as if they were split into two 2 byte parts (high and low).

DSP Mailbox (0x0C00_5000, 4 bytes)

Mailbox used to send data from the CPU to the DSP. High part is always written first, which probably means a transfer only starts when both parts are written to (otherwise the DSP could read partial data).

BitsNameDescription
0..31Data[W] Send data to the DSP mailbox
31Status[R] Whether the transfer is ongoing

Note

The status bit is set automatically on write.

CPU Mailbox (0x0C00_5004, 4 bytes)

Mailbox used to receive data from the DSP.

BitsNameDescription
0..31Data[R] Receive data from the DSP
31Status[R] Whether there’s new data from the DSP

Note

The status bit is cleared automatically on read.

DSP Control (0x0C00_500A, 2 bytes)

Controls the DSP and also contains some ARAM and AI related bits.

BitsNameDescription
0Reset[W] Reset DSP
[R] Whether DSP is resetting
1Interrupt[W] Assert DSP PI interrupt
2Halt[W] Halt (1) or unhalt (0) DSP
[R] Whether DSP is halted
3AI interrupt status[W] Clear if set
[R] Whether an AI interrupt is pending
4AI interrupt maskAI interrupt assertion allowed
5ARAM interrupt status[W] Clear if set
[R] Whether an ARAM interrupt is pending
6ARAM interrupt maskARAM interrupt assertion allowed
7DSP interrupt status[W] Clear if set
[R] Whether a DSP interrupt is pending
8DSP interrupt maskDSP interrupt assertion allowed
9DSP DMA status[R] Whether ARAM DMA is ongoing
10Unknown
11Also seems to be used as a reset bit

The ARAM interrupt is raised whenever the ARAM DMA completes.

ARAM Size (0x0C00_5012, 2 bytes)

ARAM Mode (0x0C00_5016, 2 bytes)

ARAM Refresh (0x0C00_501A, 2 bytes)

ARAM DMA RAM Address (0x0C00_5020, 4 bytes)

Contains the physical address of the DMA transfer in main RAM.

ARAM DMA ARAM Address (0x0C00_5024, 4 bytes)

Contains the address of the DMA transfer in ARAM.

ARAM DMA Control (0x0C00_5028, 2 bytes)

Controls the ARAM DMA.

BitsNameDescription
0..15LengthLength of the transfer in words
15DirectionWhether to read from ARAM instead of writing

Writing to this register triggers a DMA transfer if the length field is non-zero.