OV5640 DMA传数据用的是OV5640源码资料,怎么jpeg_data_len一直是0呢

2019-08-18 19:18发布

        OV5640_RGB565_Mode();        //RGB565Ä£ê½
        OV5640_Focus_Init();
       
        OV5640_JPEG_Mode();                //JPEGÄ£ê½
       
        OV5640_Light_Mode(0);        //×Ô¶ˉÄ£ê½
        OV5640_Color_Saturation(3);//é«2ê±¥oí¶è0
        OV5640_Brightness(4);        //áá¶è0
        OV5640_Contrast(3);                //¶Ô±è¶è0
        OV5640_Sharpness(33);        //×Ô¶ˉèñ¶è
        OV5640_Focus_Constant();//Æô¶ˉ3ÖDø¶Ô½1
       
        My_DCMI_Init();                        //DCMIÅäÖÃ
        DCMI_DMA_Init((u32)&jpeg_buf,jpeg_buf_size,DMA_MemoryDataSize_Word,DMA_MemoryInc_Enable);//DCMI DMAÅäÖà  
        OV5640_OutSize_Set(4,0,jpeg_img_size_tbl[size][0],jpeg_img_size_tbl[size][1]);//éèÖÃêä3ö3ß′ç
        DCMI_Start();                 //Æô¶ˉ′«êä
        while(1)
        {
                if(jpeg_data_ok==1)        //òѾ-2é¼ˉíêò»Ö¡í¼ÏñáË
                {
                        p=(u8*)jpeg_buf;
                        PRINT_COM2("jpeg_data_len:%d ",jpeg_data_len*4);//′òó¡Ö¡Âê
                //        LCD_ShowString(30,210,210,16,16,"Sending JPEG data..."); //ìáê¾ÕyÔú′«êäêy¾Y
                        jpglen=0;        //éèÖÃjpgÎļt′óD¡Îa0
                        headok=0;        //Çå3yjpgí·±ê¼Ç
                        for(i=0;i<jpeg_data_len*4;i++)//2é&#213;ò0XFF,0XD8oí0XFF,0XD9,&#187;&#241;è&#161;jpg&#206;&#196;&#188;t′óD&#161;
                        {
                                if((p[i]==0XFF)&&(p[i+1]==0XD8))//&#213;òμ&#189;FF D8
                                {
                                        jpgstart=i;
                                        headok=1;        //±ê&#188;&#199;&#213;òμ&#189;jpgí·(FF D8)
                                }

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
2条回答
C泪奔
2019-08-18 23:35
if(ovx_mode&0X01)        //&#214;&#187;óD&#212;úJPEG&#184;&#241;ê&#189;&#207;&#194;,2&#197;Dèòa×&#246;′|àí.
        {
                if(jpeg_data_ok==0)        //jpegêy&#190;Y&#187;1&#206;′2é&#188;ˉíê?
                {       
                        DMA_Cmd(DMA2_Stream1, DISABLE);//í£&#214;1μ±&#199;°′&#171;ê&#228;
                        while (DMA_GetCmdStatus(DMA2_Stream1) != DISABLE){}//μè′yDMA2_Stream1&#191;é&#197;&#228;&#214;&#195;
                                        PRINT_COM2("size is %d ",DMA_GetCurrDataCounter(DMA2_Stream1));
                        jpeg_data_len=jpeg_buf_size-DMA_GetCurrDataCounter(DMA2_Stream1);//μ&#195;μ&#189;′&#203;′&#206;êy&#190;Y′&#171;ê&#228;μ&#196;3¤&#182;è
                       
                        jpeg_data_ok=1;                                 //±ê&#188;&#199;JPEGêy&#190;Y2é&#188;ˉíê°′3é,μè′y&#198;&#228;&#203;&#251;oˉêy′|àí

                }
                if(jpeg_data_ok==2)        //é&#207;ò&#187;′&#206;μ&#196;jpegêy&#190;Yò&#209;&#190;-±&#187;′|àíá&#203;
                {
                        PRINT_COM2("done ");
                        DMA2_Stream1->NDTR=jpeg_buf_size;       
                        DMA_SetCurrDataCounter(DMA2_Stream1,jpeg_buf_size);//′&#171;ê&#228;3¤&#182;è&#206;ajpeg_buf_size*4×&#214;&#189;ú
                        DMA_Cmd(DMA2_Stream1, ENABLE);                        //&#214;&#216;D&#194;′&#171;ê&#228;
                        jpeg_data_ok=0;                                                //±ê&#188;&#199;êy&#190;Y&#206;′2é&#188;ˉ
                }
这个地方DMA_GetCurrDataCounter得到的永远都是jpeg_buf_size的值,为什么啊????搞了一天了,是DCMI设置有问题吗

一周热门 更多>