HPM SDK
HPMicro Software Development Kit
CAM driver APIs

CAM driver APIs. More...

Data Structures

struct  cam_config_t
 CAM config. More...
 

Macros

#define CAM_DATA_STORE_MODE_NORMAL   (0U)
 CAM data store mode. More...
 
#define CAM_DATA_STORE_MODE_Y_UV_PLANES   (CAM_CR1_STORAGE_MODE_SET(1))
 
#define CAM_DATA_STORE_MODE_Y_ONLY   (CAM_CR1_STORAGE_MODE_SET(2))
 
#define CAM_DATA_STORE_MODE_BINARY   (CAM_CR1_STORAGE_MODE_SET(3))
 
#define CAM_SENSOR_BITWIDTH_8BITS   (CAM_CR1_SENSOR_BIT_WIDTH_SET(0))
 CAM sensor bitwidth. More...
 
#define CAM_SENSOR_BITWIDTH_10BITS   (CAM_CR1_SENSOR_BIT_WIDTH_SET(1))
 
#define CAM_SENSOR_BITWIDTH_24BITS   (CAM_CR1_SENSOR_BIT_WIDTH_SET(3))
 
#define CAM_COLOR_FORMAT_RGB888   (CAM_CR1_COLOR_FORMATS_SET(2))
 CAM input color format. More...
 
#define CAM_COLOR_FORMAT_RGB565   (CAM_CR1_COLOR_FORMATS_SET(4))
 
#define CAM_COLOR_FORMAT_RGB555   (CAM_CR1_COLOR_FORMATS_SET(6))
 
#define CAM_COLOR_FORMAT_YCBCR422_YUV422   (CAM_CR1_COLOR_FORMATS_SET(7))
 
#define CAM_COLOR_FORMAT_YUV444   (CAM_CR1_COLOR_FORMATS_SET(8))
 
#define CAM_COLOR_FORMAT_RAW8   (CAM_CR1_COLOR_FORMATS_SET(0xf))
 
#define CAM_COLOR_FORMAT_UNSUPPORTED   (1)
 

Enumerations

enum  cam_irq_mask_t {
  cam_irq_unsupported_configuration = CAM_INT_EN_ERR_CL_BWID_CFG_INT_EN_MASK , cam_irq_hist_calculation_done = CAM_INT_EN_HIST_DONE_INT_EN_MASK , cam_irq_hresponse_error = CAM_INT_EN_HRESP_ERR_EN_MASK , cam_irq_end_of_frame = CAM_INT_EN_EOF_INT_EN_MASK ,
  cam_irq_rx_fifo_overrun = CAM_INT_EN_RF_OR_INTEN_MASK , cam_irq_fb2_dma_transfer_done = CAM_INT_EN_FB2_DMA_DONE_INTEN_MASK , cam_irq_fb1_dma_transfer_done = CAM_INT_EN_FB1_DMA_DONE_INTEN_MASK , cam_irq_start_of_frame = CAM_INT_EN_SOF_INT_EN_MASK
}
 CAM IRQ mask. More...
 
enum  cam_status_mask_t {
  cam_status_unsupported_configuration = CAM_STA_ERR_CL_BWID_CFG_MASK , cam_status_hist_calculation_done = CAM_STA_HIST_DONE_MASK , cam_status_rx_fifo_overrun = CAM_STA_RF_OR_INT_MASK , cam_status_fb2_dma_transfer_done = CAM_STA_DMA_TSF_DONE_FB2_MASK ,
  cam_status_fb1_dma_transfer_done = CAM_STA_DMA_TSF_DONE_FB1_MASK , cam_status_end_of_frame = CAM_STA_EOF_INT_MASK , cam_status_start_of_frame = CAM_STA_SOF_INT_MASK , cam_status_hresponse_error = CAM_STA_HRESP_ERR_INT_MASK
}
 CAM status mask. More...
 
enum  cam_input_pixel_byte_order_t {
  cam_input_pixel_yuv444 = 0 , cam_input_pixel_yvu444 = 1 , cam_input_pixel_uyv444 = 2 , cam_input_pixel_vyu444 = 3 ,
  cam_input_pixel_uvy444 = 4 , cam_input_pixel_vuy444 = 5 , cam_input_pixel_yuyv422 = 0 , cam_input_pixel_yvyu422 = 1 ,
  cam_input_pixel_uyvy422 = 2 , cam_input_pixel_vyuy422 = 3 , cam_input_pixel_rgb565 = 0 , cam_input_pixel_bgr565 = 1 ,
  cam_input_pixel_gbr888 = 0 , cam_input_pixel_grb888 = 1 , cam_input_pixel_bgr888 = 2 , cam_input_pixel_rgb888 = 3 ,
  cam_input_pixel_brg888 = 4 , cam_input_pixel_rbg888 = 5
}
 cam input pixel byte order More...
 

Functions

static uint32_t cam_get_pixel_format (display_pixel_format_t format)
 cam get pixel format value More...
 
static void cam_set_color_key (CAM_Type *ptr, uint32_t high, uint32_t low)
 CAM set high and low limits of color key. More...
 
void cam_get_default_config (CAM_Type *ptr, cam_config_t *config, display_pixel_format_t pixel_format)
 CAM get default config. More...
 
hpm_stat_t cam_init (CAM_Type *ptr, cam_config_t *config)
 CAM init. More...
 
void cam_start (CAM_Type *ptr)
 CAM start. More...
 
void cam_stop (CAM_Type *ptr)
 CAM stop. More...
 
static void cam_update_buffer (CAM_Type *ptr, uint32_t buffer)
 CAM update DMASA_FB1 buffer. More...
 
static void cam_update_buffer2 (CAM_Type *ptr, uint32_t buffer)
 CAM update DMASA_FB2 buffer. More...
 
static void cam_enable_binary_output (CAM_Type *ptr)
 CAM enable binary output. More...
 
static void cam_disable_binary_output (CAM_Type *ptr)
 CAM disable binary output. More...
 
static void cam_set_binary_threshold (CAM_Type *ptr, uint8_t threshold)
 CAM set binary threshold. More...
 
static void cam_enable_argb8888_output (CAM_Type *ptr)
 CAM enable argb8888 output. More...
 
static void cam_disable_argb8888_output (CAM_Type *ptr)
 CAM disable argb8888 output. More...
 
static void cam_set_input_pixel_byte_order (CAM_Type *ptr, cam_input_pixel_byte_order_t order)
 CAM set input pixel byte order. More...
 
static void cam_enable_irq (CAM_Type *ptr, cam_irq_mask_t irq_mask)
 CAM enable irq. More...
 
static void cam_disable_irq (CAM_Type *ptr, cam_irq_mask_t irq_mask)
 CAM disable irq. More...
 
static bool cam_check_status (CAM_Type *ptr, cam_status_mask_t sta_mask)
 Check CAM status according to the given status mask. More...
 
static void cam_clear_status (CAM_Type *ptr, cam_status_mask_t sta_mask)
 Clear CAM status according to the given status mask. More...
 
void cam_stop_safely (CAM_Type *ptr)
 CAM safety stop. More...
 

Detailed Description

CAM driver APIs.

Macro Definition Documentation

◆ CAM_COLOR_FORMAT_RAW8

#define CAM_COLOR_FORMAT_RAW8   (CAM_CR1_COLOR_FORMATS_SET(0xf))

◆ CAM_COLOR_FORMAT_RGB555

#define CAM_COLOR_FORMAT_RGB555   (CAM_CR1_COLOR_FORMATS_SET(6))

◆ CAM_COLOR_FORMAT_RGB565

#define CAM_COLOR_FORMAT_RGB565   (CAM_CR1_COLOR_FORMATS_SET(4))

◆ CAM_COLOR_FORMAT_RGB888

#define CAM_COLOR_FORMAT_RGB888   (CAM_CR1_COLOR_FORMATS_SET(2))

#include <drivers/inc/hpm_cam_drv.h>

CAM input color format.

◆ CAM_COLOR_FORMAT_UNSUPPORTED

#define CAM_COLOR_FORMAT_UNSUPPORTED   (1)

◆ CAM_COLOR_FORMAT_YCBCR422_YUV422

#define CAM_COLOR_FORMAT_YCBCR422_YUV422   (CAM_CR1_COLOR_FORMATS_SET(7))

◆ CAM_COLOR_FORMAT_YUV444

#define CAM_COLOR_FORMAT_YUV444   (CAM_CR1_COLOR_FORMATS_SET(8))

◆ CAM_DATA_STORE_MODE_BINARY

#define CAM_DATA_STORE_MODE_BINARY   (CAM_CR1_STORAGE_MODE_SET(3))

◆ CAM_DATA_STORE_MODE_NORMAL

#define CAM_DATA_STORE_MODE_NORMAL   (0U)

#include <drivers/inc/hpm_cam_drv.h>

CAM data store mode.

◆ CAM_DATA_STORE_MODE_Y_ONLY

#define CAM_DATA_STORE_MODE_Y_ONLY   (CAM_CR1_STORAGE_MODE_SET(2))

◆ CAM_DATA_STORE_MODE_Y_UV_PLANES

#define CAM_DATA_STORE_MODE_Y_UV_PLANES   (CAM_CR1_STORAGE_MODE_SET(1))

◆ CAM_SENSOR_BITWIDTH_10BITS

#define CAM_SENSOR_BITWIDTH_10BITS   (CAM_CR1_SENSOR_BIT_WIDTH_SET(1))

◆ CAM_SENSOR_BITWIDTH_24BITS

#define CAM_SENSOR_BITWIDTH_24BITS   (CAM_CR1_SENSOR_BIT_WIDTH_SET(3))

◆ CAM_SENSOR_BITWIDTH_8BITS

#define CAM_SENSOR_BITWIDTH_8BITS   (CAM_CR1_SENSOR_BIT_WIDTH_SET(0))

#include <drivers/inc/hpm_cam_drv.h>

CAM sensor bitwidth.

Enumeration Type Documentation

◆ cam_input_pixel_byte_order_t

#include <drivers/inc/hpm_cam_drv.h>

cam input pixel byte order

Enumerator
cam_input_pixel_yuv444 
cam_input_pixel_yvu444 
cam_input_pixel_uyv444 
cam_input_pixel_vyu444 
cam_input_pixel_uvy444 
cam_input_pixel_vuy444 
cam_input_pixel_yuyv422 
cam_input_pixel_yvyu422 
cam_input_pixel_uyvy422 
cam_input_pixel_vyuy422 
cam_input_pixel_rgb565 
cam_input_pixel_bgr565 
cam_input_pixel_gbr888 
cam_input_pixel_grb888 
cam_input_pixel_bgr888 
cam_input_pixel_rgb888 
cam_input_pixel_brg888 
cam_input_pixel_rbg888 

◆ cam_irq_mask_t

#include <drivers/inc/hpm_cam_drv.h>

CAM IRQ mask.

Enumerator
cam_irq_unsupported_configuration 
cam_irq_hist_calculation_done 
cam_irq_hresponse_error 
cam_irq_end_of_frame 
cam_irq_rx_fifo_overrun 
cam_irq_fb2_dma_transfer_done 
cam_irq_fb1_dma_transfer_done 
cam_irq_start_of_frame 

◆ cam_status_mask_t

#include <drivers/inc/hpm_cam_drv.h>

CAM status mask.

Enumerator
cam_status_unsupported_configuration 
cam_status_hist_calculation_done 
cam_status_rx_fifo_overrun 
cam_status_fb2_dma_transfer_done 
cam_status_fb1_dma_transfer_done 
cam_status_end_of_frame 
cam_status_start_of_frame 
cam_status_hresponse_error 

Function Documentation

◆ cam_check_status()

static bool cam_check_status ( CAM_Type ptr,
cam_status_mask_t  sta_mask 
)
inlinestatic

#include <drivers/inc/hpm_cam_drv.h>

Check CAM status according to the given status mask.

Parameters
[in]ptrCAM base address
sta_masksta_mask refer to cam_status_mask_t
Return values
trueif any bit in given mask is set
falseif none of any bit in given mask is set

◆ cam_clear_status()

static void cam_clear_status ( CAM_Type ptr,
cam_status_mask_t  sta_mask 
)
inlinestatic

#include <drivers/inc/hpm_cam_drv.h>

Clear CAM status according to the given status mask.

Parameters
[in]ptrCAM base address
sta_masksta_mask refer to cam_status_mask_t

◆ cam_disable_argb8888_output()

static void cam_disable_argb8888_output ( CAM_Type ptr)
inlinestatic

#include <drivers/inc/hpm_cam_drv.h>

CAM disable argb8888 output.

Parameters
[in]ptrCAM base address

◆ cam_disable_binary_output()

static void cam_disable_binary_output ( CAM_Type ptr)
inlinestatic

#include <drivers/inc/hpm_cam_drv.h>

CAM disable binary output.

Parameters
[in]ptrCAM base address

◆ cam_disable_irq()

static void cam_disable_irq ( CAM_Type ptr,
cam_irq_mask_t  irq_mask 
)
inlinestatic

#include <drivers/inc/hpm_cam_drv.h>

CAM disable irq.

Parameters
[in]ptrCAM base address
[in]irq_maskirq mask value

◆ cam_enable_argb8888_output()

static void cam_enable_argb8888_output ( CAM_Type ptr)
inlinestatic

#include <drivers/inc/hpm_cam_drv.h>

CAM enable argb8888 output.

This function is used to enable CAM argb8888 pixel output after the CAM is initialized by the cam_init and input pixel byte order is configured by the cam_set_input_pixel_byte_order.

Parameters
[in]ptrCAM base address

◆ cam_enable_binary_output()

static void cam_enable_binary_output ( CAM_Type ptr)
inlinestatic

#include <drivers/inc/hpm_cam_drv.h>

CAM enable binary output.

This function is used to enable CAM binary output after the CAM is initialized by the cam_init.

Parameters
[in]ptrCAM base address

◆ cam_enable_irq()

static void cam_enable_irq ( CAM_Type ptr,
cam_irq_mask_t  irq_mask 
)
inlinestatic

#include <drivers/inc/hpm_cam_drv.h>

CAM enable irq.

Parameters
[in]ptrCAM base address
[in]irq_maskirq mask value

◆ cam_get_default_config()

void cam_get_default_config ( CAM_Type ptr,
cam_config_t config,
display_pixel_format_t  pixel_format 
)

#include <drivers/inc/hpm_cam_drv.h>

CAM get default config.

Parameters
[in]ptrCAM base address
[out]configcam_config_t
[in]pixel_formatdisplay_pixel_format_t

◆ cam_get_pixel_format()

static uint32_t cam_get_pixel_format ( display_pixel_format_t  format)
inlinestatic

#include <drivers/inc/hpm_cam_drv.h>

cam get pixel format value

Parameters
formatdisplay_pixel_format_t
Returns
uint32_t cam color format, like CAM_COLOR_FORMAT_RGB565

◆ cam_init()

hpm_stat_t cam_init ( CAM_Type ptr,
cam_config_t config 
)

#include <drivers/inc/hpm_cam_drv.h>

CAM init.

Parameters
[in]ptrCAM base address
[in]configcam_config_t
Return values
hpm_stat_tstatus_invalid_argument or status_success

◆ cam_set_binary_threshold()

static void cam_set_binary_threshold ( CAM_Type ptr,
uint8_t  threshold 
)
inlinestatic

#include <drivers/inc/hpm_cam_drv.h>

CAM set binary threshold.

Parameters
[in]ptrCAM base address
[in]thresholdthreshold value of binary output

◆ cam_set_color_key()

static void cam_set_color_key ( CAM_Type ptr,
uint32_t  high,
uint32_t  low 
)
inlinestatic

#include <drivers/inc/hpm_cam_drv.h>

CAM set high and low limits of color key.

Parameters
[in]ptrCAM base address
[in]highcolor key high limits
[in]lowcolor key low limits

◆ cam_set_input_pixel_byte_order()

static void cam_set_input_pixel_byte_order ( CAM_Type ptr,
cam_input_pixel_byte_order_t  order 
)
inlinestatic

#include <drivers/inc/hpm_cam_drv.h>

CAM set input pixel byte order.

Parameters
[in]ptrCAM base address
[in]ordercam_input_pixel_byte_order_t

◆ cam_start()

void cam_start ( CAM_Type ptr)

#include <drivers/inc/hpm_cam_drv.h>

CAM start.

Parameters
[in]ptrCAM base address

◆ cam_stop()

void cam_stop ( CAM_Type ptr)

#include <drivers/inc/hpm_cam_drv.h>

CAM stop.

Note
this API will stop CAM immediately no matter there's any frame is being processed or not
Parameters
[in]ptrCAM base address

◆ cam_stop_safely()

void cam_stop_safely ( CAM_Type ptr)

#include <drivers/inc/hpm_cam_drv.h>

CAM safety stop.

Note
this API will wait for end-of-frame event before stopping CAM
Parameters
[in]ptrCAM base address

◆ cam_update_buffer()

static void cam_update_buffer ( CAM_Type ptr,
uint32_t  buffer 
)
inlinestatic

#include <drivers/inc/hpm_cam_drv.h>

CAM update DMASA_FB1 buffer.

Parameters
[in]ptrCAM base address
[in]bufferbuffer point address

◆ cam_update_buffer2()

static void cam_update_buffer2 ( CAM_Type ptr,
uint32_t  buffer 
)
inlinestatic

#include <drivers/inc/hpm_cam_drv.h>

CAM update DMASA_FB2 buffer.

Parameters
[in]ptrCAM base address
[in]bufferbuffer point address