реклама на сайте
подробности

 
 
> STM32 ADC
juvf
сообщение Dec 27 2012, 04:44
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Вводная: Нужно, допустим раз в секунду, оцифровать входные сигналы с 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
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 1)
nx6310
сообщение Dec 27 2012, 05:53
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 72
Регистрация: 28-06-10
Пользователь №: 58 174



Надо вроде выставить бит JEXTTRIG в регистре ADC_CR2 для разрешения старта преобразования по внешнему сигналу.
Тогда установка бита JSWSTART запустит преобразование.
Но у меня преобразование запускается если я одновременно устанавливаю биты JEXTTRIG и JSWSTART.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 17:16
Рейтинг@Mail.ru


Страница сгенерированна за 0.01344 секунд с 7
ELECTRONIX ©2004-2016