⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 camera.c

📁 一个视频信号输入的verilog源代码
💻 C
字号:

#include "system.h"
#include "camera.h"
#include "i2c.h"

void init_cam_normal(void) {
  // Soft reset
  i2c_write(CAM_ADDR, CAM_SWRES, 0xa5);
  
  // First flip image horizontally and vertically
  i2c_write(CAM_ADDR, CAM_BCTR1, 0xc1);
  i2c_write(CAM_ADDR, CAM_BCTR2, 0x01);
  
  // Changes from default settings for normal light
//  i2c_write(CAM_ADDR, CAM_WCTRL, 0x0b);
//  i2c_write(CAM_ADDR, CAM_GOUT, 0x62);
//  i2c_write(CAM_ADDR, CAM_BOUT, 0x6D);
//  i2c_write(CAM_ADDR, CAM_RIN, 0x5B);
//  i2c_write(CAM_ADDR, CAM_GIN, 0x5B);
//  i2c_write(CAM_ADDR, CAM_DCL, 0x00);
//  i2c_write(CAM_ADDR, CAM_DSIM, 0x0C);
//  i2c_write(CAM_ADDR, CAM_DEXT, 0x7F);
  i2c_write(CAM_ADDR, CAM_WBDEL, 0x08);
  i2c_write(CAM_ADDR, CAM_CELL, 0x01);
  i2c_write(CAM_ADDR, CAM_CELH, 0x01);
  i2c_write(CAM_ADDR, CAM_CEUL, 0xE4);
  i2c_write(CAM_ADDR, CAM_CEUH, 0xE4);
  i2c_write(CAM_ADDR, CAM_CECL, 0xC1);
//  i2c_write(CAM_ADDR, CAM_ECTRL, 0x45);
  i2c_write(CAM_ADDR, CAM_ECTRL, 0x55);
  i2c_write(CAM_ADDR, CAM_EXTL, 0x15);
  i2c_write(CAM_ADDR, CAM_EXTLLO, 0x07);
  i2c_write(CAM_ADDR, CAM_EXSE, 0x07);
  i2c_write(CAM_ADDR, CAM_EXSC, 0x04);
  i2c_write(CAM_ADDR, CAM_EXHDC, 0x1D);
  i2c_write(CAM_ADDR, CAM_GCTRL, 0x03);
  i2c_write(CAM_ADDR, CAM_LF1, 0x0C);
  i2c_write(CAM_ADDR, CAM_A11LO, 0xD0);
  i2c_write(CAM_ADDR, CAM_A12LO, 0x91);
  i2c_write(CAM_ADDR, CAM_A13LO, 0x9F);
  i2c_write(CAM_ADDR, CAM_A21LO, 0x51);
  i2c_write(CAM_ADDR, CAM_A22LO, 0x60);
  i2c_write(CAM_ADDR, CAM_A22HI, 0x02);
  i2c_write(CAM_ADDR, CAM_A23LO, 0x4F);
  i2c_write(CAM_ADDR, CAM_A31LO, 0x95);
  i2c_write(CAM_ADDR, CAM_A32LO, 0x85);
  i2c_write(CAM_ADDR, CAM_A33LO, 0xE7);
  i2c_write(CAM_ADDR, CAM_RES_C5, 0x00);
  i2c_write(CAM_ADDR, CAM_CLCTR, 0x00);
  
}

void init_cam_low(void) {
  // Soft reset
  i2c_write(CAM_ADDR, CAM_SWRES, 0xa5);
  
  // First flip image horizontally and vertically
  i2c_write(CAM_ADDR, CAM_BCTR1, 0xc1);
  i2c_write(CAM_ADDR, CAM_BCTR2, 0x01);
  
  // Changes from default settings for low light
  i2c_write(CAM_ADDR, CAM_WCTRL, 0x0b);
  i2c_write(CAM_ADDR, CAM_GOUT, 0x62);
  i2c_write(CAM_ADDR, CAM_BOUT, 0x6D);
  i2c_write(CAM_ADDR, CAM_RIN, 0x5B);
  i2c_write(CAM_ADDR, CAM_GIN, 0x5B);
  i2c_write(CAM_ADDR, CAM_DCL, 0x00);
  i2c_write(CAM_ADDR, CAM_DSIM, 0x0C);
  i2c_write(CAM_ADDR, CAM_DEXT, 0x7F);
  i2c_write(CAM_ADDR, CAM_WBDEL, 0x08);
  i2c_write(CAM_ADDR, CAM_CELL, 0x01);
  i2c_write(CAM_ADDR, CAM_CELH, 0x01);
  i2c_write(CAM_ADDR, CAM_CEUL, 0xE4);
  i2c_write(CAM_ADDR, CAM_CEUH, 0xE4);
  i2c_write(CAM_ADDR, CAM_CECL, 0xf1);
  i2c_write(CAM_ADDR, CAM_ECTRL, 0x41);
  i2c_write(CAM_ADDR, CAM_EXTL, 0x15);
  i2c_write(CAM_ADDR, CAM_EXTLLO, 0x07);
  i2c_write(CAM_ADDR, CAM_EXSE, 0x07);
  i2c_write(CAM_ADDR, CAM_EXSC, 0x04);
  i2c_write(CAM_ADDR, CAM_EXHDC, 0x1D);
//  i2c_write(CAM_ADDR, CAM_EXDM, 0x08);
  i2c_write(CAM_ADDR, CAM_EXDM, 0x04);
  i2c_write(CAM_ADDR, CAM_GCTRL, 0x03);
  i2c_write(CAM_ADDR, CAM_LCTRL, 0x00);
  i2c_write(CAM_ADDR, CAM_LF1, 0x0C);
  i2c_write(CAM_ADDR, CAM_A11LO, 0x00);
  i2c_write(CAM_ADDR, CAM_A12LO, 0x00);
  i2c_write(CAM_ADDR, CAM_A12HI, 0x00);
  i2c_write(CAM_ADDR, CAM_A13LO, 0x00);
  i2c_write(CAM_ADDR, CAM_A13HI, 0x00);
  i2c_write(CAM_ADDR, CAM_A21LO, 0x00);
  i2c_write(CAM_ADDR, CAM_A21HI, 0x00);
  i2c_write(CAM_ADDR, CAM_A22LO, 0x00);
  i2c_write(CAM_ADDR, CAM_A22HI, 0x01);
  i2c_write(CAM_ADDR, CAM_A23LO, 0x00);
  i2c_write(CAM_ADDR, CAM_A23HI, 0x00);
  i2c_write(CAM_ADDR, CAM_A31LO, 0x00);
  i2c_write(CAM_ADDR, CAM_A31HI, 0x00);
  i2c_write(CAM_ADDR, CAM_A32LO, 0x00);
  i2c_write(CAM_ADDR, CAM_A32HI, 0x00);
  i2c_write(CAM_ADDR, CAM_A33LO, 0x00);
  i2c_write(CAM_ADDR, CAM_RES_C5, 0x00);
  i2c_write(CAM_ADDR, CAM_CLCTR, 0x01);
  
}

void init_cam_new_low(void) {
  // Soft reset
  i2c_write(CAM_ADDR, CAM_SWRES, 0xa5);
  
  // First flip image horizontally and vertically
  i2c_write(CAM_ADDR, CAM_BCTR1, 0xc1);
  i2c_write(CAM_ADDR, CAM_BCTR2, 0x01);
  
  // Changes from default settings for low light
  i2c_write(CAM_ADDR, CAM_WCTRL, 0x0b);
  i2c_write(CAM_ADDR, CAM_GOUT, 0x62);
  i2c_write(CAM_ADDR, CAM_BOUT, 0x78);
  i2c_write(CAM_ADDR, CAM_RIN, 0x5B);
  i2c_write(CAM_ADDR, CAM_GIN, 0x5B);
  i2c_write(CAM_ADDR, CAM_DCL, 0x00);
  i2c_write(CAM_ADDR, CAM_DSIM, 0x04);
  i2c_write(CAM_ADDR, CAM_DEXT, 0x7F);
  i2c_write(CAM_ADDR, CAM_WBDEL, 0x08);
  i2c_write(CAM_ADDR, CAM_CELL, 0x01);
  i2c_write(CAM_ADDR, CAM_CELH, 0x01);
  i2c_write(CAM_ADDR, CAM_CEUL, 0xE4);
  i2c_write(CAM_ADDR, CAM_CEUH, 0xE4);
  i2c_write(CAM_ADDR, CAM_CECL, 0xf1);
  i2c_write(CAM_ADDR, CAM_ECTRL, 0x41);
  i2c_write(CAM_ADDR, CAM_EXTL, 0x10);
  i2c_write(CAM_ADDR, CAM_EXTLLO, 0x07);
  i2c_write(CAM_ADDR, CAM_EXSE, 0x07);
  i2c_write(CAM_ADDR, CAM_EXSC, 0x04);
  i2c_write(CAM_ADDR, CAM_EXHDC, 0x1D);
  i2c_write(CAM_ADDR, CAM_EXDM, 0x08);
  i2c_write(CAM_ADDR, CAM_GCTRL, 0x01);
  i2c_write(CAM_ADDR, CAM_LCTRL, 0x04);
  i2c_write(CAM_ADDR, CAM_LF1, 0x0C);
  i2c_write(CAM_ADDR, CAM_A11LO, 0xd0);
  i2c_write(CAM_ADDR, CAM_A11HI, 0x01);
  i2c_write(CAM_ADDR, CAM_A12LO, 0x91);
  i2c_write(CAM_ADDR, CAM_A12HI, 0x0f);
  i2c_write(CAM_ADDR, CAM_A13LO, 0x9f);
  i2c_write(CAM_ADDR, CAM_A13HI, 0x0f);
  i2c_write(CAM_ADDR, CAM_A21LO, 0x51);
  i2c_write(CAM_ADDR, CAM_A21HI, 0x0f);
  i2c_write(CAM_ADDR, CAM_A22LO, 0x60);
  i2c_write(CAM_ADDR, CAM_A22HI, 0x02);
  i2c_write(CAM_ADDR, CAM_A23LO, 0x4f);
  i2c_write(CAM_ADDR, CAM_A23HI, 0x0f);
  i2c_write(CAM_ADDR, CAM_A31LO, 0x95);
  i2c_write(CAM_ADDR, CAM_A31HI, 0x0f);
  i2c_write(CAM_ADDR, CAM_A32LO, 0x85);
  i2c_write(CAM_ADDR, CAM_A32HI, 0x0f);
  i2c_write(CAM_ADDR, CAM_A33LO, 0xe7);
  i2c_write(CAM_ADDR, CAM_RES_C5, 0x00);
  i2c_write(CAM_ADDR, CAM_CLCTR, 0x05);
  
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -