s数字摄像头采集之深入探讨(续3)
http://shop36076594.taobao.com/ 摄像头 开发板 仿真器 无线 光电编码器专营 智能车配件
作者:whut_wj
http://shop36076594.taobao.com/ 摄像头 开发板 仿真器 无线 光电编码器专营 智能车配件
作者:whut_wj
OV7620 / OV6620采集之深入探讨(续 3)
author :whut_wj
例子:通过 GPIO改 OV6620的 SCCB,关闭自动增...
http://shop36076594.taobao.com/ 摄像头 开发板 仿真器 无线 光电编码器专营 智能车配件
作者:whut_wj
http://shop36076594.taobao.com/ 摄像头 开发板 仿真器 无线 光电编码器专营 智能车配件
作者:whut_wj
OV7620 / OV6620采集之深入探讨(续 3)
author :whut_wj
例子:通过 GPIO改 OV6620的 SCCB,关闭自动增益功能
//************************************************************************
说明,程序在 DG128 XS128平台上测试好用,如果有问
,请检查摄像头质量和硬件平台
的问题。SDA和 SCL管脚要接上拉。SCL 为 PORTA_BIT0,SDA 为 PORTA_BIT1
//************************************************************************
#define SCL PORTA_BIT0
#define SDA PORTA_BIT1
#define SDA_DR DDRA_BIT1
#define SCL_DR DDRA_BIT0
#define OUT 1
#define IN 0
//*****************************************************************************
void nops(void)
{
_asm nop; _asm nop; _asm nop; _asm nop;
}
//****************************************************************************
void nopss(void)
{
nops();nops();
}
//****************************************************************************
void hnops(void)
{
_asm nop; _asm nop;
}
//*****************************************************************************
void I2cWait(void) //file://延/时,I2c大约 30k/s
{
unsigned char i;
for(i=0;i<10;i++)
{
_asm nop;
}
}
//****************************************************************************
void I2cStart(void) // file://起/始信号
http://shop36076594.taobao.com/ 摄像头 开发板 仿真器 无线 光电编码器专营 智能车配件
作者:whut_wj
http://shop36076594.taobao.com/ 摄像头 开发板 仿真器 无线 光电编码器专营 智能车配件
作者:whut_wj
{
SDA_DR=OUT;
SDA = 1;
SCL = 1;
I2cWait();
SDA = 0;
I2cWait();
SCL = 0;
}
//****************************************************************************
void I2cStop(void) //file://停/止信号
{
SDA_DR=OUT;
SDA = 0;
I2cWait();
SCL = 1;
I2cWait();
SDA = 1;
I2cWait();
}
//****************************************************************************
void SendAck(byte ack) // file://送/确认信号到 slave
{
SDA_DR=OUT;
SDA = ack;
SCL = 1;
I2cWait();
SCL = 0;
}
//****************************************************************************
byte I2cSendByte(unsigned char bytedata) //file://送/一字节数据到 slave
{
unsigned char i;
byte ack;
SDA_DR=OUT;
for(i=0;i<8;i++)
{ if(bytedata & 0x80)
SDA = 1;
else
SDA = 0;
bytedata <<= 1;
I2cWait();
SCL = 1;
http://shop36076594.taobao.com/ 摄像头 开发板 仿真器 无线 光电编码器专营 智能车配件
作者:whut_wj
http://shop36076594.taobao.com/ 摄像头 开发板 仿真器 无线 光电编码器专营 智能车配件
作者:whut_wj
I2cWait();
SCL = 0;
I2cWait();
}
SDA = 1;
SDA_DR=IN;
I2cWait();
SCL = 1;
I2cWait();
ack = SDA; // file://接/收确认信号:1,没收到应答;0,收到应答
SCL = 0;
I2cWait();
return ack;
}
//****************************************************************************
unsigned char I2cReceiveByte(void) //file://接/收 1字节数据
{
unsigned char i;
unsigned char bytedata = 0;
SDA_DR=IN;
for(i=0;i<8;i++)
{
SCL = 1;
I2cWait();
bytedata <<= 1;
if(SDA)
{
bytedata |= 0x01;
}
SCL = 0;
I2cWait();
}
return bytedata;
}
//****************************************************************************
unsigned char I2cByteRead(unsigned char device,unsigned char address)
{ //file://从/slave接收 1字节数据
unsigned char bytedata;
I2cStart();
I2cSendByte(device);
//I2cSendByte(0);
I2cSendByte(address);
I2cStart();
http://shop36076594.taobao.com/ 摄像头 开发板 仿真器 无线 光电编码器专营 智能车配件
作者:whut_wj
http://shop36076594.taobao.com/ 摄像头 开发板 仿真器 无线 光电编码器专营 智能车配件
作者:whut_wj
I2cSendByte(device|0x01);
bytedata = I2cReceiveByte(); // add
SendAck(0); // add
bytedata = I2cReceiveByte();
SendAck(1);
I2cStop();
return bytedata;
}
//****************************************************************************
void I2cByteWrite(unsigned char device,unsigned char address,unsigned char bytedata)
{ //file://将/数据写入指定 slave的地址内
unsigned char i;
byte ack;
for(i=0;i<20;i++)
{
I2cStart();
ack = I2cSendByte(device);
if(ack==1)
{
I2cStop();
continue;
}
ack = I2cSendByte(address);
if(ack==1)
{
I2cStop();
continue;
}
ack = I2cSendByte(bytedata);
if(ack==1)
{
I2cStop();
continue;
}
I2cStop();
if(ack==0) break; //file://正/常,跳出循环
}
}
//************************************************************************
unsigned int data;
void main(void)
{
http://shop36076594.taobao.com/ 摄像头 开发板 仿真器 无线 光电编码器专营 智能车配件
作者:whut_wj
http://shop36076594.taobao.com/ 摄像头 开发板 仿真器 无线 光电编码器专营 智能车配件
作者:whut_wj
EnableInterrupts;
SDA_DR=1;
SCL_DR=1;
DDRB=0XFF;
I2cByteWrite(0xC0,0x12,0x04);
I2cWait();
for(;;) {} /* wait forever */
}
//************************************************************************
说明,程序在 DG128 XS128平台上测试好用,如果有问题,请检查摄像头质量和硬件平台
的问题。SDA和 SCL管脚要接上拉。
//************************************************************************
http://blog.eccn.com/u/146002/index.htm 有关后续的讨论和纠错请到博客上发贴,谢谢。
本文档为【s数字摄像头采集之深入探讨(续3)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。