OpenEdv-开源电子网

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

407+DCMI+OV2640不能进入中断求解

[复制链接]

1

主题

6

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2018-7-3
在线时间
7 小时
发表于 2018-7-3 11:35:52 | 显示全部楼层 |阅读模式
5金钱
在407ZG配置DCMI采集OV2640的JPEG,示波器测到VSYNC有波形,有效电平LOW,HSYNC有波形,有效电平也是LOW,PCLK也有波形。
但配置后一次都不能进入DCMI中断。求解。。。。。。。
硬件上把HSYNC PCLK配置成外部中断采集是可以的,这至少表明相关的IO脚连接没问题吧。

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

使用道具 举报

12

主题

94

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
307
金钱
307
注册时间
2016-6-15
在线时间
60 小时
发表于 2018-7-3 14:32:04 | 显示全部楼层
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2018-7-4 02:18:02 | 显示全部楼层
应该是配置问题
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2018-7-3
在线时间
7 小时
 楼主| 发表于 2018-7-4 09:15:24 | 显示全部楼层

万能的原子哥你好,DCMI如果配置正确的话,只要有VSYNC 或者HSYNC,就应该能进入中断的吧。哪怕DMA没设置
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2018-7-3
在线时间
7 小时
 楼主| 发表于 2018-7-4 09:21:54 | 显示全部楼层
配置代码如下:
        RCC_AHB2PeriphResetCmd(RCC_AHB2Periph_DCMI,ENABLE);
        RCC_AHB2PeriphResetCmd(RCC_AHB2Periph_DCMI,DISABLE);
       
        RCC_AHB2PeriphClockCmd(RCC_AHB2Periph_DCMI, ENABLE);
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA|RCC_AHB1Periph_GPIOB|
                                   RCC_AHB1Periph_GPIOC|RCC_AHB1Periph_GPIOE|RCC_AHB1Periph_DMA2, ENABLE);


        GPIO_PinAFConfig(GPIOA,GPIO_PinSource6,GPIO_AF_DCMI); //PCLK
        GPIO_PinAFConfig(GPIOA,GPIO_PinSource4,GPIO_AF_DCMI); //HSYNC
        GPIO_PinAFConfig(GPIOB,GPIO_PinSource7,GPIO_AF_DCMI); //VSYNC
        GPIO_PinAFConfig(GPIOC,GPIO_PinSource6,GPIO_AF_DCMI); //DC0
        GPIO_PinAFConfig(GPIOC,GPIO_PinSource7,GPIO_AF_DCMI); //DC1
        GPIO_PinAFConfig(GPIOE,GPIO_PinSource0,GPIO_AF_DCMI); //DC2
        GPIO_PinAFConfig(GPIOE,GPIO_PinSource1,GPIO_AF_DCMI); //DC3
        GPIO_PinAFConfig(GPIOE,GPIO_PinSource4,GPIO_AF_DCMI); //DC4
        GPIO_PinAFConfig(GPIOB,GPIO_PinSource6,GPIO_AF_DCMI); //DC5
        GPIO_PinAFConfig(GPIOB,GPIO_PinSource8,GPIO_AF_DCMI); //DC6
        GPIO_PinAFConfig(GPIOB,GPIO_PinSource9,GPIO_AF_DCMI); //DC7

        GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_6|GPIO_Pin_4;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
        GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;//GPIO_OType_PP 也一样不行
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
        GPIO_Init(GPIOA, &GPIO_InitStructure);

        GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9;
    GPIO_Init(GPIOB, &GPIO_InitStructure);

        GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_6 | GPIO_Pin_7 ;
    GPIO_Init(GPIOC, &GPIO_InitStructure);

        GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_4 ;
    GPIO_Init(GPIOE, &GPIO_InitStructure);

     DCMI_DeInit();
        
    DCMI_InitStructure.DCMI_CaptureMode = DCMI_CaptureMode_SnapShot;
    DCMI_InitStructure.DCMI_SynchroMode = DCMI_SynchroMode_Hardware;
    DCMI_InitStructure.DCMI_PCKPolarity = DCMI_PCKPolarity_Rising;
    DCMI_InitStructure.DCMI_VSPolarity = DCMI_VSPolarity_Low;
    DCMI_InitStructure.DCMI_HSPolarity = DCMI_HSPolarity_Low;
    DCMI_InitStructure.DCMI_CaptureRate = DCMI_CaptureRate_1of4_Frame;
    DCMI_InitStructure.DCMI_ExtendedDataMode = DCMI_ExtendedDataMode_8b;  
    DCMI_Init(&DCMI_InitStructure);
    DCMI_JPEGCmd(ENABLE);
    RCC_AHB2PeriphClockCmd(RCC_AHB2Periph_DCMI, ENABLE);
        
    DCMI_ITConfig(DCMI_IT_OVF|DCMI_IT_FRAME|DCMI_IT_VSYNC|DCMI_IT_ERR|DCMI_IT_LINE,ENABLE);
        
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
    NVIC_InitStructure.NVIC_IRQChannel = DCMI_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority =1;               
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                        
    NVIC_Init(&NVIC_InitStructure);   
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2018-7-5 02:01:35 | 显示全部楼层
迷糊哥 发表于 2018-7-4 09:15
万能的原子哥你好,DCMI如果配置正确的话,只要有VSYNC 或者HSYNC,就应该能进入中断的吧。哪怕DMA没设置

是的
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2018-7-3
在线时间
7 小时
 楼主| 发表于 2018-7-5 09:10:21 | 显示全部楼层

又有新发现 把VSYNC接到随便一条数据线,比如D0,就有一堆中断。HSYNC也是如此。D0变化比V/H快多了,都可以进中断。为啥V/H不行。看示波器,V信号是规整的方波,约50ms周期。低电平=0,高电平=3.3
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2018-7-3
在线时间
7 小时
 楼主| 发表于 2018-7-5 09:11:19 | 显示全部楼层

哥们有啥进展呢?
回复

使用道具 举报

12

主题

94

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
307
金钱
307
注册时间
2016-6-15
在线时间
60 小时
发表于 2018-7-6 10:20:04 | 显示全部楼层
迷糊哥 发表于 2018-7-5 09:11
哥们有啥进展呢?

我用的排线接的,现太长,干扰太大,时钟输入废了.....换短线之后好了
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2018-7-3
在线时间
7 小时
 楼主| 发表于 2018-7-6 13:07:38 | 显示全部楼层
翼落天使 发表于 2018-7-6 10:20
我用的排线接的,现太长,干扰太大,时钟输入废了.....换短线之后好了

我有可能也是这原因,准备改版。但有个疑问,我改成IO外部中断,是可以的。也许DCMI的性能不如外部中断牛吧。对了,多问一句,你改成多短?是单独改PCLK吗?还是H/V和PCLK都改短
回复

使用道具 举报

12

主题

94

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
307
金钱
307
注册时间
2016-6-15
在线时间
60 小时
发表于 2018-7-6 15:18:14 | 显示全部楼层
迷糊哥 发表于 2018-7-6 13:07
我有可能也是这原因,准备改版。但有个疑问,我改成IO外部中断,是可以的。也许DCMI的性能不如外部中断牛 ...

原本是20cm的杜邦线,后来我画的板子到了,直接装板子上了.走线长度大约2000mil
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-1 02:14

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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