| Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
STM32F4xx не очень ясно АЦП
09.06.2012, 03:25
|
|
|
Частый гость
Регистрация: 08.10.2009
Сообщений: 21
Сказал спасибо: 6
Сказали Спасибо 7 раз(а) в 7 сообщении(ях)
|
STM32F4xx не очень ясно АЦП
Прошу помочь разобраться.
Начинаю разбираться с STM32F407VG (до этого долго работал с Silabs 8051 и AVR).
Задача следующая (8-ми канальный самописец):
- есть 8 каналов, одновременно может быть включено 1 или 2 или … все 8
- необходимо считывать данные непрерывно с каждого включенного канала с частотой от 1 КГц до Max возможной (например 7.2 МГц)
- данные писать в ОЗУ и по мере возможностей передавать в ПК по Ethernet
Не могу понять что означает в datasheet “Additional functions”: ADC123_INn и ADC12_INn.
Например PA0 ADC123_IN0 это означает что вывод PA0 можно использовать как канал 0 для АЦП1, АЦП2 и АЦП3 или только для одного из АЦП. Или если используется независимый режим то ADC123_IN0 можно использовать только для одного АЦП, а если используется мульти режим то ADC123_IN0 можно использовать для всех АЦП?
В datasheet написано: However, an ADC cannot start a conversion if the complementary ADC is still sampling its input (only one ADC can sample the input signal at a given time), т.е. только УВХ одного АЦП одновременно может быть подключено к PA0?
Как я понял PA0 просто конфигурируется как аналоговый вход без подтяжек, после чего его номер прописываеться в ADC_SQR. PA0 как то привязывается к определенному АЦП?
Если прописать PA0 сразу в ADC1_SQR, ADC2_SQR и ADC3_SQR и запустить все 3 АЦП в независимом режиме, но что бы их моменты УВХ были разнесены по времени, так правильно?
Каналы ADC12_INn не могу использоваться для АПЦ3?
И еще не совсем ясно что такое external trigger?
Есть биты “Configuring the trigger polarity”
Trigger detection disabled - это означает что АЦП можно запустить только программно SWSTART?
Detection rising / falling edges - это только для trigger запуска от EXTI или еще как-то от таймеров по обоим фронтам?
Спасибо!
P.S.
Как-то странно STM аналоговый каналы сделала, если включаешь Ethernet или USB HS половины аналоговых каналов нет.
|
|
|
|
11.06.2012, 14:19
|
|
|
Гражданин KAZUS.RUN
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
|
Re: STM32F4xx не очень ясно АЦП
а зачем тебе одновременно 3 включенных ацп?
|
|
|
|
11.06.2012, 14:26
|
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
|
Re: STM32F4xx не очень ясно АЦП
8 каналов по 1кГц можно считывать со частотой 8кГц, переключая каналы:
|
Код:
|
u16 adc_read(u8 channel)
{
ADC_RegularChannelConfig(ADC1, channel, 1, ADC_SampleTime_1Cycles5);
// Start the conversion
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
// Wait until conversion completion
while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == RESET);
// Get the conversion value
return ADC_GetConversionValue(ADC1);
} |
И инитиализация:
|
Код:
|
void adc_init(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE); //ADC init
ADC_InitStructure.ADC_Mode=ADC_Mode_Independent;
ADC_InitStructure.ADC_ScanConvMode = DISABLE;
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
ADC_InitStructure.ADC_NbrOfChannel = 1;
/* Now do the setup */
ADC_Init(ADC1, &ADC_InitStructure);
/* 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));
/* Start ADC1 calibaration */
ADC_StartCalibration(ADC1);
/* Check the end of ADC1 calibration */
while(ADC_GetCalibrationStatus(ADC1));
} |
|
|
|
|
Эти 2 пользователя(ей) сказали Спасибо Easyrider83 за это сообщение:
|
|
|
12.06.2012, 01:02
|
|
|
Частый гость
Регистрация: 08.10.2009
Сообщений: 21
Сказал спасибо: 6
Сказали Спасибо 7 раз(а) в 7 сообщении(ях)
|
Re: STM32F4xx не очень ясно АЦП
Сообщение от Hives
|
|
а зачем тебе одновременно 3 включенных ацп?
|
Для до Max возможной (например 7.2 МГц)
Сообщение от Easyrider83
|
|
8 каналов по 1кГц можно считывать со частотой 8кГц, переключая каналы:
|
Спасибо.
Не совсем понял к чему это?
1 КГц это минимальная частота, реально работа будет на 3 - 5 МГц.
|
|
|
|
12.06.2012, 09:36
|
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
|
Re: STM32F4xx не очень ясно АЦП
В этом случае вам нужен внешний АЦП и ПЛИС.
|
|
|
|
Сказали "Спасибо" Easyrider83
|
|
|
12.06.2012, 13:18
|
|
|
Заблокирован
Регистрация: 27.03.2007
Сообщений: 1,327
Сказал спасибо: 12
Сказали Спасибо 576 раз(а) в 460 сообщении(ях)
|
Re: STM32F4xx не очень ясно АЦП
Сообщение от silabs
|
|
Если прописать PA0 сразу в ADC1_SQR, ADC2_SQR и ADC3_SQR и запустить все 3 АЦП в независимом режиме, но что бы их моменты УВХ были разнесены по времени, так правильно?
|
Да. И ещё Вам нужен "Interleaved mode". Тогда после триггера стартует ADC1. Его УВХ подключается ко входу на 3 клока. По окончании выборки + 2 клока подключается УВХ ADC2, а первый ADC начинает преобразование. Через 3+2 клока подключается УВХ ADC3, второй ADC начинает преобразование параллельно с первым. Ещё через 3 клока начинается преобразование ADC3.
Если к этому моменту ADC1 уже закончил преобразования, то его УВХ подключается ко входу и всё начинается сначала.
То есть, если 3 клока на выборку и 12 на преобразование, то всё ровненько будет преобразовываться через каждые 5 ADC клоков.
|
|
|
|
Эти 2 пользователя(ей) сказали Спасибо Yurkin2007 за это сообщение:
|
|
|
12.06.2012, 13:49
|
|
|
Частый гость
Регистрация: 08.10.2009
Сообщений: 21
Сказал спасибо: 6
Сказали Спасибо 7 раз(а) в 7 сообщении(ях)
|
Re: STM32F4xx не очень ясно АЦП
Сообщение от Easyrider83
|
|
В этом случае вам нужен внешний АЦП и ПЛИС.
|
Нет, для этого м/к как раз это не нужно.
Сообщение от Yurkin2007
|
|
Да. И ещё Вам нужен "Interleaved mode".
|
Спасибо.
Даташит я прочитал, теорию понял.
Не понятны только нюансы о которых спрашиваю вверху.
Interleaved mode годится для Max возможной частоты.
Если нужно например не 7.2 МГц, а 5 МГц или 6 МГц и на 2 или 3 канала.
То не совсем ясно как использовать Interleaved mode.
P.S.
По external trigger.
Для того что бы например запускать АЦП от T1 нужно установить:
ADC_CR2-›EXTEN = 00b (Trigger detection disabled)
ADC_CR2-›EXTSEL = 0000b (Timer 1 CC1 event)
Так?
|
|
|
|
12.06.2012, 14:13
|
|
|
Заблокирован
Регистрация: 27.03.2007
Сообщений: 1,327
Сказал спасибо: 12
Сказали Спасибо 576 раз(а) в 460 сообщении(ях)
|
Re: STM32F4xx не очень ясно АЦП
Сообщение от silabs
|
|
Если нужно например не 7.2 МГц, а 5 МГц или 6 МГц
|
Используйте DELAY.
|
Цитата:
|
Регистр ADC_CCR:
Bit 11:8 DELAY: Delay between 2 sampling phases
|
максимальная задержка между преобразованиями 20 клоков
|
|
|
|
Сказали "Спасибо" Yurkin2007
|
|
|
12.06.2012, 14:19
|
|
|
Заблокирован
Регистрация: 27.03.2007
Сообщений: 1,327
Сказал спасибо: 12
Сказали Спасибо 576 раз(а) в 460 сообщении(ях)
|
Re: STM32F4xx не очень ясно АЦП
Сообщение от silabs
|
Для того что бы например запускать АЦП от T1 нужно установить:
ADC_CR2-›EXTEN = 00b (Trigger detection disabled)
ADC_CR2-›EXTSEL = 0000b (Timer 1 CC1 event)
|
Таймер есть внешнее устройство для АЦП и поэтому надо разрешить EXTEN=01b
|
|
|
|
Эти 2 пользователя(ей) сказали Спасибо Yurkin2007 за это сообщение:
|
|
|
16.06.2012, 00:37
|
|
|
Прописка
Регистрация: 21.03.2011
Сообщений: 107
Сказал спасибо: 15
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
|
Re: STM32F4xx не очень ясно АЦП
Так а на практике, с какой макс.частотой дискретизации можно например 12 (  каналов оцифровывать? Частоту имею ввиду отдельного канала. Учитывая не только скорострельность модуля ADC, но и задержки на коммутацию, обработку и отложение результатов в буфер.
Последний раз редактировалось pasipaka; 16.06.2012 в 22:11.
|
|
|
|
Сказали "Спасибо" pasipaka
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 23:42.
|
|