OV2640数据传输及寄存器配置

2019-07-20 15:58发布

各位,想问一下,如果OV2640配置为SXGA模式,分辨率为1600x1200,把相关函数配置为                OV2640_ImageSize_Set(320,240);        OV2640_OutSize_Set(320,240);
输出图像为 320x240,在这个过程中,图像数据是隔点取数值,1600x1200稀释为320x240,这个过程应该是在OV2640八位芯片内完成的,对吗,DCMI输出直接为320x240的图像数对吗?

还想问一下,想把输出图像数值存于数组中。F407板子中,A4脚为HREF,行中断,想改为外部中断,发现问题想请教一下




1.
  RCC_AHB2PeriphClockCmd(RCC_AHB2Periph_CRYP| RCC_AHB2Periph_HASH|RCC_AHB2Periph_RNG,ENABLE);

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;-
    GPIO_Init(GPIOA, &GPIO_InitStructure);


    SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA,EXTI_PinSource4);
    EXTI_InitStructure.EXTI_Line=EXTI_Line4;  
    EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;  
    EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Rising;  
    EXTI_InitStructure.EXTI_LineCmd=ENABLE;
    EXTI_Init(&EXTI_InitStructure);         

    发现没有CFG的时钟,只好全部启动,不知这样可以不

2.   
   GPIO_PinAFConfig(GPIOA,GPIO_PinSource4,GPIO_AF_DCMI);
  这段代码与EXTI的工作有冲突,请问该如何解决,多谢





       GPIO_InitTypeDef  GPIO_InitStructure;
        NVIC_InitTypeDef  NVIC_InitStructure;
        EXTI_InitTypeDef  EXTI_InitStructure;
        RCC_AHB2PeriphClockCmd(RCC_AHB2Periph_CRYP| RCC_AHB2Periph_HASH|RCC_AHB2Periph_RNG,ENABLE);
       
        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);
        //GPIOF9,F103õê¼»ˉéèÖÃ
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_6;//PA4/6   
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
        GPIO_Init(GPIOA, &GPIO_InitStructure);»ˉ
       

       GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7|GPIO_Pin_6;//PA4/6   //PB6/7
       GPIO_Init(GPIOB, &GPIO_InitStructure);//
       
       GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_11;//PC6/7/8/9/11
       GPIO_Init(GPIOC, &GPIO_InitStructure);       

      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5|GPIO_Pin_6;//PE5/6
      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


//A4:HREF
       
   SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA,EXTI_PinSource4);
   EXTI_InitStructure.EXTI_Line=EXTI_Line4;  
   EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;  
   EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Rising;  
         EXTI_InitStructure.EXTI_LineCmd=ENABLE;
   EXTI_Init(&EXTI_InitStructure);         

       
        DCMI_DeInit();


  DCMI_InitStructure.DCMI_CaptureMode=DCMI_CaptureMode_Continuous;
        DCMI_InitStructure.DCMI_CaptureRate=DCMI_CaptureRate_All_Frame;
        DCMI_InitStructure.DCMI_ExtendedDataMode= DCMI_ExtendedDataMode_8b;
        DCMI_InitStructure.DCMI_HSPolarity= DCMI_HSPolarity_Low;
        DCMI_InitStructure.DCMI_PCKPolarity= DCMI_PCKPolarity_Rising;
        DCMI_InitStructure.DCMI_SynchroMode= DCMI_SynchroMode_Hardware;
        DCMI_InitStructure.DCMI_VSPolarity=DCMI_VSPolarity_Low;
        DCMI_Init(&DCMI_InitStructure);

        DCMI_ITConfig(DCMI_IT_FRAME,ENABLE);
       
        DCMI_Cmd(ENABLE);       

        NVIC_InitStructure.NVIC_IRQChannel = EXTI4_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority =3;               
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;               

        NVIC_InitStructure.NVIC_IRQChannel = DCMI_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority =2;               
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                       
        NVIC_Init(&NVIC_InitStructure);       
       

3.请问一下,若没有行中断,图像数据存在数组中,该如何保证数据存储的正确性,多谢






0条回答

一周热门 更多>