2019-07-20 13:49发布
DMA 接收来自 OV2640 的 JPEG 数据流,首先使用 M0AR(内存 1)来存储,当 M0AR 满了以后,自动切换到 M1AR(内存 2),同时程序读取 M0AR(内存 1)的数据到外部 SRAM;当 M1AR 满了以后,又切回 M0AR,同时程序读取 M1AR(内存 2)的数据到外部 SRAM;依次循环(此时的数据处理,是通过 DMA 传输完成中断实现的,在中断里面处理),直到帧中断,结束一帧数据的采集,读取剩余数据到外部 SRAM,完成一次 JPEG 数据的采集。 这里, M0AR, M1AR 所指向的内存,必须是内部内存,不过由于采用了双缓冲机制,我们就不必定义一个很大的数组,一次性接收所有 JPEG 数据了,而是可以分批次接收,数组可以定义的比较小。
最多设置5个标签!
在内存有限的情况下,如果把几乎全部内存用于缓存JPEG数据,那其他任务就没法运行了。这个例子当中必须用到FATFS和SD卡,想必也要占用一些内存。所以采用双缓冲机制是个很好的办法。只要定义的缓冲大小合适,应该不会有影响。
一周热门 更多>