Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: STM32 ADC
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
juvf
Вводная: Нужно, допустим раз в секунду, оцифровать входные сигналы с 3-х каналов АЦП. Вроде как инжективная группа тут поинтереснее, т.к. есть 4 независимых регистра результата конвертирования. Накидал инит пока для одного канала, для пробы. Пока буду руками запускать преобразование.

Код
void initADC()
{
    //Настройка портов. Такты уже разрешены на порт А. Тактирование альтернативных функций разрешено
    GPIOA_CRL_bit.MODE0 = 0;  // Analog mode
    GPIOA_CRL_bit.CNF0 = 0;   // Input mode

    //Настройка АЦП
    RCC_APB2ENR_bit.ADC1EN = 1; //Разрешаем тактирование АЦП

    ADC1_CR1 = 0;
    ADC1_CR2 = 0;
    
    ADC1_JSQR_bit.JL = 0;        //последовательно 1 преобразование
    ADC1_JSQR_bit.JSQ1 = 0;    //  PA0/ADC0

    ADC1_SMPR2_bit.SMP0 = 0x7;
    ADC1_CR2_bit.JEXTSEL = 7; // ручной старт инжективной группы
    

    ADC1_CR2_bit.ADON = 1; //Включаем АЦП
    //каллибровка
    ADC1_CR2_bit.RSTCAL = 1;
    while(ADC1_CR2_bit.RSTCAL == 1);

    ADC1_CR2_bit.CAL = 1;
    while( ADC1_CR2_bit.CAL == 1 );

}


После инита в рабочем коде делаю ручной старт командой

ADC1_CR2_bit.JSWSTART = 1;

Конвертирования не происходит. ещё раз .... ещё..... smile3046.gif
Опять наверно где-то скрытый битик забыл..... перерыл даташит - всё вроде правильно. Случайно сделал команду
ADC1_CR2_bit.JSWSTART = 0;
И О ЧУДО!!! Запустилось преобразование.... правда в регулярной группе и результат лёг в ADC1_DR. Ну хоть результат похож на правду. Сделал ход канём, добавил в инит
ADC1_CR1_bit.JAUTO = 1; //автостарт инжективоной группы, после регулярной
И получил то что хотел. Т.е. делаю старт регулярной группы путём записи 0 в JSWSTART, после регулярной запускается инжективная.

Почему так? Где-то я бит пропустил или камень попался неисправный? В ератах вроде нету такой баги.

ps smt32f100c8t6
nx6310
Надо вроде выставить бит JEXTTRIG в регистре ADC_CR2 для разрешения старта преобразования по внешнему сигналу.
Тогда установка бита JSWSTART запустит преобразование.
Но у меня преобразование запускается если я одновременно устанавливаю биты JEXTTRIG и JSWSTART.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.