Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
32 / 26 / 5
Регистрация: 30.04.2014
Сообщений: 748
1

STM32F103 АЦП

16.11.2017, 14:16. Просмотров 1519. Ответов 2
Метки нет (Все метки)


Здравствуйте.

Имею плату STM32F103 (купил на али "свисток").

Запустил на ней АЦП по найденному в инете коду для режима "Scan continuous"

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
    //ADC
    ADC_InitTypeDef ADC_InitStructure;
    GPIO_InitTypeDef  GPIO_InitStructure;
    // input of ADC (it doesn't seem to be needed, as default GPIO state is floating input)
    GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AIN;
    GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_1 ;        // that's ADC1 (PA1 on STM32)
    GPIO_Init(GPIOA, &GPIO_InitStructure);
 
    //clock for ADC (max 14MHz --> 72/6=12MHz)
    RCC_ADCCLKConfig (RCC_PCLK2_Div6);
    // enable ADC system clock
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
 
    // define ADC config
    ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
    ADC_InitStructure.ADC_ScanConvMode = DISABLE;
    ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;  // we work in continuous sampling mode
    ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
    ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
    ADC_InitStructure.ADC_NbrOfChannel = 1;
 
    ADC_RegularChannelConfig(ADC1,ADC_Channel_1, 1,ADC_SampleTime_28Cycles5); // define regular conversion config
    ADC_Init ( ADC1, &ADC_InitStructure);   //set config of ADC1
 
    // enable ADC
    ADC_Cmd (ADC1,ENABLE);  //enable ADC1
 
    //  ADC calibration (optional, but recommended at power on)
    ADC_ResetCalibration(ADC1); // Reset previous calibration
    while(ADC_GetResetCalibrationStatus(ADC1));
    ADC_StartCalibration(ADC1); // Start new calibration (ADC must be off at that time)
    while(ADC_GetCalibrationStatus(ADC1));
 
    // start conversion
    ADC_Cmd (ADC1,ENABLE);  //enable ADC1
    ADC_SoftwareStartConvCmd(ADC1, ENABLE); // start conversion (will be endless as we are in continuous mode)
 
    while (1)
    {
 
        adc_value = ADC_GetConversionValue(ADC1);
 
        processADCvalue(adc_value );
    }

1) Я правильно понимаю, что здесь сделана максимальная скорость получения данных в АЦП?

2) Здесь нет прерывания по окончанию преобразования АЦП, но данные АЦП сами сохраняются в буферной переменной?

Если не так, скажите, как получить максимальную скорость преобразования АЦП?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.11.2017, 14:16
Ответы с готовыми решениями:

Алгоритм работы с ацп АЦП STM32F103
Здравствуйте, уважаемые форумчане. Подскажите пожалуйста алгоритм работы с ацп. Допустим мне надо...

Использование АЦП в STM32f103
Пытаюсь измерять напряжение на первом канале. Не идет. Где косяк? //************** ...

Однобитность АЦП в stm32f103
Вот такая загогулина: плата- качественная Propox, ИДЕ- CooCox, код взят отсюда:...

АЦП STM32F103 настройка
здравствуйте, уважаемые форумчане. Хочу я настроить ацп STM32F103CBT6. Не могу понять регистры SQR1...

2
2732 / 1247 / 166
Регистрация: 28.10.2011
Сообщений: 4,614
Записей в блоге: 6
16.11.2017, 15:53 2
Цитата Сообщение от Khludenkov Посмотреть сообщение
как получить максимальную скорость преобразования АЦП
Нужно миллион преобразований в секунду?
Тогда нужно настроить DMA для совместной работы с АЦП выделив памяти скажем для 1000 выборок (2 КБ) и по прерыванию от DMA забирать данные.
0
32 / 26 / 5
Регистрация: 30.04.2014
Сообщений: 748
16.11.2017, 16:13  [ТС] 3
Речь шла именно о конфигурировании АЦП.
Но я сам додумался. Воспользуюсь кубом.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.11.2017, 16:13

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

АЦП и таймер STM32F103 - ARM, Cortex, STM32 микроконтроллер
Здравствуйте, уважаемые форумчане. Ковыряюсь я с ацп и хочу запускать его по таймеру с частотой 1...

Как связать таймер с АЦП и АЦП с DMA?
Вообщем стоит такая задача: через определенные интервалы времени периодически запускать...

USB на STM32F103
Всем привет :) Наконец-то решил разобраться с USB на контроллере ST32F103VCT6. Взял пример Virtual...

мистика stm32f103
купил мк stm32f103 распаял его на плате, подвел питания,землю, risit подвесил на VDD через резюк,...

USART1 и stm32f103
Нужно по USORT1 получить отклик от нажатия PE6, но я не могу понять почему не получается, помогите...

STM32F103 и NRF24L01+
Доброго времени суток, коллеги. Назрел вопрос, т.к. уже пару недель не могу разобраться в сути...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.