打印
[STM32F1]

修改ov7670的sda引脚

[复制链接]
897|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
smarobat|  楼主 | 2016-10-20 16:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题,mini板使用ov7670时,用的是扩展例程的扩展实验9源码,其中ov7670的SDA引脚接的是PC5引脚,在此想要将其修改为其他引脚例如PC1,已经改了相应代码,但是初始化的时候还是出错了。其中,修改的代码(标为红色的代码为修改的)如下所示:
void SCCB_Init(void)
{
        GPIO_InitTypeDef  GPIO_InitStructure;
        
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);         //使能PC端口时钟
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_1;    // 端口配置
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                  //输输出
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                 //IO口速度为50MHz
        GPIO_Init(GPIOC, &GPIO_InitStructure);
        GPIO_SetBits(GPIOC,GPIO_Pin_4|GPIO_Pin_1);     // 输出高

        SCCB_SDA_OUT();           
}


//#define SCCB_SDA_IN()  {GPIOC->CRL&=0XFF0FFFFF;GPIOC->CRL|=0X00800000;}
//#define SCCB_SDA_OUT() {GPIOC->CRL&=0XFF0FFFFF;GPIOC->CRL|=0X00300000;}


#define SCCB_SDA_IN()  {GPIOC->CRL&=0XFFFFFF0F;GPIOC->CRL|=0X00000080;}
#define SCCB_SDA_OUT() {GPIOC->CRL&=0XFFFFFF0F;GPIOC->CRL|=0X00000030;}




//IO操作函数         
#define SCCB_SCL                    PCout(4)                 //SCL
#define SCCB_SDA                    PCout(1)                 //SDA         

#define SCCB_READ_SDA            PCin(1)                  //输入SDA   
#define SCCB_ID                           0X42                          //OV7670的ID

就修改了这三部分,启动的时候出现OV7670 Error!!,也即初始化失败。请问是什么问题,还需要修改其他地方吗?
沙发
zhuomuniao110| | 2016-10-20 18:36 | 只看该作者
通过宏定义来修改这些确实很方便程序的移植。

使用特权

评论回复
板凳
mmuuss586| | 2016-10-20 18:40 | 只看该作者
改这几个红色地方应该可以的,看下下面2句有没有该对
#define SCCB_SDA_IN()  {GPIOC->CRL&=0XFFFFFF0F;GPIOC->CRL|=0X00000080;}
#define SCCB_SDA_OUT() {GPIOC->CRL&=0XFFFFFF0F;GPIOC->CRL|=0X00000030;}

使用特权

评论回复
地板
smarobat|  楼主 | 2016-10-20 20:59 | 只看该作者
mmuuss586 发表于 2016-10-20 18:40
改这几个红色地方应该可以的,看下下面2句有没有该对
#define SCCB_SDA_IN()  {GPIOC->CRL&=0XFFFFFF0F;GPI ...

这两个是看手册改的,应该没问题的,不知道是不是还有地方漏掉没改

使用特权

评论回复
5
smarobat|  楼主 | 2016-10-20 21:12 | 只看该作者
mmuuss586 发表于 2016-10-20 18:40
改这几个红色地方应该可以的,看下下面2句有没有该对
#define SCCB_SDA_IN()  {GPIOC->CRL&=0XFFFFFF0F;GPI ...

问题解决了。可能是我开发板PC1这个引脚有问题,我换成其他引脚就可以了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

7

帖子

0

粉丝