新手入门
- 积分
- 10
- 金钱
- 10
- 注册时间
- 2019-12-18
- 在线时间
- 3 小时
|
发表于 2019-12-25 10:40:36
|
显示全部楼层
OV2640_RGB565_Mode(); //JPEG模式
My_DCMI_Init(); //DCMI配置
dcmi_rx_callback=jpeg_dcmi_rx_callback;//回调函数
DCMI_DMA_Init((u32)jpeg_buf0,(u32)jpeg_buf1,jpeg_dma_bufsize,DMA_MemoryDataSize_Word,DMA_MemoryInc_Enable);//DCMI DMA配置(双缓冲模式)
可以用双缓冲,然后再桢中断里面对读取的数据进行处理
//处理JPEG数据
//当采集完一帧JPEG数据后,调用此函数,切换JPEG BUF.开始下一帧采集.
void jpeg_data_process(void)
{
u16 i;
u16 rlen;//剩余数据长度
u32 *pbuf;
DMA_Cmd(DMA2_Stream1,DISABLE); //停止当前传输
DCMI_Stop(); //停止显示
while(DMA_GetCmdStatus(DMA2_Stream1) != DISABLE); //等待DMA2_Stream1可配置
rlen=jpeg_dma_bufsize-DMA_GetCurrDataCounter(DMA2_Stream1);//得到剩余数据长度
pbuf=jpeg_data_buf+jpeg_data_len;//偏移到有效数据末尾,继续添加
if(DMA2_Stream1->CR&(1<<19))for(i=0;i<rlen;i++)pbuf=jpeg_buf1;//读取buf1里面的剩余数据
else for(i=0;i<rlen;i++)pbuf=jpeg_buf0;//读取buf0里面的剩余数据
jpeg_data_len+=rlen; //加上剩余长度
printf("jpeg_data_len:%d ",jpeg_data_len);
show_rgb();
//copmre_images1(threshold);
DMA_SetCurrDataCounter(DMA2_Stream1,jpeg_dma_bufsize);//传输长度为jpeg_buf_size*4字节
DMA_Cmd(DMA2_Stream1,ENABLE); //重新传输
jpeg_data_len=0; //数据重新开始
DCMI_Start(); //启动显示
} |
|