0%

FPGA驱动OV2640用SPI转发JPEG数据

环境

  • FPGA采用的是高云小蜜蜂家族的GW1N-LV4QN88C6/I5
  • 摄像头使用OV2640,可以配置数据为JPEG压缩后输出
  • 采用DC-DC降压到3.6V再LDO降至3.3V与2.8V,OV内核和FPGA内核采用DC-DC降到1.2V使用

FPGA部分

编程流程图

  1. I2C驱动
  2. FIFO配置
  3. 通过I2C配置OV2640寄存器
  4. 获取DCMI接口数据
  5. JPEG找出帧头帧尾
  6. 把有效数据存入FIFO
  7. SPI读FIFO数据输出

I2C驱动

参考:正点原子OV5640驱动程序

FIFO配置

通过FIFO SC HS IP核向导生成(SC是同步的意思),在使用的时候需要查看IP核用户指南,重点要看时序部分

SPI驱动

参考:SPI总线的原理与Verilog实现

经验总结

本次FPGA实现读取OV2640并SPI发出来的小功能,解决了低端MCU没有DCMI外设,遇到了IP核不会使用的问题,要多看手册里的时序部分。还有就是有些数据处理的时候要缓冲,加延时,否则会造成信号的错位。后面我要加强流水线结构的设计,多用并行的思想发挥FPGA的优势。

项目GitHub链接

https://github.com/hao0527/fpga-ov2640_fifo_spi