acorn 0 21 ноября, 2010 Опубликовано 21 ноября, 2010 · Жалоба Коллеги, простой вопрос. Изучаю документацию на STM32F1xx. Раздел про ADC описывает regular и injected channels. Теперь я знаю как конфигурить те и другие, как читать результат и т.п. Чего я не понимаю, так это в чем между ними разница? Может кто-нить простыми словами объяснить зачем нужны injected-каналы? Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
acorn 0 21 ноября, 2010 Опубликовано 21 ноября, 2010 · Жалоба Разобрался. Ничем не отличаются, кроме возможности прервать обработку regular-каналов по событию, обработать более приоритетные (injected) и продолжить обработку обычных. Как-то так. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SapegoAL 0 21 ноября, 2010 Опубликовано 21 ноября, 2010 · Жалоба Ну и ещё такая фишка, что инжектированные идут напрямую в регистры. То есть 4 регистра отдельных. Каждому каналу - свой. Кроме того, есть возможность прибавить смещение, но это уже мелочь. Я не смог найти, как можно запустить только инжектированные измерения без регулярных. Похоже нельзя. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
acorn 0 21 ноября, 2010 Опубликовано 21 ноября, 2010 · Жалоба Я не смог найти, как можно запустить только инжектированные измерения без регулярных. Похоже нельзя. Ага, спасибо. С регистрами понятно, это в доке есть. Меня основная идея интересовала - зачем они (со всеми своими регистрами и смещениями) вообще понадобились. Теперь вроде ясно. Кста, в errata есть по поводу нулевого канала пунктик (№1), и как-то невнятно рекомендуют использовать этот канал именно как инжектированный. Неужели нельзя этого сделать без регулярных каналов? Впро, я не пробовал пока. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zoddy 0 22 ноября, 2010 Опубликовано 22 ноября, 2010 · Жалоба Ну и ещё такая фишка, что инжектированные идут напрямую в регистры. То есть 4 регистра отдельных. Каждому каналу - свой. Кроме того, есть возможность прибавить смещение, но это уже мелочь. Я не смог найти, как можно запустить только инжектированные измерения без регулярных. Похоже нельзя. Почему нельзя-то???!!! Очень даже можно! См. раздел 11.3.9 Injected channel management -> Triggered injection Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SapegoAL 0 23 ноября, 2010 Опубликовано 23 ноября, 2010 · Жалоба Что-то в железе у меня не получилось. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zoddy 0 23 ноября, 2010 Опубликовано 23 ноября, 2010 · Жалоба Что-то в железе у меня не получилось. Изучал работу АЦП на платке 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... регулярная группа каналов может опрашиваться либо непрерывно, либо по событию ( или по программному запуску). А инжектированную группу при этом можно запустить в любой момент времени тоже либо по триггеру, либо программно. Соответственно, если нет необходимости измерять каналы регулярной группы, а есть необходимость измерить только инжектированные каналы, мы просто запускаем измерение инжектированных каналов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 23 ноября, 2010 Опубликовано 23 ноября, 2010 · Жалоба Вот примерчик кода... который надо оформлять с помощью тэгов . Они есть в панели набора сообщения в виде кнопки. А для большого объема кода - codebox. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vitecd 0 21 декабря, 2010 Опубликовано 21 декабря, 2010 · Жалоба acorn можешь свой код по АЦП показать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
acorn 0 23 декабря, 2010 Опубликовано 23 декабря, 2010 · Жалоба acorn можешь свой код по АЦП показать? Точно ко мне вопрос? Я с этой архитектурой только начал работать, никакого кода не анонсировал, да и показать по АЦП нечего. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
HardEgor 71 18 февраля, 2011 Опубликовано 18 февраля, 2011 · Жалоба Есть аппликуха по АЦП, там куча примеров во всех вариантах. AN3116 STM32™’s ADC modes and their applications. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться