OpenEdv-开源电子网

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

关于f4 用DCMI采集鹰眼ov7725的讨论

[复制链接]

1

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2017-1-19
在线时间
20 小时
发表于 2017-9-11 20:34:48 | 显示全部楼层 |阅读模式
10金钱
大佬们 本人想用f4  探索者  的DCMI采集  鹰眼的图像   但图像一直被分为4*8   =32 块一模一样显示在lcd上  中断也没执行其他内容  有遇到过这种情况的吗

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

使用道具 举报

1

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2017-1-19
在线时间
20 小时
 楼主| 发表于 2017-9-11 20:35:36 | 显示全部楼层
void DCMI_DMA_Init(u32 DMA_Memory0BaseAddr,u16 DMA_BufferSize,u32 DMA_MemoryDataSize,u32 DMA_MemoryInc)
{
        DMA_InitTypeDef  DMA_InitStructure;
//        DCMI_CROPInitTypeDef DCMI_CROPInitStruct;
        NVIC_InitTypeDef NVIC_InitStructure;
       
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2,ENABLE);//DMA2ê±Öóê1Äü
        DMA_DeInit(DMA2_Stream1);
        while (DMA_GetCmdStatus(DMA2_Stream1) != DISABLE){}//μè′yDMA2_Stream1¿éÅäÖÃ
       
  /* ÅäÖÃ DMA Stream */
  DMA_InitStructure.DMA_Channel = DMA_Channel_1;  //í¨μà1 DCMIí¨μà
  DMA_InitStructure.DMA_PeripheralBaseAddr = (u32)&DCMI->DR;//íaéèμØÖ·ÎaCMI->DR
  DMA_InitStructure.DMA_Memory0BaseAddr = DMA_Memory0BaseAddr;//DMA ′æ′¢Æ÷0μØÖ·
  DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory;//íaéèμ½′æ′¢Æ÷Ä£ê½
  DMA_InitStructure.DMA_BufferSize = DMA_BufferSize;//êy¾Y′«êäá¿
  DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;//íaéè·ÇÔöá¿Ä£ê½
  DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc;//′æ′¢Æ÷Ôöá¿Ä£ê½
  DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word;//íaéèêy¾Y3¤¶è:32λ
  DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize;//′æ′¢Æ÷êy¾Y3¤¶è
  DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;// ê1óÃÑ-»·Ä£ê½
  DMA_InitStructure.DMA_Priority = DMA_Priority_High;//¸ßóÅÏè¼¶
  DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Enable; //FIFOģ꽠       
  DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_Full;//ê1óÃè«FIFO
  DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;//íaéèí»·¢μ¥′Î′«êä
  DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;//′æ′¢Æ÷í»·¢μ¥′Î′«êä
  DMA_Init(DMA2_Stream1, &DMA_InitStructure);//3õê¼»ˉDMA Stream
               
//         DCMI_CROPInitStruct.DCMI_CaptureCount=639;                         //capcnt
//   DCMI_CROPInitStruct.DCMI_HorizontalOffsetCount=0;           //hoffcnt
//   DCMI_CROPInitStruct.DCMI_VerticalLineCount=119;                 //vline
//   DCMI_CROPInitStruct.DCMI_VerticalStartLine=0;                   //vst
//   DCMI_CROPConfig(&DCMI_CROPInitStruct);
//         DCMI_CROPCmd(ENABLE);
               
        DMA_ITConfig(DMA2_Stream1,DMA_IT_TC,ENABLE);
        NVIC_InitStructure.NVIC_IRQChannel=        DMA2_Stream1_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;
        NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
        NVIC_Init(&NVIC_InitStructure);        //¸ù¾YÖ¸¶¨μÄ2Îêy3õê¼»ˉVIC¼Ä′æÆ÷¡¢
       
}

void DMA2_Stream1_IRQHandler(void)
{        
        if(DMA_GetFlagStatus(DMA2_Stream1,DMA_FLAG_TCIF1)==SET)//DMA2_Steam1,′«êäíê3é±êÖ¾
        {  
                 DMA_ClearFlag(DMA2_Stream1,DMA_FLAG_TCIF1);//Çå3y′«êäíê3éÖD¶Ï
                        datanum++;
        }                                                                                             
}  
//DCMI3õê¼»ˉ
void My_DCMI_Init(void)
{
  GPIO_InitTypeDef  GPIO_InitStructure;
        NVIC_InitTypeDef NVIC_InitStructure;

       
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA|RCC_AHB1Periph_GPIOB|RCC_AHB1Periph_GPIOC|RCC_AHB1Periph_GPIOE, ENABLE);//ê1ÄüGPIOA B C E ê±Öó
        RCC_AHB2PeriphClockCmd(RCC_AHB2Periph_DCMI,ENABLE);//ê1ÄüDCMIê±Öó
  //PA4/63õê¼»ˉéèÖÃ
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_6;//PA4/6   ¸′óÃ1|Äüêä3ö
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; //¸′óÃ1|Äüêä3ö
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//íÆíìêä3ö
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//éÏà-
  GPIO_Init(GPIOA, &GPIO_InitStructure);//3õê¼»ˉ
       
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7|GPIO_Pin_6;// PB6/7   ¸′óÃ1|Äüêä3ö
  GPIO_Init(GPIOB, &GPIO_InitStructure);//3õê¼»ˉ
       
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_11;//PC6/7/8/9/11 ¸′óÃ1|Äüêä3ö
  GPIO_Init(GPIOC, &GPIO_InitStructure);//3õê¼»ˉ       

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5|GPIO_Pin_6;//PE5/6  ¸′óÃ1|Äüêä3ö
  GPIO_Init(GPIOE, &GPIO_InitStructure);//3õê¼»ˉ       

        GPIO_PinAFConfig(GPIOA,GPIO_PinSource4,GPIO_AF_DCMI); //PA4,AF13  DCMI_HSYNC
        GPIO_PinAFConfig(GPIOA,GPIO_PinSource6,GPIO_AF_DCMI); //PA6,AF13  DCMI_PCLK  
        GPIO_PinAFConfig(GPIOB,GPIO_PinSource7,GPIO_AF_DCMI); //PB7,AF13  DCMI_VSYNC
        GPIO_PinAFConfig(GPIOC,GPIO_PinSource6,GPIO_AF_DCMI); //PC6,AF13  DCMI_D0  
        GPIO_PinAFConfig(GPIOC,GPIO_PinSource7,GPIO_AF_DCMI); //PC7,AF13  DCMI_D1
        GPIO_PinAFConfig(GPIOC,GPIO_PinSource8,GPIO_AF_DCMI); //PC8,AF13  DCMI_D2
        GPIO_PinAFConfig(GPIOC,GPIO_PinSource9,GPIO_AF_DCMI); //PC9,AF13  DCMI_D3
        GPIO_PinAFConfig(GPIOC,GPIO_PinSource11,GPIO_AF_DCMI);//PC11,AF13 DCMI_D4
        GPIO_PinAFConfig(GPIOB,GPIO_PinSource6,GPIO_AF_DCMI); //PB6,AF13  DCMI_D5
        GPIO_PinAFConfig(GPIOE,GPIO_PinSource5,GPIO_AF_DCMI); //PE5,AF13  DCMI_D6
        GPIO_PinAFConfig(GPIOE,GPIO_PinSource6,GPIO_AF_DCMI); //PE6,AF13  DCMI_D7

       
        DCMI_DeInit();//Çå3yÔ-à′μÄéèÖÃ


  DCMI_InitStructure.DCMI_CaptureMode=DCMI_CaptureMode_Continuous;//á¬DøÄ£ê½
  DCMI_InitStructure.DCMI_CaptureRate=DCMI_CaptureRate_All_Frame;//è«Ö¡2¶»ñ
        //DCMI_InitStructure.DCMI_CaptureRate=DCMI_CaptureRate_1of2_Frame;
        DCMI_InitStructure.DCMI_ExtendedDataMode= DCMI_ExtendedDataMode_8b;//8λêy¾Y¸ñê½  
        DCMI_InitStructure.DCMI_HSPolarity = DCMI_HSPolarity_Low;//HSYNC μíμçÆ½óDD§
        DCMI_InitStructure.DCMI_PCKPolarity= DCMI_PCKPolarity_Rising;//PCLK éÏéyÑØóDD§
        DCMI_InitStructure.DCMI_SynchroMode= DCMI_SynchroMode_Hardware;//ó2¼tí¬2½HSYNC,VSYNC
        DCMI_InitStructure.DCMI_VSPolarity=DCMI_VSPolarity_High;//VSYNC μíμçÆ½óDD§
        DCMI_Init(&DCMI_InitStructure);

        DCMI_ITConfig(DCMI_IT_FRAME,ENABLE);//¿aÆôÖ¡ÖD¶Ï
        DCMI_ITConfig(DCMI_IT_LINE,ENABLE); //¿aÆôDDÖD¶Ï
        DCMI_ITConfig(DCMI_IT_VSYNC,ENABLE); //¿aÆô3¡ÖD¶Ï       
        DCMI_Cmd(ENABLE);        //DCMIê1Äü

  NVIC_InitStructure.NVIC_IRQChannel = DCMI_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;//ÇàÕ¼óÅÏè¼¶1
        NVIC_InitStructure.NVIC_IRQChannelSubPriority =0;                //×óóÅÏè¼¶3
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                        //IRQí¨μàê1Äü
        NVIC_Init(&NVIC_InitStructure);        //¸ù¾YÖ¸¶¨μÄ2Îêy3õê¼»ˉVIC¼Ä′æÆ÷¡¢
}
回复

使用道具 举报

1

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2017-1-19
在线时间
20 小时
 楼主| 发表于 2017-9-11 20:35:47 | 显示全部楼层
dcmi 配置
回复

使用道具 举报

1

主题

11

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2017-3-5
在线时间
4 小时
发表于 2017-9-12 21:13:17 | 显示全部楼层
调出来了吗?
回复

使用道具 举报

1

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2017-1-19
在线时间
20 小时
 楼主| 发表于 2017-9-14 15:11:49 | 显示全部楼层

还在调  你调出来了吗
回复

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2017-11-20
在线时间
8 小时
发表于 2018-10-4 12:25:02 | 显示全部楼层
你好调出来了吗
回复

使用道具 举报

0

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2019-4-30
在线时间
10 小时
发表于 2019-8-10 09:30:06 | 显示全部楼层
没,搞不出来
回复

使用道具 举报

37

主题

477

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
2285
金钱
2285
注册时间
2017-8-24
在线时间
375 小时
发表于 2019-8-10 17:12:29 | 显示全部楼层
不能上张图嘛?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-15 20:23

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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