mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-11-10 14:33:42 +08:00
c1aeddbfea
Manage device power, parked services and vehicle-specific Panda wake behavior. Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com> Co-authored-by: Daniel Koepping <elkoled@gmail.com> Co-authored-by: firestarsdog <229254897+firestarsdog@users.noreply.github.com>
30 lines
871 B
C
30 lines
871 B
C
#include "lladc_declarations.h"
|
|
|
|
void adc_init(ADC_TypeDef *adc) {
|
|
register_set(&(ADC->CCR), ADC_CCR_TSVREFE | ADC_CCR_VBATE, 0xC30000U);
|
|
register_set(&(adc->CR2), ADC_CR2_ADON, 0xFF7F0F03U);
|
|
}
|
|
|
|
static uint16_t adc_get_raw(const adc_signal_t *signal) {
|
|
// sample time
|
|
if (signal->channel < 10U) {
|
|
signal->adc->SMPR2 = ((uint32_t) signal->sample_time << (signal->channel * 3U));
|
|
} else {
|
|
signal->adc->SMPR1 = ((uint32_t) signal->sample_time << ((signal->channel - 10U) * 3U));
|
|
}
|
|
|
|
// select channel
|
|
signal->adc->JSQR = ((uint32_t) signal->channel << 15U);
|
|
|
|
// start conversion
|
|
signal->adc->SR &= ~(ADC_SR_JEOC);
|
|
signal->adc->CR2 |= ADC_CR2_JSWSTART;
|
|
while (!(signal->adc->SR & ADC_SR_JEOC));
|
|
|
|
return signal->adc->JDR1;
|
|
}
|
|
|
|
uint16_t adc_get_mV(const adc_signal_t *signal) {
|
|
return (adc_get_raw(signal) * current_board->avdd_mV) / 4095U;
|
|
}
|