ADC Driver

[中文]

Overview

ADC converts analog signals to digital values. BK7239N integrates multi-channel ADC for sensor readout and voltage monitoring.

Functional Description

  • Multiple channels, single/continuous modes

  • Configurable clock, sample rate, digital filter

  • Interrupt support and data buffer read

  • Calibration and voltage conversion helpers

Development Guide

  1. Initialization: bk_adc_driver_init(), then bk_adc_init(channel, size)

  2. Read modes: bk_adc_single_read(), bk_adc_read_raw(), bk_adc_read_average()

  3. Control: bk_adc_start(), bk_adc_stop(), bk_adc_set_mode()

  4. Calibration: bk_adc_bypass_calibration(), bk_adc_data_calculate()

Notes

  • Initialize driver before channel init

  • Choose suitable sample rate and filter per signal bandwidth

  • Confirm reference voltage and input range

API Reference

  • bk_adc_driver_init/deinit, bk_adc_init/deinit

  • bk_adc_acquire/release

  • bk_adc_single_read, bk_adc_read_raw, bk_adc_read_average

  • bk_adc_start/stop, bk_adc_register_isr

  • bk_adc_set_clock, bk_adc_set_sample_rate, bk_adc_set_filter

  • bk_adc_set_steady_time, bk_adc_set_sample_count, bk_adc_set_saturate_mode

  • bk_adc_bypass_calibration, bk_adc_config, bk_adc_set_mode

  • bk_adc_data_calculate

Examples

Single read and convert to voltage:

uint16_t raw = 0;
bk_adc_driver_init();
bk_adc_init(ADC_CHAN_0, 64);
bk_adc_set_mode(ADC_SINGLE_MODE);
bk_adc_single_read(&raw);
float v = bk_adc_data_calculate(raw, ADC_CHAN_0);

FAQs

  • Low accuracy: check reference voltage, enable calibration

  • Unstable value: tune filter/steady time, verify source impedance

Error Codes

  • BK_ERR_ADC_NOT_INIT, BK_ERR_ADC_INVALID_MODE, BK_ERR_ADC_SIZE_TOO_BIG