公司动态
基于 RA8P1 的实时摄像头预览工程
本篇在原有触摸屏的基础上装上了摄像头。硬件方面新增 OV5640 摄像头模块借助 RA8P1 内置的 CEU 图像采集单元接收传感器输出的并行视频流。一、CEU 图像采集单元是什么CEUCapture Engine Unit图像采集引擎单元是瑞萨 RA8 系列 MCU 内置的摄像头采集外设负责接收 CMOS 图像传感器本工程为 OV5640输出的并行视频数据流并配合 DMA 把整帧图像直接搬进内存CPU 几乎不参与数据搬运。它的主要特点1. 并行接口8 位数据总线 D0 到 D7配合 PCLK像素时钟、VSYNC帧同步、HSYNC行同步三根同步信号2. 常见图像格式支持 RGB565、YCbCr422 等可配置输入顺序、字节交换、同步信号极性、采样边沿3. 中断事件帧结束、CRAM 溢出、VD 或 HD 错误等都会触发回调便于诊断采集异常4. 配合 DMAC采集一帧后把数据连续写入内存指定地址本工程每帧为 480x640x2 共 614,400 字节 RGB565。使用方法与注意事项1. 帧缓冲必须放在 DMA 可达的内存并注意 D-Cache 一致性DMA 写完后CPU 读取前要先 invalidate 该段 cacheCPU 写完后DAVE2D 等外设读取前要先 clean。本工程验证过CEU 原始帧必须放内部 SRAM 的 .ram_noinit_nocache 段并 32 字节对齐放在 SDRAM 会出现条纹、分块或错位。2. captureStart 在上帧未完成时返回 FSP_ERR_INVALID_STATE实现上要先轮询状态到 IDLE 再启动并加超时保护3. CEU 的同步周期寄存器CMCYR写入传感器 HTS 和 VTS 值必须与传感器输出时序匹配4. 传感器寄存器配置走 SCCB 接口OV5640 的类 I2C 总线。本工程用 GPIO 位模拟 SCCB避免占用硬件 IIC 通道接线也更灵活。二、新增外设与引脚配置新增 OV5640 摄像头模块SCCB 寄存器配置加 CEU 图像采集与 RTC 时钟逐项说明外设CEUr_ceu用途摄像头图像采集8 位数据总线采集尺寸 480x640 的 RGB565引脚D0 到 D7 与 PCLK、VSYNC、HSYNC 接 P400、P401、P405、P406、P414、P415、P700、P701、P702、P703、P708CEU 复用脚详见 e2 studio 引脚配置外设GPIO 位模拟 SCCB用途OV5640 寄存器读写输出与输入切换5 微秒位延时引脚SCL 接 P410SDA 接 P409外设GPIO用途OV5640 复位时序低有效复位与掉电控制引脚RESET 接 P709PWDN 接 P710外设RTCr_rtc用途屏幕时钟显示日历模式引脚无外设CEU 中断CEUI用途帧完成与错误事件回调优先级 12引脚无FSP 中 CEU 模块的关键配置项8 位总线、数据同步模式、HSYNC 与 VSYNC 高有效、输入顺序 YCbCr422、字节交换全开、突发长度 x8、采集尺寸 480x640、帧结束与溢出与 VD 错误中断使能。三、新增功能1. 实时摄像头预览OV5640 采集 480x640 竖屏帧逆时针旋转 90 度并水平镜像缩放到 240x180 横屏后居中显示左上角距屏幕边缘 120、70 像素。采集线程每 50 毫秒出一帧双缓冲原子发布UI 线程检测到新帧才刷新画面画面流畅不闪烁。2. 触摸交互效果按下时出现青色圆点16x16跟随手指移动同时显示坐标标签 x:y90x20跟随手指偏移自动限制在屏幕内抬手后 300 毫秒淡出隐藏。实现只用 LVGL 基础样式无阴影、无渐变确保 DAVE2D 硬件加速路径正常工作。3. 帧率显示左上角显示预览帧率每秒统计刷新帧数方便评估采集到显示的链路实时性。四、系统架构与内存约定采集线程ai_thread50 毫秒节拍vTaskDelayUntil启动即打开 OV5640 与 CEU每帧依次执行 captureCEU DMA 写帧、invalidate cache、旋转缩放进双缓冲、clean cache 后原子发布失败只跳过本帧不退出线程。UI 线程ui_thread5 毫秒主循环lv_tick_inc 加 lv_timer_handler 加页面 tick驱动 LVGL 刷新与触摸效果动画。内存约定板级验证数据CEU 原始帧 s_ai_frame位置内部 SRAM 的 .ram_noinit_nocache 段32 字节对齐约束CEU DMA 直接写入CPU 读取前 invalidate数据预览双缓冲位置内部 SRAM32 字节对齐约束CPU 写后 cleanDAVE2D 直接读取五、工程代码结构新增部分src/ai_thread_entry.c摄像头采集线程50 毫秒节拍、失败降级src/device/camera/camera_ov5640驱动加寄存器表、camera_ceuCEU 封装、camera_sccbGPIO 位模拟 SCCBsrc/application/core/camera_preview 源文件旋转缩放、双缓冲原子发布src/application/core/app_clock 源文件RTC 时钟封装src/application/ui/ui_page_camera 源文件主页面预览加时钟加帧率加触摸效果层src/application/ui/ui_touch_effect 源文件触摸交互效果src/application/ui/ui_manager 源文件页面管理单页面通过网盘分享的文件摄像头.zip链接: https://pan.baidu.com/s/1KobV8PCxtkaRQK1PFJmh3A?pwd7z69 提取码: 7z69感谢阅读欢迎指正。