DVP_CAMERA APIs

[English]

重要

The DVP_CAMERA API v1.0 is the lastest stable DVP_CAMERA APIs. All new applications should use DVP_CAMERA API v1.0.

DVP_CAMERA Interface

Current software version support two types dvp sensor: gc0328c and hm1055. they are comunicate by i2c with chip. gc0328c have 20pins interface, hm1055 have 24pins interface.

gc0328c support different image resolution and frame rate: 1. WQVGA(480*272) 2. QVGA(320*240) 3. VGA(640*480) frame rate: 5fps/10fps/20fps/25fps

hm1055 only support 720p(1280*720) image resolution, and different frame rates: 5fps/15fps/20fps

DVP_CAMERA API Categories

Most of DVP_CAMERA APIs can be categoried as:

  • DVP_CAMERA APIs

    The common APIs are prefixed with bk_camera, e.g. bk_camera_driver_init() etc.

DVP_CAMERA APIs:

API Reference

Header File

Functions

bk_err_t bk_dvp_camera_driver_init(dvp_camera_config_t *config)

Init the camera.

This API will auto detect dvp sensor, and init sensor, jpeg module, i2c module, psram, dma, ect.

1. you need make sure upper module exist.

参数

config – process for sensor data

返回

  • kNoErr: succeed

  • others: other errors.

bk_err_t bk_dvp_camera_driver_deinit(void)

Deinit the camera.

This API will deinit sensor, jpeg module, i2c module, psram, dma, ect.

返回

  • kNoErr: succeed

  • others: other errors.

dvp_camera_device_t *bk_dvp_camera_get_device(void)

Get current use camera.

This API will called after bk_dvp_camera_driver_init

返回

int dvp_camera_i2c_read_uint8(uint8_t addr, uint8_t reg, uint8_t *value)

Read sensor register value.

This API will called after bk_i2c_init

参数
  • addr – sensor read address

  • reg – sensor register address

  • value – sensor register value

返回

  • 0 : succeed

  • other: other errors.

int dvp_camera_i2c_read_uint16(uint8_t addr, uint16_t reg, uint8_t *value)

Read sensor register value.

This API will called after bk_i2c_init

参数
  • addr – sensor read address

  • reg – sensor register address

  • value – sensor register value

返回

  • 0 : succeed

  • other: other errors.

int dvp_camera_i2c_write_uint8(uint8_t addr, uint8_t reg, uint8_t value)

Write sensor register value.

This API will called after bk_i2c_init

参数
  • addr – sensor read address

  • reg – sensor register address

  • value – sensor register value

返回

  • 0 : succeed

  • other: other errors.

int dvp_camera_i2c_write_uint16(uint8_t addr, uint16_t reg, uint8_t value)

Write sensor register value.

This API will called after bk_i2c_init

参数
  • addr – sensor write address

  • reg – sensor register address

  • value – sensor register value

返回

  • 0 : succeed

  • other: other errors.

bk_err_t bk_dvp_camera_power_enable(uint8_t enable)

uvc power on

This API called by user, before calling bk_dvp_driver_init, you should power on dvp

1. This api config ctrl by marco VIDEO_GPIO_CTRL_LDO_ENABLE

参数

enable – power up/down:1/0

返回

  • BK_OK: succeed

  • others: other errors.

API Typedefs

Header File

Structures

struct dvp_camera_config_t

dvp_camera config

Public Members

media_ppi_t ppi

sensor image resolution

dvp_mode_t mode

sensor output mode yuv/jpeg

int (*fb_jpeg_init)(media_ppi_t max_ppi)

init jpeg psram buffer

int (*fb_jpeg_deinit)(void)

deinit jpeg psram buffer

int (*fb_display_init)(media_ppi_t max_ppi)

init yuv psram buffer

int (*fb_display_deinit)(void)

deinit yuv psram buffer

void (*fb_jpeg_complete)(frame_buffer_t *buffer)

dvp notify upper layer a complete frame ready

frame_buffer_t *(*fb_jpeg_malloc)(void)

malloc jpeg psram buffer

frame_buffer_t *(*fb_display_malloc)(void)

malloc yuv psram buffer

struct dvp_camera_i2c_callback_t

dvp_camera i2c process

Public Members

int (*read_uint8)(uint8_t addr, uint8_t reg, uint8_t *value)

i2c read by byte

int (*read_uint16)(uint8_t addr, uint16_t reg, uint8_t *value)

i2c read by two byte

int (*write_uint8)(uint8_t addr, uint8_t reg, uint8_t value)

i2c write by byte

int (*write_uint16)(uint8_t addr, uint16_t reg, uint8_t value)

i2c write by two byte

struct dvp_sensor_config_t

dvp sensor configure

Public Members

char *name

sensor name

media_ppi_t def_ppi

sensor default resolution

sensor_fps_t def_fps

sensor default fps

uint16_t id

sensor type, sensor_id_t

uint8_t clk

sensor work clk in config fps and ppi

pixel_format_t fmt

sensor input data format

uint16_t address

sensor write register address by i2c

uint16_t fps_cap

sensor support fps

uint16_t ppi_cap

sensor support resoultions

bool (*detect)(const dvp_camera_i2c_callback_t *cb)

auto detect used dvp sensor

int (*init)(const dvp_camera_i2c_callback_t *cb)

init dvp sensor

int (*set_ppi)(const dvp_camera_i2c_callback_t *cb, media_ppi_t ppi)

set resolution of sensor

int (*set_fps)(const dvp_camera_i2c_callback_t *cb, sensor_fps_t fps)

set fps of sensor

int (*power_down)(const dvp_camera_i2c_callback_t *cb)

power down or reset of sensor

int (*dump_register)(const dvp_camera_i2c_callback_t *cb, media_ppi_t ppi)

dump sensor register

void (*read_register)(bool enable)

read sensor register when write

struct dvp_camera_device_t

current used camera config

Public Members

media_ppi_t ppi

sensor image resolution

sensor_fps_t fps

sensor fps

char *name

sensor name

uint16 id

sensor type, sensor_id_t

uint16 fps_cap

sensor support fps

uint16 ppi_cap

sensor support resoultions

uint32 pixel_size

sensor output image width

dvp_mode_t mode

dvp camera work mode

Macros

GC_QVGA_USE_SUBSAMPLE

Enumerations

enum sensor_clk_t

jpeg module work clk and sensor work clk

Values:

enumerator JPEG_96M_MCLK_16M

jpeg module work in 96MHz and sensor work in 16MHz

enumerator JPEG_96M_MCLK_24M
enumerator JPEG_120M_MCLK_20M
enumerator JPEG_120M_MCLK_30M
enum sensor_id_t

dvp sensor id type

Values:

enumerator ID_UNKNOW
enumerator ID_PAS6329
enumerator ID_OV7670
enumerator ID_PAS6375
enumerator ID_GC0328C
enumerator ID_BF2013
enumerator ID_GC0308C
enumerator ID_HM1055
enumerator ID_GC2145
enumerator ID_OV2640
enum sensor_fps_t

Values:

enumerator FPS5

5fps

enumerator FPS10

10fps

enumerator FPS15

15fps

enumerator FPS20

20fps

enumerator FPS25

25fps

enumerator FPS30

30fps

enum dvp_mode_t

Values:

enumerator DVP_MODE_JPG

camera work in jpeg encode mode

enumerator DVP_MODE_YUV

camera work in jpeg yuv mode

enumerator DVP_MODE_MIX
enumerator DVP_MODE_INVALIED