打开stm32cubemx选择芯片
选择外部时钟源
选择debug方式
配置dcmi
打开dma
打开dcmi中断
选择合适的io
设置reset、pwdn、scl、sda引脚,注意scl和sda设置为开漏输出,之前参考别人的设置为推挽输出,导致一直没有成功,不知道什么原因
配置时钟
配置项目
最后生成代码
系统初始化完成后调用以下代码开启dma传输
__HAL_DCMI_ENABLE_IT(&hdcmi, DCMI_IT_FRAME);
HAL_DCMI_Start_DMA(&hdcmi,DCMI_MODE_CONTINUOUS,(uint32_t)jpeg_buf,jpeg_buf_size/4);
最后在dcmi中断中对采集到的数据进行处理
void HAL_DCMI_FrameEventCallback(DCMI_HandleTypeDef *hdcmi)
{
jpeg_dcmi_frame_callback(hdcmi);
}
摄像头驱动和数据处理可以参考正点原子标准库代码