STM32F407ZGT6采集OV2640图像后通过串口2发送至C#上位机。上位机将数据流转成图片时总是参数无效。

2019-08-18 19:23发布

程序是使用原子哥的摄像头例程,为了每次只发一张所以只把void jpeg_test(void)里面的while(1)改成了以下内容
key=KEY_Scan(0);
  switch(key)
    {        
     case KEY0_PRES:
      if(jpeg_data_ok==1) //ÒѾ­²É¼¯Íêһ֡ͼÏñÁË
      {  
        p=(u8*)jpeg_buf;
        LCD_ShowString(30,210,210,16,16,"Sending JPEG data..."); //ÌáʾÕýÔÚ´«ÊäÊý¾Ý      
         for(i=0;i<jpeg_data_len*4;i++)  //dma&acute;&laquo;&Ecirc;&auml;1&acute;&Icirc;&micro;&Egrave;&Oacute;&Uacute;4×&Ouml;&frac12;&Uacute;,&Euml;ù&Ograve;&Ocirc;&sup3;&Euml;&Ograve;&Ocirc;4.
          {
            while(USART_GetFlagStatus(USART2,USART_FLAG_TC)==RESET); //&Ntilde;&shy;&raquo;··&cent;&Euml;&Iacute;,&Ouml;±&micro;&frac12;·&cent;&Euml;&Iacute;&Iacute;ê±&Iuml;   
            USART_SendData(USART2,p[i]);            
          }
      
        LCD_ShowString(30,210,210,16,16,"Send data complete!!");//&Igrave;á&Ecirc;&frac34;&acute;&laquo;&Ecirc;&auml;&frac12;á&Ecirc;&oslash;&Eacute;è&Ouml;&Atilde;
          jpeg_data_ok=2; //±ê&frac14;&Ccedil;jpeg&Ecirc;&yacute;&frac34;&Yacute;&acute;&brvbar;&Agrave;í&Iacute;ê&Aacute;&Euml;,&iquest;&Eacute;&Ograve;&Ocirc;&Egrave;&Atilde;DMA&Egrave;&yen;&sup2;&Eacute;&frac14;&macr;&Iuml;&Acirc;&Ograve;&raquo;&Ouml;&iexcl;&Aacute;&Euml;.         
      }            
  }  

非常奇怪的是,C#的上位机在接收单片机重启后的第一张图片可以显示,后面的一律都是参数无效。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
陈裕根
1楼-- · 2019-08-19 00:44
按道理来说,图片都是一帧一帧的传输。不会出错的呀
陈裕根
2楼-- · 2019-08-19 01:28
本帖最后由 陈裕根 于 2017-5-23 01:27 编辑

暂时问题的解决办法。第一次发送完成后,将
OV2640_JPEG_Mode();                                                                          
My_DCMI_Init();                        
DCMI_DMA_Init((u32)&jpeg_buf,jpeg_buf_size,DMA_MemoryDataSize_Word,DMA_MemoryInc_Enable);
OV2640_OutSize_Set(jpeg_img_size_tbl[size][0],jpeg_img_size_tbl[size][1]);
DCMI_Start();               
重新初始化。
并让jpeg_data_ok一直在0和1.不进入if(jpeg_data_ok==2)   {
   DMA2_Stream1->NDTR=jpeg_buf_size;
   DMA_SetCurrDataCounter(DMA2_Stream1,jpeg_buf_size);//&acute;&laquo;&Ecirc;&auml;&sup3;¤&para;&Egrave;&Icirc;&ordf;jpeg_buf_size*4×&Ouml;&frac12;&Uacute;
   DMA_Cmd(DMA2_Stream1, ENABLE);   //&Ouml;&Oslash;&ETH;&Acirc;&acute;&laquo;&Ecirc;&auml;
   jpeg_data_ok=0;      //±ê&frac14;&Ccedil;&Ecirc;&yacute;&frac34;&Yacute;&Icirc;&acute;&sup2;&Eacute;&frac14;&macr;
  }


暂时可以行。希望大神讲解一番。这样解决问题也不是办法

一周热门 更多>