void setup() { uint8_t vid,pid; uint8_t temp; wiring_init(); arducam(smOV5642,CAM1_CS,-1,-1,-1); // Check if the ArduCAM SPI bus is OK arducam_write_reg(ARDUCHIP_TEST1, 0x55, CAM1_CS); temp = arducam_read_reg(ARDUCHIP_TEST1, CAM1_CS); //printf("temp=%x\n",temp); // debug if(temp != 0x55) { printf("SPI interface error!\n"); //exit(EXIT_FAILURE); } else{ printf("SPI interface OK!\n"); } // Change MCU mode arducam_write_reg(ARDUCHIP_MODE, 0x00, CAM1_CS); // Check if the camera module type is OV5642 arducam_i2c_word_read(OV5642_CHIPID_HIGH, &vid); arducam_i2c_word_read(OV5642_CHIPID_LOW, &pid); if((vid != 0x56) || (pid != 0x42)) { printf("Can't find OV5642 module!\n"); exit(EXIT_FAILURE); } else { printf("OV5642 detected\n"); } }
void setup() { uint8_t vid,pid; uint8_t temp; UTFT(); arducam(smOV5642); printf("ArduCAM Start!\n"); //Check if the ArduCAM SPI bus is OK arducam_write_reg(ARDUCHIP_TEST1, 0x55); temp = arducam_read_reg(ARDUCHIP_TEST1); if(temp != 0x55) { printf("SPI interface Error!\n"); exit(EXIT_FAILURE); } //Change MCU mode arducam_write_reg(ARDUCHIP_MODE, 0x00); InitLCD(); //Check if the camera module type is OV5642 arducam_i2c_word_read(OV5642_CHIPID_HIGH, &vid); arducam_i2c_word_read(OV5642_CHIPID_LOW, &pid); if((vid != 0x56) || (pid != 0x42)) { printf("Can't find OV5642 module!\n"); exit(EXIT_FAILURE); } else { printf("OV5642 detected\n"); } //Change to BMP capture mode and initialize the OV5642 module arducam_set_format(fmtBMP); arducam_init(); }
void arducam_init() { switch(myCAM.sensor_model) { #ifdef OV7660_CAM case smOV7660: { arducam_i2c_write(0x12, 0x80); arducam_delay_ms(100); (void) arducam_i2c_write_regs(OV7660_QVGA); break; } #endif #ifdef OV7725_CAM case smOV7725: { uint8_t reg_val; arducam_i2c_write(0x12, 0x80); arducam_delay_ms(100); (void) arducam_i2c_write_regs(OV7725_QVGA); arducam_i2c_read(0x15,®_val); arducam_i2c_write(0x15, (reg_val | 0x02)); break; } #endif #ifdef OV7670_CAM case smOV7670: { arducam_i2c_write(0x12, 0x80); arducam_delay_ms(100); (void) arducam_i2c_write_regs(OV7670_QVGA); break; } #endif #ifdef OV7675_CAM case smOV7675: { arducam_i2c_write(0x12, 0x80); arducam_delay_ms(100); (void) arducam_i2c_write_regs(OV7675_QVGA); break; } #endif #ifdef MT9D111_CAM case smMT9D111: { //arducam_i2c_write_regs16(MT9D111_QVGA_3fps); arducam_i2c_write_regs16(MT9D111_QVGA_15fps); //arducam_i2c_write_regs16(MT9D111_QVGA_30fps); arducam_delay_ms(1000); arducam_i2c_write16(0x97, 0x0020); arducam_i2c_write16(0xf0, 0x00); arducam_i2c_write16(0x21, 0x8403); //Mirror Column arducam_i2c_write16(0xC6, 0xA103);//SEQ_CMD arducam_i2c_write16(0xC8, 0x0005); //SEQ_CMD break; } #endif #ifdef OV5642_CAM case smOV5642: { uint8_t reg_val; arducam_i2c_word_write(0x3008, 0x80); arducam_delay_ms(100); if(myCAM.m_fmt == fmtJPEG) { arducam_i2c_write_word_regs(OV5642_1080P_Video_setting); arducam_i2c_word_read(0x3818,®_val); arducam_i2c_word_write(0x3818, (reg_val | 0x20) & 0xBf); arducam_i2c_word_read(0x3621,®_val); arducam_i2c_word_write(0x3621, reg_val | 0x20); } else { arducam_i2c_write_word_regs(OV5642_RGB_QVGA); arducam_i2c_word_read(0x3818,®_val); arducam_i2c_word_write(0x3818, (reg_val | 0x60) & 0xff); arducam_i2c_word_read(0x3621,®_val); arducam_i2c_word_write(0x3621, reg_val & 0xdf); } break; } #endif #ifdef OV3640_CAM case smOV3640: { (void) arducam_i2c_write_word_regs(OV3640_QVGA); break; } #endif #ifdef OV2640_CAM case smOV2640: { arducam_i2c_write(0xff, 0x01); arducam_i2c_write(0x12, 0x80); arducam_delay_ms(100); if(myCAM.m_fmt == fmtJPEG) { arducam_i2c_write_regs(OV2640_JPEG_INIT); arducam_i2c_write_regs(OV2640_YUV422); arducam_i2c_write_regs(OV2640_JPEG); arducam_i2c_write(0xff, 0x01); arducam_i2c_write(0x15, 0x00); arducam_i2c_write_regs(OV2640_320x240_JPEG); //arducam_i2c_write(0xff, 0x00); //arducam_i2c_write(0x44, 0x32); } else { arducam_i2c_write_regs(OV2640_QVGA); } break; } #endif case smOV9655: { break; } case smMT9M112: { break; } default: break; } }