93 #include <pins_arduino.h> 96 #define cbi(reg, bitmask) *reg &= ~bitmask 97 #define sbi(reg, bitmask) *reg |= bitmask 98 #define pulse_high(reg, bitmask) sbi(reg, bitmask); cbi(reg, bitmask); 99 #define pulse_low(reg, bitmask) cbi(reg, bitmask); sbi(reg, bitmask); 101 #define cport(port, data) port &= data 102 #define sport(port, data) port |= data 104 #define swap(type, i, j) {type t = i; i = j; j = t;} 106 #define fontbyte(x) pgm_read_byte(&cfont.font[x]) 108 #define regtype volatile uint8_t 109 #define regsize uint8_t 115 #define cbi(reg, bitmask) *reg &= ~bitmask 116 #define sbi(reg, bitmask) *reg |= bitmask 117 #define pulse_high(reg, bitmask) sbi(reg, bitmask); cbi(reg, bitmask); 118 #define pulse_low(reg, bitmask) cbi(reg, bitmask); sbi(reg, bitmask); 120 #define cport(port, data) port &= data 121 #define sport(port, data) port |= data 123 #define swap(type, i, j) {type t = i; i = j; j = t;} 125 #define fontbyte(x) cfont.font[x] 127 #define regtype volatile uint32_t 128 #define regsize uint32_t 132 #define pgm_read_byte(x) (*((char *)x)) 134 #define pgm_read_word(x) ( ((*((unsigned char *)x + 1)) << 8) + (*((unsigned char *)x))) 135 #define pgm_read_byte_near(x) (*((char *)x)) 136 #define pgm_read_byte_far(x) (*((char *)x)) 139 #define pgm_read_word_near(x) ( ((*((unsigned char *)x + 1)) << 8) + (*((unsigned char *)x))) 140 #define pgm_read_word_far(x) ( ((*((unsigned char *)x + 1)) << 8) + (*((unsigned char *)x)))) 150 #if defined(ESP8266) || defined(__ESP8266_EX__) 152 #define cbi(reg, bitmask) digitalWrite(bitmask, LOW) 153 #define sbi(reg, bitmask) digitalWrite(bitmask, HIGH) 154 #define pulse_high(reg, bitmask) sbi(reg, bitmask); cbi(reg, bitmask); 155 #define pulse_low(reg, bitmask) cbi(reg, bitmask); sbi(reg, bitmask); 157 #define cport(port, data) port &= data 158 #define sport(port, data) port |= data 160 #define swap(type, i, j) {type t = i; i = j; j = t;} 162 #define fontbyte(x) cfont.font[x] 164 #define regtype volatile uint32_t 165 #define regsize uint32_t 193 #define OV2640_160x120 0 //160x120 194 #define OV2640_176x144 1 //176x144 195 #define OV2640_320x240 2 //320x240 196 #define OV2640_352x288 3 //352x288 197 #define OV2640_640x480 4 //640x480 198 #define OV2640_800x600 5 //800x600 199 #define OV2640_1024x768 6 //1024x768 200 #define OV2640_1280x1024 7 //1280x1024 201 #define OV2640_1600x1200 8 //1600x1200 203 #define OV5642_320x240 1 //320x240 204 #define OV5642_640x480 2 //640x480 205 #define OV5642_1280x720 3 //1280x720 206 #define OV5642_1920x1080 4 //1920x1080 207 #define OV5642_2048x1563 5 //2048x1563 208 #define OV5642_2592x1944 6 //2592x1944 213 #define I2C_ADDR_8BIT 0 214 #define I2C_ADDR_16BIT 1 215 #define I2C_REG_8BIT 0 216 #define I2C_REG_16BIT 1 217 #define I2C_DAT_8BIT 0 218 #define I2C_DAT_16BIT 1 222 #define SENSOR_REG_TERM_8BIT 0xFF 223 #define SENSOR_REG_TERM_16BIT 0xFFFF 225 #define SENSOR_VAL_TERM_8BIT 0xFF 226 #define SENSOR_VAL_TERM_16BIT 0xFFFF 231 #define RWBIT 0x80 //READ AND WRITE BIT IS BIT[7] 233 #define ARDUCHIP_TEST1 0x00 //TEST register 234 #define ARDUCHIP_TEST2 0x01 //TEST register 236 #define ARDUCHIP_FRAMES 0x01 //Bit[2:0]Number of frames to be captured 238 #define ARDUCHIP_MODE 0x02 //Mode register 239 #define MCU2LCD_MODE 0x00 240 #define CAM2LCD_MODE 0x01 241 #define LCD2MCU_MODE 0x02 243 #define ARDUCHIP_TIM 0x03 //Timming control 244 #define HREF_LEVEL_MASK 0x01 //0 = High active , 1 = Low active 245 #define VSYNC_LEVEL_MASK 0x02 //0 = High active , 1 = Low active 246 #define LCD_BKEN_MASK 0x04 //0 = Enable, 1 = Disable 247 #define DELAY_MASK 0x08 //0 = no delay, 1 = delay one clock 248 #define MODE_MASK 0x10 //0 = LCD mode, 1 = FIFO mode 249 #define FIFO_PWRDN_MASK 0x20 //0 = Normal operation, 1 = FIFO power down 250 #define LOW_POWER_MODE 0x40 //0 = Normal mode, 1 = Low power mode 252 #define ARDUCHIP_FIFO 0x04 //FIFO and I2C control 253 #define FIFO_CLEAR_MASK 0x01 254 #define FIFO_START_MASK 0x02 255 #define FIFO_RDPTR_RST_MASK 0x10 256 #define FIFO_WRPTR_RST_MASK 0x20 258 #define ARDUCHIP_GPIO 0x06 //GPIO Write Register 259 #define GPIO_RESET_MASK 0x01 //0 = default state, 1 = Sensor reset IO value 260 #define GPIO_PWDN_MASK 0x02 //0 = Sensor power down IO value, 1 = Sensor power enable IO value 262 #define BURST_FIFO_READ 0x3C //Burst FIFO read operation 263 #define SINGLE_FIFO_READ 0x3D //Single FIFO read operation 265 #define ARDUCHIP_REV 0x40 //ArduCHIP revision 266 #define VER_LOW_MASK 0x3F 267 #define VER_HIGH_MASK 0xC0 269 #define ARDUCHIP_TRIG 0x41 //Trigger source 270 #define VSYNC_MASK 0x01 271 #define SHUTTER_MASK 0x02 272 #define CAP_DONE_MASK 0x08 274 #define FIFO_SIZE1 0x42 //Camera write FIFO size[7:0] for burst to read 275 #define FIFO_SIZE2 0x43 //Camera write FIFO size[15:8] 276 #define FIFO_SIZE3 0x44 //Camera write FIFO size[18:16] 300 void flush_fifo(
void);
301 void start_capture(
void);
302 void clear_fifo_flag(
void);
303 uint8_t read_fifo(
void);
305 uint8_t read_reg(uint8_t addr);
306 void write_reg(uint8_t addr, uint8_t data);
308 uint32_t read_fifo_length(
void);
309 void set_fifo_burst(
void);
310 void set_bit(uint8_t addr, uint8_t bit);
311 void clear_bit(uint8_t addr, uint8_t bit);
312 uint8_t get_bit(uint8_t addr, uint8_t bit);
313 void set_mode(uint8_t mode);
316 int wrSensorRegs8_8(
const struct sensor_reg*);
317 int wrSensorRegs8_16(
const struct sensor_reg*);
318 int wrSensorRegs16_8(
const struct sensor_reg*);
319 int wrSensorRegs16_16(
const struct sensor_reg*);
321 byte wrSensorReg(
int regID,
int regDat);
322 byte wrSensorReg8_8(
int regID,
int regDat);
323 byte wrSensorReg8_16(
int regID,
int regDat);
324 byte wrSensorReg16_8(
int regID,
int regDat);
325 byte wrSensorReg16_16(
int regID,
int regDat);
327 byte rdSensorReg8_8(uint8_t regID, uint8_t* regDat);
328 byte rdSensorReg16_8(uint16_t regID, uint8_t* regDat);
329 byte rdSensorReg8_16(uint8_t regID, uint16_t* regDat);
330 byte rdSensorReg16_16(uint16_t regID, uint16_t* regDat);
332 void OV2640_set_JPEG_size(uint8_t size);
333 void OV5642_set_JPEG_size(uint8_t size);
334 void set_format(byte fmt);
337 int bus_write(
int address,
int value);
338 uint8_t bus_read(
int address);
Definition: ArduCAM.h:285
Definition: ArduCAM.h:290