智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 2453|回复: 3
打印 上一主题 下一主题

[摄像头] ov7620 sccb初始化怎么写啊

[复制链接]

14

主题

53

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
384
威望
236
贡献
90
兑换币
135
注册时间
2013-3-30
在线时间
29 小时
毕业学校
ccit
跳转到指定楼层
1#
发表于 2013-5-5 11:30:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
不行了。。。寄存器太多了,求大虾指导写个初始化函数学习下。

12

主题

185

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3413
威望
1741
贡献
998
兑换币
782
注册时间
2011-11-22
在线时间
337 小时
2#
发表于 2013-5-5 13:11:16 | 只看该作者
多个毛啊?两句话配置一个寄存器,一个地址一个数据。无需初始化
回复 支持 反对

使用道具 举报

5

主题

266

帖子

1

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4534

优秀会员奖章活跃会员奖章论坛元老奖章在线王奖章

QQ
威望
2111
贡献
1489
兑换币
1311
注册时间
2012-5-23
在线时间
467 小时
3#
发表于 2013-5-14 16:56:05 | 只看该作者
static void SCCB_Delay_10us(word time)
{
    word i , j ;
    for(i = 0 ; i < time ; i++)
        for(j = 0 ; j < 125 ; j++) ;
}

/* SCCB初始化 */
void SCCB_Init(void)
{
    SCL_OUT() ;                     // 设置SCL引脚为输出引脚
    SDA_OUT() ;                     // 设置SDA引脚为输出引脚
}

/* SCCB协议开始信号 */
static void Sccb_Start(void)
{                     
    CLOCK_HIGH();                   //开始信号为在时钟为高时数据有一个下降沿
    DATA_HIGH() ;   
    SCCB_Delay_10us(1);
    DATA_LOW();
    SCCB_Delay_10us(1);
    CLOCK_LOW();
    SCCB_Delay_10us(1);
}

/* SCCB协议结束信号 */
static void Sccb_End(void)
{
     DATA_LOW();                    //结束信号为在时钟为高时数据有一个上升沿
     SCCB_Delay_10us(1);
     CLOCK_HIGH();
     SCCB_Delay_10us(1);
     DATA_HIGH();
     SCCB_Delay_10us(1);
     CLOCK_LOW() ;
     SCCB_Delay_10us(1);
}

/* SCCB协议发送数据 */
static void Sccb_Send_Byte(byte data)
{
    word i = 0 ;
    for(i = 0 ; i < 8 ; i++)            //并行数据转串行输出,串行数据输出的顺序为先高位再低位
    {
        if(data & 0x80)                 // 根据数据的最高位控制数据引脚
        { DATA_HIGH() ; }
        else
        { DATA_LOW() ; }
        SCCB_Delay_10us(1) ;            
        CLOCK_HIGH() ;                  // 通过发起时钟并延时发送1位数据
        SCCB_Delay_10us(1) ;
        CLOCK_LOW() ;
        SCCB_Delay_10us(1) ;
        data <<= 1 ;                    // 数据左移,即发送下一位数据
    }
    DATA_HIGH() ;                       // 发送第9位数据,可忽略
    SCCB_Delay_10us(1) ;
    CLOCK_HIGH() ;
    SCCB_Delay_10us(1) ;
    CLOCK_LOW() ;
    SCCB_Delay_10us(1) ;     
}

/* SCCB设置一个寄存器 */
void Sccb_Send_Data(byte add , byte data)
{
    Sccb_Start() ;                      // 发送开始信号
    Sccb_Send_Byte(OV7620) ;            // 发送ov7620的地址
    Sccb_Send_Byte(add) ;               // 发送子地址(要设置的寄存器)
    Sccb_Send_Byte(data) ;              // 发送数据
    Sccb_End() ;                        // 发送结束信号
    SCCB_Delay_10us(10) ;               // 延时
}
回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
321
QQ
威望
149
贡献
82
兑换币
95
注册时间
2013-5-14
在线时间
45 小时
4#
发表于 2013-8-2 21:43:00 | 只看该作者
turfury00 发表于 2013-5-14 16:56
static void SCCB_Delay_10us(word time)
{
    word i , j ;

用接上啦电阻吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-11-8 23:58 , Processed in 0.047697 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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