🛠 HSTX : générer une sortie vidéo/parallèle haute vitesse avec les 8 broches DDR

RP2350 (generic / RP2350-based boards) · avance · Schéma : IMG-rp2350-generic-avance-2-rp2350-hstx-scanvideo.svg — puce RP2350 avec bloc HSTX, 8 broches de sortie en DDR reliées à un écran RGB passif et un réseau de résistances (DAC R-2R), trame pixel horodatée, PIO et DMA alimentant le HSTX depuis la SRAM 520 Ko

Objectives

The RP2350 has no GPU or display engine — but it features a unique block in its category: the HSTX (High-Speed Transmit), an output-only, 8-pin, DDR digital transmitter, cited at 300 Mb/s per pin (RP2350 datasheet, §1.1; figure reported by Wikipedia RP2350). Combined with 520 KB of SRAM in 10 banks and 16 DMA channels, it drives passive RGB screens, R-2R DACs, and parallel displays — the domain of pico-extras (scanvideo/audio, WIP) and pico-playground. This tutorial: understand the DMA→HSTX→pins chain and build a scanvideo demo.

Hardware

Complete commands

# 1) SDK + extras + playground côte à côte
git clone https://github.com/raspberrypi/pico-sdk.git
git clone https://github.com/raspberrypi/pico-extras.git
git clone https://github.com/raspberrypi/pico-playground.git
export PICO_SDK_PATH=$PWD/pico-sdk PICO_EXTRAS_PATH=$PWD/pico-extras

# 2) Les démos scanvideo du playground (dossier scanvideo)
cd pico-playground && mkdir build && cd build
cmake -DPICO_BOARD=pico2 ..
make -j$(nproc) scanvideo/hello_scanyuv   # exemple type

On the API side, the HSTX philosophy:

// Le HSTX lit la SRAM via DMA et émet en DDR sur 8 broches.
// Pseudo-squelette (API pico-extras WIP, vérifie l'en-tête hardware/hstx.h)
// - configurer le timing : front porch / sync / back porch par ligne
// - charger les pixels en SRAM (banque dédiée pour ne pas bloquer le CPU)
// - armer un DMA circulaire : buffer -> HSTX_DATA, déclenché par le timer vidéo
// - le CPU peut peindre le buffer suivant pendant la transmission : le
//   double buffering tient parce que le RP2350 a 520 Ko, pas 264 Ko.

Expected verification

An animated image appears on the RGB screen: the HSTX spits out pixels continuously, the DMA serves them from SRAM, and both cores (M33 or Hazard3 — the HSTX is a peripheral, it doesn't care about the CPU architecture) remain free for rendering. Measure the memory footprint: a 320×240 framebuffer in RGB565 = 150 KB, which is 29% of the SRAM — impossible with double buffering on the RP2040 (264 KB), comfortable on the RP2350.

Common errors

Other tutorials for this board

Code examples for this board

← Back to the board 🛠 All tutorials