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();
}
Exemple #3
0
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,&reg_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,&reg_val);
				arducam_i2c_word_write(0x3818, (reg_val | 0x20) & 0xBf);
				arducam_i2c_word_read(0x3621,&reg_val);
				arducam_i2c_word_write(0x3621, reg_val | 0x20);
			}
			else
			{
				arducam_i2c_write_word_regs(OV5642_RGB_QVGA);
				arducam_i2c_word_read(0x3818,&reg_val);
				arducam_i2c_word_write(0x3818, (reg_val | 0x60) & 0xff);
				arducam_i2c_word_read(0x3621,&reg_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;
	}
}