embassy-stm32

Crates

git

Versions

stm32n647a0

Flavors

Module dcmipp

Module dcmipp 

Source
Expand description

DCMIPP (Digital Camera Interface Pixel Pipeline).

Sits downstream of the CSI-2 Host (or the legacy parallel DVP input) and writes pixel data into SRAM through its own AXI master. The peripheral exposes three independent pixel pipes:

  • Pipe0 — raw dump. No ISP, no colour conversion: bytes from the CSI packet payload land in memory in 32-bit words. Good for DMA-ing Bayer straight to CV/NN workloads, or for dumping ancillary data (embedded lines, CSI headers).
  • Pipe1 — the main pipe. ISP passthrough, optional Bayer demosaic, optional crop, optional downsize, and a pixel packer with full format support including multi-planar YUV.
  • Pipe2 — ancillary pipe, sharing Pipe1’s ISP front end. Supports crop + downsize and coplanar output formats only (single memory plane); typical use is a low-resolution preview running alongside a Pipe1 full frame.

The three pipes run concurrently. Dcmipp::new enables the peripheral clock and NVIC line once; Dcmipp::split hands out the three pipe handles, which are independent Sendable objects with their own async wakers. The single interrupt line is shared: on fire, the handler reads the common status register and wakes whichever pipe’s frame/overrun flags are asserted.

Structs§

ChannelGains
Per-channel multiplicative gain applied through the Pipe1 colour- conversion matrix as a diagonal. 1.0 is pass-through. The hardware encodes each coefficient as 11-bit signed two’s complement with a scale of 256 = 1.0 (matches the ST ISP middleware’s To_CConv_Reg). The effective positive range is therefore ~0.0..3.99; values outside saturate.
ColorMatrix
3×3 colour-conversion matrix with per-row offsets, programmed into the DCMIPP Pipe1 ISP via Pipe1::set_color_matrix.
CropConfig
Crop window. Coordinates and sizes are in pixels for Pipe1/Pipe2. On Pipe0 (raw word-aligned dump) the same struct is reused but values are interpreted as 32-bit words horizontally.
Dcmipp
DCMIPP driver — hands out three independent pipe handles via split.
DownsizeConfig
Downsize configuration for Pipe1 / Pipe2.
InterruptHandler
Interrupt handler.
Pipe0
Handle to DCMIPP Pipe0 (raw dump). Obtained from Dcmipp::split.
Pipe0Config
Pipe0 (raw dump) configuration.
Pipe1
Handle to DCMIPP Pipe1 (main ISP + format conversion). Obtained from Dcmipp::split.
Pipe2
Handle to DCMIPP Pipe2 (ancillary, coplanar-only). Obtained from Dcmipp::split.
Pipe1Config
Pipe1 (main) configuration.
Pipe2Config
Pipe2 (ancillary) configuration.

Enums§

BayerPattern
Raw Bayer pattern of the sensor. Encoding matches P1DMCR.TYPE (RM0486 §39.14.56).
Error
DCMIPP error.
InputSource
Which interface feeds the pipeline with pixels.
PixelFormat
Pixel format on the output side of Pipe1 / Pipe2.

Traits§

Instance
DCMIPP instance.