智能车制作

标题: ov7620 sccb初始化怎么写啊 [打印本页]

作者: wangde    时间: 2013-5-5 11:30
标题: ov7620 sccb初始化怎么写啊
不行了。。。寄存器太多了,求大虾指导写个初始化函数学习下。

作者: 夜之音    时间: 2013-5-5 13:11
多个毛啊?两句话配置一个寄存器,一个地址一个数据。无需初始化
作者: turfury00    时间: 2013-5-14 16:56
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) ;               // 延时
}
作者: hfddfgvfddf    时间: 2013-8-2 21:43
turfury00 发表于 2013-5-14 16:56
static void SCCB_Delay_10us(word time)
{
    word i , j ;

用接上啦电阻吗?





欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2