Files
libretiny/cores/lightning-ln882h/base/fixups/wifi_cal.c
lamauny 3054db9d9b [lightning-ln882h] Fix analog read, add Wi-Fi calibration, add generic board (#319)
* [ln882x] fix analog read

* [ln882h] add wifi temp calibration task

* [ln882h] add generic-ln882hki board

* [ln882h] fix wifi null pointer crash
2025-05-28 15:45:10 +02:00

58 lines
1.1 KiB
C

/* Copyright (c) Etienne Le Cousin 2025-05-04. */
#include <sdk_private.h>
void cal_adc_init(void)
{
adc_init_t_def adc_init;
memset(&adc_init, 0, sizeof(adc_init_t_def));
adc_init.adc_ch = ADC_CH0;
adc_init.adc_conv_mode = ADC_CONV_MODE_CONTINUE;
adc_init.adc_presc = 0xFF;
adc_init.adc_ov_smp_ratio = ADC_OVER_SAMPLING_RATIO_X8;
adc_init.adc_ov_smp_ratio_en = ADC_OVER_SAMPLING_EN_STATUS_BIT0;
hal_adc_init(ADC_BASE, &adc_init);
hal_adc_en(ADC_BASE, HAL_ENABLE);
hal_adc_start_conv(ADC_BASE);
}
uint16_t cal_adc_read(adc_ch_t ch)
{
uint16_t read_adc = 0;
while(hal_adc_get_conv_status(ADC_BASE, ch) == 0);
read_adc = hal_adc_get_data(ADC_BASE, ch);
hal_adc_clr_conv_status(ADC_BASE,ch);
return read_adc;
}
void cal_temp_app_task_entry()
{
int8_t cap_comp = 0;
uint16_t adc_val = 0;
if (NVDS_ERR_OK == ln_nvds_get_xtal_comp_val((uint8_t *)&cap_comp)) {
if ((uint8_t)cap_comp == 0xFF) {
cap_comp = 0;
}
}
cal_adc_init();
wifi_temp_cal_init(cal_adc_read(ADC_CH0), cap_comp);
while (1)
{
OS_MsDelay(1000);
adc_val = cal_adc_read(ADC_CH0);
wifi_do_temp_cal_period(adc_val);
}
}