stm32f4 驱动ov7725摄像头,使用dcmi一直无法产生中断

2019-07-20 07:15发布

本帖最后由 zamm 于 2017-8-6 14:07 编辑

摄像头的信号时序用示波器看了一下大概如图。


现在的情况是,用手拔插一下像素时钟线,会产生一次中断,之后数据寄存器就会更新,但是就是一直不会产生中断。


请问有人遇到过同样的问题吗?请问是如何解决的

或者有没有人将飞思卡尔用的鹰眼摄像头,移植到stm32f4,可否分享一份程序学习一下。

十分感谢

初始化程序如下[mw_shl_code=applescript,true]
void DCMI_Init(void)
{
        //设置IO
        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  复用功能输出
        delay_ms(100);
        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
        
        delay_ms(100);
        //清除原来的设置
        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|=1<<7;                //VSYNC高电平有效
        
        DCMI->CR|=0<<8;                //捕获所有的帧
        DCMI->CR|=0<<10;         //8位数据格式  
        
        DCMI->IER|=1<<0;         //开启帧中断
        DCMI->IER|=1<<3;         //开启帧中断
        DCMI->IER|=1<<4;         //开启帧中断
//        
        
        MY_NVIC_Init(1,0,DCMI_IRQn,2);        //抢占1,子优先级2,组2 //设置IO
        DCMI->CR|=1<<14;         //DCMI使能
} [/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
24条回答
正点原子
1楼-- · 2019-07-20 08:01
示波器看看输出信号
zamm
2楼-- · 2019-07-20 12:09
 精彩回答 2  元偷偷看……
正点原子
3楼-- · 2019-07-20 16:36
 精彩回答 2  元偷偷看……
zamm
4楼-- · 2019-07-20 20:40
正点原子 发表于 2017-8-7 00:41
如果VSYNC,HSYNC有信号,那就肯定会进入帧中断才对。
你配置错了么?

你好,配置是按着原子的例程来的啊,最近是全国大学生电子设计竞赛,好多人在移植鹰眼k60的程序到stm32f4的时候都遇到这个问题了。
Z1650570741
5楼-- · 2019-07-21 02:25
 精彩回答 2  元偷偷看……
Z1650570741
6楼-- · 2019-07-21 05:05
DCMI显示出一片花瓶

一周热门 更多>