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

 
 
> ADC STM32F100C4T6B 7ch, Опрос семи каналов АЦП
Artos5
сообщение Sep 4 2014, 20:21
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 124
Регистрация: 21-07-13
Из: Украина, Ахтырка
Пользователь №: 77 613



Доброй ночи уважаемые форумчане! Помогите пожалуйста разобраться.
Хочу опрашивать АЦП (все 7 каналов) за 1-10мс.

Набрел на примеры в интернете , но они только на один канал..
Из доки понял что в инжектированном режиме можно работать сразу с 4 каналами , то есть эти 4 канала будут складывать данные в разные регистры и не затирать другие измеренные каналы АЦП.

Вопрос: какой режим мне лучше использовать? И как настроить чтобы я мог читать данные?

к примеру так:

Код
ch1 = ADC1;
ch2 = ADC2;
ch3 = ADC3;
ch4 = ADC4;
ch5 = ADC5;
ch6 = ADC6;
ch7 = ADC7;



пример нашел такой:

Код
void init_adc()
{
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);// включаем порта А
        RCC_APB2PeriphClockCmd(RCC_APB2ENR_ADC1EN, ENABLE);// включаем модуль АЦП
        ADC1->SMPR2 |= (ADC_SMPR2_SMP1_2 | ADC_SMPR2_SMP1_1 | ADC_SMPR2_SMP1_0); //Задаем время выборки                                                                                            
        ADC1->CR2 |= ADC_CR2_JEXTSEL; //Преобразование инжектированной группы                                                        
        ADC1->CR2 |= ADC_CR2_JEXTTRIG; //Разрешаем внешний запуск инжектированной группы
        ADC1->CR2 |= ADC_CR2_CONT; //Преобразования запускаются одно за другим
        ADC1->CR1 |= ADC_CR1_JAUTO;
        ADC1->JSQR |= (1<<15); //Задаем номер канала  - ADC1
        ADC1->CR2 |= ADC_CR2_ADON;//Теперь включаем АЦП
        ADC1->CR2 |= ADC_CR2_JSWSTART; //Запуск преобразований
        while (!(ADC1->SR & ADC_SR_JEOC)); //ждем пока первое преобразование завершится
}

int main(void)
{
        init_7leds();
        init_adc();
        while(1)
    {
            adc_res=ADC1->JDR1;
            adc_res = (adc_res * 7300) / 100000;
            set_7led(adc_res);
    }
}

Может кто уже работал в многоканальном режиме, и может тому человеку не жалко будет показать пример кода?
Заранее спасибо за помощь! sm.gif
С уважением Артем.


-----------------------------


Я правильно понимаю?
Что надо прочитать один канал в переменную , потом выключить АЦП , выбрать другой канал АЦП , включить снова преобразование , дождаться завершения преобразования , прочитать содержимое.

Или можно выбирать номер канала не выключая АЦП?
Работал до этого с AVR , поэтому , сейчас неудобно переходить на STM32 ....

Сообщение отредактировал Artos5 - Sep 4 2014, 20:22
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 20:03
Рейтинг@Mail.ru


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