OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3208|回复: 2

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

[复制链接]

2

主题

9

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2016-1-24
在线时间
12 小时
发表于 2017-5-22 23:27:09 | 显示全部楼层 |阅读模式
10金钱
程序是使用原子哥的摄像头例程,为了每次只发一张所以只把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#的上位机在接收单片机重启后的第一张图片可以显示,后面的一律都是参数无效。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

9

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2016-1-24
在线时间
12 小时
 楼主| 发表于 2017-5-23 00:29:46 | 显示全部楼层
按道理来说,图片都是一帧一帧的传输。不会出错的呀
回复

使用道具 举报

2

主题

9

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2016-1-24
在线时间
12 小时
 楼主| 发表于 2017-5-23 01:24:53 | 显示全部楼层
本帖最后由 陈裕根 于 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;
  }


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

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-8-20 21:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表