为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

s数字摄像头采集之深入探讨(续3)

2010-12-28 5页 pdf 222KB 15阅读

用户头像

is_486660

暂无简介

举报
s数字摄像头采集之深入探讨(续3) http://shop36076594.taobao.com/ 摄像头 开发板 仿真器 无线 光电编码器专营 智能车配件 作者:whut_wj http://shop36076594.taobao.com/ 摄像头 开发板 仿真器 无线 光电编码器专营 智能车配件 作者:whut_wj OV7620 / OV6620采集之深入探讨(续 3) author :whut_wj 例子:通过 GPIO改 OV6620的 SCCB,关闭自动增...
s数字摄像头采集之深入探讨(续3)
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,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索