智能车制作
标题:
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