Microchip® Advanced Software Framework

imagesensor_capture_example.c File Reference

OV7740 image sensor capture example.

Copyright (c) 2014-2018 Microchip Technology Inc. and its subsidiaries.

#include "asf.h"
#include "conf_board.h"
#include "conf_clock.h"

Macros

#define _display()   draw_frame_yuv_color_int()
 
#define DEFAULT_MODE_COLORED
 
#define PIO_PCMR_DSIZE_WORD   PIO_PCMR_DSIZE(2)
 
#define TWI_CLK   (400000UL)
 

Functions

static void board_configure_sram (void)
 Configure SMC interface for SRAM. More...
 
static void button_handler (uint32_t ul_id, uint32_t ul_mask)
 Handler for button rising edge interrupt. More...
 
static void capture_init (void)
 Initialize PIO capture and the OV7740 image sensor. More...
 
static uint8_t clip32_to_8 (int32_t i)
 Take a 32 bit variable in parameters and returns a value between 0 and 255. More...
 
static void configure_button (void)
 Configure push button and initialize button_handler interrupt. More...
 
static void display_init (void)
 Intialize LCD display. More...
 
static void draw_frame_yuv_color_int (void)
 Draw LCD in color with integral algorithm. More...
 
static void init_vsync_interrupts (void)
 Intialize Vsync_Handler. More...
 
int main (void)
 Application entry point for image sensor capture example. More...
 
static void pio_capture_init (Pio *p_pio, uint32_t ul_id)
 Initialize PIO capture for the OV7740 image sensor communication. More...
 
static uint8_t pio_capture_to_buffer (Pio *p_pio, uint8_t *uc_buf, uint32_t ul_size)
 Capture OV7740 data to a buffer. More...
 
static void start_capture (void)
 Start picture capture. More...
 
static void vsync_handler (uint32_t ul_id, uint32_t ul_mask)
 Handler for vertical synchronisation using by the OV7740 image sensor. More...
 

Variables

uint8_t * g_p_uc_cap_dest_buf
 
static volatile uint32_t g_ul_push_button_trigger = false
 
static volatile uint32_t g_ul_vsync_flag = false
 
uint16_t g_us_cap_line = (IMAGE_WIDTH * 2)
 
uint16_t g_us_cap_rows = IMAGE_HEIGHT
 

#define _display ( )    draw_frame_yuv_color_int()

Referenced by main().

#define DEFAULT_MODE_COLORED
#define PIO_PCMR_DSIZE_WORD   PIO_PCMR_DSIZE(2)

Referenced by pio_capture_init().

#define TWI_CLK   (400000UL)

Referenced by capture_init().

static void board_configure_sram ( void  )
static

Configure SMC interface for SRAM.

References pmc_enable_periph_clk(), smc_set_cycle_timing(), smc_set_mode(), smc_set_pulse_timing(), and smc_set_setup_timing().

Referenced by main().

static void button_handler ( uint32_t  ul_id,
uint32_t  ul_mask 
)
static

Handler for button rising edge interrupt.

References g_ul_push_button_trigger, and unused.

Referenced by configure_button().

static void capture_init ( void  )
static
static uint8_t clip32_to_8 ( int32_t  i)
inlinestatic

Take a 32 bit variable in parameters and returns a value between 0 and 255.

Parameters
iEnter value .
Returns
i if 0<i<255, 0 if i<0 and 255 if i>255

Referenced by draw_frame_yuv_color_int().

static void configure_button ( void  )
static

Configure push button and initialize button_handler interrupt.

References button_handler(), pio_enable_interrupt(), pio_set_debounce_filter(), and pmc_enable_periph_clk().

Referenced by main().

static void draw_frame_yuv_color_int ( void  )
static
static void init_vsync_interrupts ( void  )
static

Intialize Vsync_Handler.

References vsync_handler().

Referenced by capture_init().

int main ( void  )
static void pio_capture_init ( Pio *  p_pio,
uint32_t  ul_id 
)
static

Initialize PIO capture for the OV7740 image sensor communication.

Parameters
p_pioPIO instance to be configured in PIO capture mode.
ul_idCorresponding PIO ID.

References PIO_PCMR_DSIZE_WORD, and pmc_enable_periph_clk().

Referenced by capture_init().

static uint8_t pio_capture_to_buffer ( Pio *  p_pio,
uint8_t *  uc_buf,
uint32_t  ul_size 
)
static

Capture OV7740 data to a buffer.

Parameters
p_pioPIO instance which will capture data from OV7740 iamge sensor.
p_uc_bufBuffer address where captured data must be stored.
ul_sizeData frame size.

Referenced by start_capture().

static void start_capture ( void  )
static
static void vsync_handler ( uint32_t  ul_id,
uint32_t  ul_mask 
)
static

Handler for vertical synchronisation using by the OV7740 image sensor.

References g_ul_vsync_flag, and unused.

Referenced by init_vsync_interrupts().

uint8_t* g_p_uc_cap_dest_buf
volatile uint32_t g_ul_push_button_trigger = false
static

Referenced by button_handler(), and main().

volatile uint32_t g_ul_vsync_flag = false
static

Referenced by start_capture(), and vsync_handler().

uint16_t g_us_cap_line = (IMAGE_WIDTH * 2)

Referenced by start_capture().

uint16_t g_us_cap_rows = IMAGE_HEIGHT

Referenced by start_capture().