cm3588-mipi-camera.ino

Módulo SOM FriendlyElec CM3588 (Rockchip RK3588) · Archivo : cm3588-mipi-camera.ino · Lenguaje : C · Uso : Capturer une image depuis un capteur MIPI CSI via V4L2.

Código C mínimo para inicializar un flujo de video desde una cámara MIPI CSI en CM3588.

Hardware: Cámara compatible con MIPI CSI conectada al puerto CSI del CM3588. El controlador del sensor debe estar cargado. Verifique con v4l2-ctl --list-devices. Compile con gcc cam.c -o cam. Este código configura el formato; agregue lógica de captura completa para producción.

cm3588-mipi-camera.ino

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <linux/videodev2.h>
#include <sys/ioctl.h>
#include <sys/mman.h>

#define DEVICE "/dev/video0"
#define WIDTH 1920
#define HEIGHT 1080
#define FORMAT V4L2_PIX_FMT_MJPEG

int main() {
    int fd = open(DEVICE, O_RDWR);
    if (fd < 0) { perror("Open"); return 1; }

    struct v4l2_format fmt = {0};
    fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
    fmt.fmt.pix.width = WIDTH;
    fmt.fmt.pix.height = HEIGHT;
    fmt.fmt.pix.pixelformat = FORMAT;
    if (ioctl(fd, VIDIOC_S_FMT, &fmt) < 0) { perror("Set Format"); return 1; }

    struct v4l2_requestbuffers req = {0};
    req.count = 4;
    req.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
    req.memory = V4L2_MEMORY_MMAP;
    if (ioctl(fd, VIDIOC_REQBUFS, &req) < 0) { perror("Reqbufs"); return 1; }

    // Note: Full mmap and DQBUF logic omitted for brevity, refer to V4L2 docs
    printf("Camera configured for %dx%d MJPEG\n", WIDTH, HEIGHT);
    close(fd);
    return 0;
}

← Volver a la ficha