Telek, и WiFi должен быть отключен на время измерения, емнип. Иначе они вообще не гарантируют ничего.
Там оно (в SDK) автоматом отключается и включается (pm_set_sleep_mode()....pm_wakeup_init()). Код system_adc_read() приведен в моей свалке (Web_Base\app\driver\adc.c) и от него у меня используется только часть для демки записи wav на 20kHz.
И я не выключаю WiFi вообще. Там завязка с оборудованием WiFi и всё наоборот - когда WiFi блок отключен, то ADC не работает. И это не ADC, а кусок - компаратор и ещё пару блоков источников тока, да ещё мелочи... Всё программно запускается и суммируется для вычисления кода конечного значения ADC.
CLEAR_PERI_REG_MASK(0x60000D50,2);SET_PERI_REG_MASK(0x60000D50,2); запускает сравниватель, накопитель...
while(READ_PERI_REG(0x60000D50)&(0x7<<24)); ожидание накопления (тут и всё ограничение на скорость - 50us - 20кГц).
read_sar_dout(sardata); выдает (считывает из регистров) 8-мь интервалов сравнения и они суммируются для получения кода ADC.
Уверен, что можно поменять тайминг SAR-a и получим нормальный 44kHz оцифровку. Но надо делать потоковое аудио, а лень.