OpenEdv-开源电子网

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

(急求解答)摄像头 ov2640与sdio冲突 SDIO无法初始化

[复制链接]

9

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2015-12-15
在线时间
15 小时
发表于 2016-5-30 11:40:14 | 显示全部楼层 |阅读模式
10金钱
大家好,我直接阐述一下问题!1,单独SDIO初始化没有问题,TF卡可以进行正常的工作,
2,单独对摄像头进行初始化没有问题,摄像头可以进行正常工作
3,先对摄像头进行初始化,然后再对SDIO进行初始化,再SDIO初始化的时候就会出现错误,无法完成初始化
4,先对SDIO进行初始化,然后再对OV2640进行初始化,摄像头可以正常工作,但是再对SDIO进行操作时候会死机。

其中第3对摄像头的初始化 我只是用I2C对摄像头进行寄存器的配置,还没有涉及管脚复用的那一块(我复用了SDIO_D0(DCNI_D2)   SDIO_D1(DCNI_D2)  ),这样SDIO都会初始化错误。请问大家是什么原因!急求答案,谢谢



u8 OV2640_Init(void)
{

最佳答案

查看完整内容[请看2#楼]

我们例程就没有问题。 你用SD卡的时候,必须设置OV2640进入掉电模式,否则它的IO还是会输出数据,影响SDIO通信。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2016-5-30 11:40:15 | 显示全部楼层
蒙子 发表于 2016-6-2 11:26
原子哥 !我是分时复用的 就是像你示例里面的 将功能重新映射!还请帮解析解析 谢谢

我们例程就没有问题。
你用SD卡的时候,必须设置OV2640进入掉电模式,否则它的IO还是会输出数据,影响SDIO通信。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

9

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2015-12-15
在线时间
15 小时
 楼主| 发表于 2016-5-30 11:40:38 | 显示全部楼层
u8 OV2640_Init(void) {          u16 i=0;         u16 reg;         //设置IO                   GPIO_InitTypeDef  GPIO_InitStructure;    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOG, ENABLE);   //GPIOG9,15初始化设置   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9|GPIO_Pin_15;//PG9,15推挽输出   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; //推挽输出   GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//100MHz   GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉   GPIO_Init(GPIOG, &GPIO_InitStructure);//初始化            OV2640_PWDN=0;        //POWER ON         delay_ms(10);         OV2640_RST=0;        //复位OV2640         delay_ms(10);         OV2640_RST=1;        //结束复位    SCCB_Init();                        //初始化SCCB 的IO口                  SCCB_WR_Reg(OV2640_DSP_RA_DLMT, 0x01);        //操作sensor寄存器          SCCB_WR_Reg(OV2640_SENSOR_COM7, 0x80);        //软复位OV2640         delay_ms(50);          reg=SCCB_RD_Reg(OV2640_SENSOR_MIDH);        //读取厂家ID 高八位         reg<<=8;         reg|=SCCB_RD_Reg(OV2640_SENSOR_MIDL);        //读取厂家ID 低八位         if(reg!=OV2640_MID)         {                 printf("MID:%d\r\n",reg);                 return 1;         }         reg=SCCB_RD_Reg(OV2640_SENSOR_PIDH);        //读取厂家ID 高八位         reg<<=8;         reg|=SCCB_RD_Reg(OV2640_SENSOR_PIDL);        //读取厂家ID 低八位         if(reg!=OV2640_PID)         {                 printf("HID:%d\r\n",reg);                 return 2;         }             //初始化 OV2640,采用SXGA分辨率(1600*1200)           for(i=0;i<sizeof(ov2640_sxga_init_reg_tbl)/2;i++)         {                    SCCB_WR_Reg(ov2640_sxga_init_reg_tbl[i][0],ov2640_sxga_init_reg_tbl[i][1]);          }            return 0x00;         //ok }
回复

使用道具 举报

9

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2015-12-15
在线时间
15 小时
 楼主| 发表于 2016-5-30 14:49:48 | 显示全部楼层
摄像头初始化之后对SD卡造成干扰  
回复

使用道具 举报

3

主题

347

帖子

3

精华

金牌会员

Rank: 6Rank: 6

积分
2078
金钱
2078
注册时间
2014-12-19
在线时间
710 小时
发表于 2016-5-30 20:18:57 来自手机 | 显示全部楼层
仔细看原子的教程,必须分时复用才行。
回复

使用道具 举报

3

主题

548

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1383
金钱
1383
注册时间
2015-2-3
在线时间
197 小时
发表于 2016-5-30 20:45:03 | 显示全部楼层
引脚发生冲突了,只能分时复用或者更改电路
回复

使用道具 举报

9

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2015-12-15
在线时间
15 小时
 楼主| 发表于 2016-5-30 21:28:41 | 显示全部楼层
yyx112358 发表于 2016-5-30 20:45
引脚发生冲突了,只能分时复用或者更改电路

这个方法尝试过了,就是如下的一些操作
        GPIO_PinAFConfig(GPIOC,GPIO_PinSource8,GPIO_AF_DCMI); //PC8,AF13  DCMI_D2  PE0
        GPIO_PinAFConfig(GPIOC,GPIO_PinSource9,GPIO_AF_DCMI); //PC9,AF13  DCMI_D3  PE1
/////////////////////////////
        GPIO_PinAFConfig(GPIOC,GPIO_PinSource8,GPIO_AF_SDIO); //PC8,
        GPIO_PinAFConfig(GPIOC,GPIO_PinSource9,GPIO_AF_SDIO); //PC9,
还是会死机!
       
回复

使用道具 举报

9

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2015-12-15
在线时间
15 小时
 楼主| 发表于 2016-5-30 21:29:48 | 显示全部楼层
lvehe 发表于 2016-5-30 20:18
仔细看原子的教程,必须分时复用才行。

已经分时间复用,但是还是会出错
回复

使用道具 举报

3

主题

347

帖子

3

精华

金牌会员

Rank: 6Rank: 6

积分
2078
金钱
2078
注册时间
2014-12-19
在线时间
710 小时
发表于 2016-5-30 21:56:57 来自手机 | 显示全部楼层
你这样当然没有效果。具体方法见原子的例程,问之前还是多翻翻资料,仔细看原子的教程
回复

使用道具 举报

9

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2015-12-15
在线时间
15 小时
 楼主| 发表于 2016-5-30 22:41:54 | 显示全部楼层
lvehe 发表于 2016-5-30 21:56
你这样当然没有效果。具体方法见原子的例程,问之前还是多翻翻资料,仔细看原子的教程

//void sw_ov2640_mode(void)
//{
//        OV2640_PWDN=0;//OV2640 Power Up
//        //GPIOC6/8/9/11切换为 DCMI接口
//        GPIO_PinAFConfig(GPIOC,GPIO_PinSource6,GPIO_AF_DCMI);  //PC8,AF13  DCMI_D2
//        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
//}
////切换为SD卡模式
//void sw_sdcard_mode(void)
//{
//        OV2640_PWDN=1;//OV2640 Power Down
//        //GPIOC6/8/9/11切换为 SDIO接口
//                GPIO_PinAFConfig(GPIOC,GPIO_PinSource6,GPIO_AF5_SPI3);  
//        GPIO_PinAFConfig(GPIOC,GPIO_PinSource8,GPIO_AF_SDIO);  //PC8,AF12
//        GPIO_PinAFConfig(GPIOC,GPIO_PinSource9,GPIO_AF_SDIO);//PC9,AF12
//        GPIO_PinAFConfig(GPIOC,GPIO_PinSource11,GPIO_AF_SDIO);
//}
我参考了原子的例子,我这样理解的,每次使用摄像头之前 sw_ov2640_mode()就切换为DCMI模式,使用完之后DCMI_STOP()+_sdcard_mode切换回SDIO模式!这样理解对不对?
回复

使用道具 举报

10

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
100
金钱
100
注册时间
2016-4-8
在线时间
27 小时
发表于 2016-5-31 10:13:26 | 显示全部楼层
你是用的原子的摄像头吗? 我也遇到了这个问题 同样的程序 用原子的摄像头模块就可以  用其他的SD卡就初始化不了
回复

使用道具 举报

36

主题

256

帖子

0

精华

高级会员

Rank: 4

积分
921
金钱
921
注册时间
2016-4-20
在线时间
169 小时
发表于 2016-5-31 15:20:32 | 显示全部楼层
楼主,如果分时复用不行的话,你要不直接把摄像头的几个引脚映射到PE0~PE3.我看了开发板这几个引脚就是和按键有点冲突,不过对你的项目影响应该不大。我之前做开发用了两个iis引脚和jtag有冲突,也是重新映射解决问题的。
回复

使用道具 举报

36

主题

256

帖子

0

精华

高级会员

Rank: 4

积分
921
金钱
921
注册时间
2016-4-20
在线时间
169 小时
发表于 2016-5-31 15:25:02 | 显示全部楼层
楼主注意我标红的地方,这样的话可能原来的硬件连接不太好用了,要重新飞线出来。


//I2s3引脚和JTAG冲突将PA15 PB3 PB4 PB5重新映射到A4 PC7 PC10 PC11 PC12
u8 I2s3Init(void)
{       
        GPIO_InitTypeDef  GPIO_InitStructure;
       
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA|RCC_AHB1Periph_GPIOC, 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);
       
        //PC7/PC10/PC11/PC12
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_10|GPIO_Pin_11 |GPIO_Pin_12;
  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(GPIOC, &GPIO_InitStructure);
       
        GPIO_PinAFConfig(GPIOA,GPIO_PinSource4,GPIO_AF_SPI3);   //PA4   I2S3_LRCK
        GPIO_PinAFConfig(GPIOC,GPIO_PinSource7,GPIO_AF_SPI3);   //PC7  I2S3_MCK
        GPIO_PinAFConfig(GPIOC,GPIO_PinSource10,GPIO_AF_SPI3);        //PC10  I2S3_SCLK
        GPIO_PinAFConfig(GPIOC,GPIO_PinSource11,GPIO_AF5_SPI3);        //PC11  I2S3ext_SD
        GPIO_PinAFConfig(GPIOC,GPIO_PinSource12,GPIO_AF_SPI3);  //PC12  I2S3_SD
       
        return 0;
}

回复

使用道具 举报

9

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2015-12-15
在线时间
15 小时
 楼主| 发表于 2016-5-31 16:19:57 | 显示全部楼层
czdspeed 发表于 2016-5-31 15:25
楼主注意我标红的地方,这样的话可能原来的硬件连接不太好用了,要重新飞线出来。

恩恩 谢谢 !但这些个口跟我的不一样!我复用的摄像头跟SDIO的没有办法映射到其他地方
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2016-6-1 21:13:39 | 显示全部楼层
因为共用IO了,不能同时使用!!
回复

使用道具 举报

9

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2015-12-15
在线时间
15 小时
 楼主| 发表于 2016-6-2 11:26:21 | 显示全部楼层
正点原子 发表于 2016-6-1 21:13
因为共用IO了,不能同时使用!!

原子哥 !我是分时复用的 就是像你示例里面的 将功能重新映射!还请帮解析解析 谢谢
回复

使用道具 举报

9

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2015-12-15
在线时间
15 小时
 楼主| 发表于 2016-6-14 08:54:40 | 显示全部楼层
正点原子 发表于 2016-5-30 11:40
我们例程就没有问题。
你用SD卡的时候,必须设置OV2640进入掉电模式,否则它的IO还是会输出数据,影响SD ...

原子哥  是这个问题 谢谢
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-27 14:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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