ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
3 июля
1032371 Топик полностью
Kceния (30.08.2020 18:19, просмотров: 408) ответил my504 на Ксения, а как Вы запускаете преобразования? DMA в связке с ADC является всего лишь приемником результата преобразования. То есть по флагу готовности данных генерируется реквест DMA. Запуск в настройках у Вас софтверный:
Я уже писала, что мой запуск выглядит так: 

HAL_ADC_Start_DMA( &hadc1, (uint32_t*)ADC_buffer, 2048);

А частоту семплирования полагаю задают строки:

hadc1.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4;

sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5;

Всё равно никаких иных полей структуры, где бы могла бы реализовать свои пожелания, больше нет.


Кстати, это не первый мой опыт с ADC. На STM32F407 он у меня отлично работает, только там циклическое сканирование по 8-ми каналам. И запускаю я его там точно так же.

Проблема возникла при переходе на STM32H743, где появились неведомые мне поля:

hadc1.Init.LowPowerAutoWait = DISABLE;

hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START; // прежде был только ExternalTrigConvEdge

hadc1.Init.ConversionDataManagement = ADC_CONVERSIONDATA_DMA_ONESHOT; // такого не было

hadc1.Init.Overrun = ADC_OVR_DATA_PRESERVED;

hadc1.Init.OversamplingMode = DISABLE;

И пропало поле:

hadc1.Init.DMAContinuousRequests = ENABLE;
Что касается DMA, то там примерно по-старому. Только заменила

hdma_adc1.Init.Mode = DMA_CIRCULAR;
на

hdma_adc1.Init.Mode = DMA_NORMAL;