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

 
 
> STM32 ADC - injected channels
acorn
сообщение Nov 21 2010, 17:41
Сообщение #1


Участник
*

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



Коллеги,

простой вопрос.
Изучаю документацию на STM32F1xx. Раздел про ADC описывает regular и injected channels. Теперь я знаю как конфигурить те и другие, как читать результат и т.п. Чего я не понимаю, так это в чем между ними разница?
Может кто-нить простыми словами объяснить зачем нужны injected-каналы?

Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SasaVitebsk
сообщение Nov 23 2010, 06:56
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Что-то в железе у меня не получилось.
Go to the top of the page
 
+Quote Post
zoddy
сообщение Nov 23 2010, 07:56
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 4-12-05
Из: Екатеринбург
Пользователь №: 11 773



Цитата(SasaVitebsk @ Nov 23 2010, 11:56) *
Что-то в железе у меня не получилось.


Изучал работу АЦП на платке STM32F10B путем переделки готовых примеров из IAR. Вот примерчик кода.

/* ADC1 configuration ------------------------------------------------------*/
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; // режим АЦП
ADC_InitStructure.ADC_ScanConvMode = ENABLE; // режим сканирования группы каналов
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; // вкл/выкл непрерывное преобразование
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;// выравнивание
ADC_InitStructure.ADC_NbrOfChannel = 3; // количество каналов в группе
ADC_Init(ADC1, &ADC_InitStructure);

/* ADC1 regular channel14 configuration */
ADC_RegularChannelConfig(ADC1, ADC_Channel_14, 1, ADC_SampleTime_239Cycles5);
ADC_RegularChannelConfig(ADC1, ADC_Channel_14, 2, ADC_SampleTime_239Cycles5);
ADC_RegularChannelConfig(ADC1, ADC_Channel_14, 3, ADC_SampleTime_239Cycles5);

/* Set injected sequencer length */
ADC_InjectedSequencerLengthConfig(ADC1, 4);

/* ADC1 injected channel Configuration */
ADC_InjectedChannelConfig(ADC1, ADC_Channel_13, 1, ADC_SampleTime_28Cycles5);
ADC_InjectedChannelConfig(ADC1, ADC_Channel_13, 2, ADC_SampleTime_28Cycles5);
ADC_InjectedChannelConfig(ADC1, ADC_Channel_13, 3, ADC_SampleTime_28Cycles5);
ADC_InjectedChannelConfig(ADC1, ADC_Channel_13, 4, ADC_SampleTime_28Cycles5);

/* ADC1 injected external trigger configuration */
ADC_ExternalTrigInjectedConvConfig(ADC1, ADC_ExternalTrigInjecConv_None);

/* Enable ADC1 */
ADC_Cmd(ADC1, ENABLE);

/* Enable ADC1 reset calibaration register */
ADC_ResetCalibration(ADC1);
/* Check the end of ADC1 reset calibration register */
while (ADC_GetResetCalibrationStatus(ADC1));

/* Enable JEOC interupt */
ADC_ITConfig(ADC1, ADC_IT_JEOC, ENABLE); // вкл. прерывание по окончанию преобразования инжектированной группы

/* Start ADC1 calibaration */
ADC_StartCalibration(ADC1);
/* Check the end of ADC1 calibration */
while (ADC_GetCalibrationStatus(ADC1));

ADC_SoftwareStartInjectedConvCmd(ADC1, ENABLE); // программный запуск преобразования инжектированной группы
ADC_SoftwareStartConvCmd(ADC1,ENABLE); // программный запуск преобразования регулярной группы

У меня этот пример работал.
Как я понял, принцип работы групп АЦП в STM32... регулярная группа каналов может опрашиваться либо непрерывно, либо по событию ( или по программному запуску). А инжектированную группу при этом можно запустить в любой момент времени тоже
либо по триггеру, либо программно. Соответственно, если нет необходимости измерять каналы регулярной группы, а есть необходимость измерить только инжектированные каналы, мы просто запускаем измерение инжектированных каналов.

Go to the top of the page
 
+Quote Post
ViKo
сообщение Nov 23 2010, 08:27
Сообщение #4


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(zoddy @ Nov 23 2010, 09:56) *
Вот примерчик кода...

который надо оформлять с помощью тэгов [code][/code]. Они есть в панели набора сообщения в виде кнопки. А для большого объема кода - codebox.
Go to the top of the page
 
+Quote Post



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

 


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


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