📄 camera.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 + -