STM32F407与OV7670摄像头实验求助

2019-07-20 06:23发布

用STM32F407和DCMI做OV7670摄像头实验,各方面初始化都能成功,VSYNC, HSYNC, PCLK的信号都正常,也开启了DCMI。DCMI能检测到VSYNC, HSYNC信号,但好像检测不到PCLK信号。观察DCMI->SR的FNE位一直为0,DCMI的FIFO应该也是一直为空,像是检测不到PCLK一样,不知道是哪里的问题,是不是还有哪个寄存器没有正确开启?请各路大神指教些招数来.下面贴出来DCMI的初始化:
void DCMI_Init(void)
{
        RCC->AHB1ENR |= 1<<0;    //使能外设PORTA时钟
        RCC->AHB1ENR |= 1<<1;    //使能外设PORTB时钟
        RCC->AHB1ENR |= 1<<2;  //使能外设PORTC时钟
        RCC->AHB1ENR |= 1<<4;  //使能外设PORTE时钟     
        RCC->AHB2ENR |= 1<<0;  //能DCMI时钟

        GPIO_Set(GPIOA, PIN4|PIN6, GPIO_MODE_AF, GPIO_OTYPE_PP, GPIO_SPEED_100M, GPIO_PUPD_PU);                        //PA4/6   复用功能输出
        GPIO_Set(GPIOB, PIN6|PIN7, GPIO_MODE_AF, GPIO_OTYPE_PP, GPIO_SPEED_100M, GPIO_PUPD_PU);                                //PB6/7   复用功能输出
        GPIO_Set(GPIOC, PIN6|PIN7|PIN8|PIN9|PIN11, GPIO_MODE_AF, GPIO_OTYPE_PP, GPIO_SPEED_100M, GPIO_PUPD_PU);                //PC6/7/8/9/11 复用功能输出
        GPIO_Set(GPIOE, PIN5|PIN6, GPIO_MODE_AF, GPIO_OTYPE_PP, GPIO_SPEED_100M, GPIO_PUPD_PU);                        //PE5/6  复用功能输出
               
        GPIO_AF_Set(GPIOA, 4, 13);   //PA4,AF13  DCMI_HSYNC
        GPIO_AF_Set(GPIOA, 6, 13);   //PA6,AF13  DCMI_PCLK  
        GPIO_AF_Set(GPIOB, 7, 13); //PB7,AF13  DCMI_VSYNC
        GPIO_AF_Set(GPIOC, 6, 13); //PC6,AF13  DCMI_D0
        GPIO_AF_Set(GPIOC, 7, 13); //PC7,AF13  DCMI_D1
        GPIO_AF_Set(GPIOC, 8, 13); //PC8,AF13  DCMI_D2
        GPIO_AF_Set(GPIOC, 9, 13);  //PC9,AF13  DCMI_D3
        GPIO_AF_Set(GPIOC, 11, 13);  //PC11,AF13 DCMI_D4
        GPIO_AF_Set(GPIOB, 6, 13);  //PB6,AF13  DCMI_D5
        GPIO_AF_Set(GPIOE, 5, 13);  //PE5,AF13  DCMI_D6
        GPIO_AF_Set(GPIOE, 6, 13);  //PE6,AF13  DCMI_D7

        DCMI->CR = 0x0;  //清除原来的设置
        DCMI->IER = 0x0;
        DCMI->ICR = 0x1F;
        DCMI->ESCR = 0x0;
        DCMI->ESUR = 0x0;
        DCMI->CWSTRTR = 0x0;
        DCMI->CWSIZER = 0x0;
       
        DCMI->CR |= 0<<1;  //连续模式
        DCMI->CR |= 0<<2;  //全帧捕获
        DCMI->CR |= 0<<4;  //硬件同步HSYNC,VSYNC
        DCMI->CR |= 1<<5;  //PCLK 上升沿有效
        DCMI->CR |= 0<<6;  //HSYNC 低电平有效
        DCMI->CR |= 0<<7;  //VSYNC 低电平有效
        DCMI->CR |= 0<<8;  //捕获所有的帧
        DCMI->CR |= 0<<10;  //8位数据格式  
        //DCMI->IER |= 1<<0;  //开启帧中断
        DCMI->CR |= 1<<14;  //DCMI使能
        //MY_NVIC_Init(0, 0, DCMI_IRQn, 2);  //抢占1,子优先级2,组2
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。