/**************************************************************************** * * Copyright(c) 2019 by Aerospace C.Power (Chongqing) Microelectronics. ALL RIGHTS RESERVED. * * This Information is proprietary to Aerospace C.Power (Chongqing) Microelectronics and MAY NOT * be copied by any method or incorporated into another program without * the express written consent of Aerospace C.Power. This Information or any portion * thereof remains the property of Aerospace C.Power. The Information contained herein * is believed to be accurate and Aerospace C.Power assumes no responsibility or * liability for its use in any way and conveys no license or title under * any patent or copyright and makes no representation or warranty that this * Information is free from patent or copyright infringement. * * ****************************************************************************/ #ifndef SADC_H #define SADC_H #ifdef __cplusplus extern "C" { #endif typedef enum { ANA_SADC0 = 0, ANA_SADC1 = 1, } sadc_id_t; typedef enum { SADC_CLK_FREQ_25M, SADC_CLK_FREQ_12M5 } sadc_clk_freq_t; /** * @brief sadc_init(sadc_id_t sadc_id) - init sadc sub system. * * @param sadc_id: sadc0 or sadc1 * @param clk_freq: sadc clock frequency, see sadc_clk_freq_t */ void sadc_init(sadc_id_t sadc_id, sadc_clk_freq_t *clk_freq); /** * @brief sadc_phase_sel() - set phase channel * * @param sadc_id: sadc0 or sadc1 * @param phs: phase * * @return 0: success * @return NON-0: error */ int32_t sadc_phase_sel(sadc_id_t sadc_id,uint8_t phs); /** * @brief sadc_data_num_set() - set data number * * @param sadc_id: sadc0 or sadc1 * @param phs: phase * @param num: data number * * @return 0: success * @return NON-0: error */ int32_t sadc_data_num_set(sadc_id_t sadc_id, uint8_t phs, uint32_t num); /** * @brief sadc_discard_num_set() - discard number for crosstalk. * * @param sadc_id: sadc0 or sadc1 * @param phs: phase * @param num: discard number * * @return 0: success * @return NON-0: error */ int32_t sadc_discard_num_set(sadc_id_t sadc_id, uint8_t phs, uint32_t num); /** * @brief sadc_phase_sel_scl_mux() - set adc gain value * * @param phase: mux adc channel select * @param channel_num: adc channel number * * @return 0: success * @return NON-0: error */ int32_t sadc_phase_sel_scl_mux(uint8_t phase, uint8_t channel_num); /** * @brief sadc_poll_data_start() - get adc value code which is calibrated. * @note code convert to voltage is different for kl1/2/3. * @param ch: adc channel. * @param acc: enum ADC_ACC * @param gain: enum ADC_GAIN * @param err_num: err_num return value; 0 - normal. data is OK 1 - timeout, data is not OK. * @return adc value code which is calibrated. */ int32_t sadc_poll_data_start(uint32_t ch, uint8_t acc, uint8_t gain, uint8_t *err_num); /** * @brief sadc_poll_volt_start() - get adc voltage which is calibrated. * @param ch: adc channel. * @param gain: enum ADC_GAIN * @param err_num: err_num return value; 0 - normal. data is OK 1 - timeout, data is not OK. * @return adc voltage which is calibrated, uint: mV. */ int32_t sadc_poll_volt_start(uint32_t ch, uint8_t gain, uint8_t *err_num); /** * @brief sadc_poll_volt_start_real() - get adc voltage which is not calibrated. * @param ch: adc channel. * @param gain: enum ADC_GAIN * @param err_num: err_num return value; 0 - normal. data is OK 1 - timeout, data is not OK. * @return adc voltage which is not calibrated, uint: mV. */ int32_t sadc_poll_volt_start_real(uint32_t ch, uint8_t gain, uint8_t *err_num); /** * @brief sadc_m_cali_data_refresh() - adc module cali data changed, need to reload. * * @param none * @return none */ void sadc_m_cali_data_refresh(void); /** * @brief sadc_temperature_val_get(uint8_t type) - get core temperature. * @param : type:temperature type: 0 rawdata 1 Calibrated data * @return: core temperature, unit: ℃; */ float sadc_temperature_val_get(uint8_t type); /** * @brief sadc_temperature_val_get_raw() - get core temperature raw. * @param temp: to get temperature, unit: ℃; * @return: 0: success othre:fail; */ int32_t sadc_temperature_val_get_raw(float *temp); /** * @brief sadc_temperature_val_update() - update temperature in variables. * @param : [none.] * @return: 0:sucess other:fail; */ int32_t sadc_temperature_val_update(void); /** * @brief sadc_start_en() - enable sadc module * * @param sadc_id: sadc0 or sadc1 * @param en: 0--disable, 1--enable * * @return none */ void sadc_start_en(sadc_id_t sadc_id, uint8_t en); /** * @brief sadc_phase_mode_set() - set phase mode * * @param sadc_id: sadc0 or sadc1 * @param mode: 0-1 phase, >0-multi phase, refs SADC_PHS_MODE. * * @return none */ void sadc_phase_mode_set(sadc_id_t sadc_id, uint8_t mode); #ifdef __cplusplus } #endif #endif/*SADC_H*/