| | |
| | | |
| | | /* If the sampling rate setting exceeds the conversion rate threshold, the maximum sampling rate is used by default */ |
| | | uint32_t rate = (adc_clk == ADC_CLK_LOW_FREQ) ? ((config->rate < ADC_CLK_L_MAX_SAMPLE_RATE) ? config->rate : ADC_CLK_L_MAX_SAMPLE_RATE) |
| | | : (config->rate < ADC_CLK_H_MAX_SAMPLE_RATE ? config->rate : ADC_CLK_H_MAX_SAMPLE_RATE); |
| | | : (config->rate < ADC_CLK_H_MAX_SAMPLE_RATE ? config->rate : ADC_CLK_H_MAX_SAMPLE_RATE); |
| | | |
| | | /* If the sample rate is set to 0, no frequency division */ |
| | | uint16_t div = (uint16_t)((adc_clk / ((rate == 0) ? 1 : rate)) - 1); |
| | |
| | | // update state |
| | | switch (adc_handle.state) |
| | | { |
| | | case ADC_STATE_READY: |
| | | adc_handle.state = ADC_STATE_BUSY; |
| | | break; |
| | | case ADC_STATE_BUSY: |
| | | int_unlock(lock); |
| | | return DRV_BUSY; |
| | | case ADC_STATE_RESET: |
| | | case ADC_STATE_TIMEOUT: |
| | | case ADC_STATE_ERROR: |
| | | int_unlock(lock); |
| | | return DRV_ERROR; |
| | | case ADC_STATE_READY: |
| | | adc_handle.state = ADC_STATE_BUSY; |
| | | break; |
| | | case ADC_STATE_BUSY: |
| | | int_unlock(lock); |
| | | return DRV_BUSY; |
| | | case ADC_STATE_RESET: |
| | | case ADC_STATE_TIMEOUT: |
| | | case ADC_STATE_ERROR: |
| | | int_unlock(lock); |
| | | return DRV_ERROR; |
| | | } |
| | | |
| | | adc_handle.data = data; |
| | |
| | | static void adc_continue_callback(void *data, uint32_t number) |
| | | { |
| | | |
| | | LOG_INFO(TRACE_MODULE_APP, "Chip adc callback %d degree\r\n", data); |
| | | LOG_INFO(TRACE_MODULE_APP, "Chip adc callback %d degree\r\n", data); |
| | | } |
| | | int16_t battery_monitor_get(void) |
| | | { |