|
STM32F072 непонятный эффект с выборкой ADC |
|
|
|
Apr 24 2016, 05:48
|
Участник

Группа: Свой
Сообщений: 58
Регистрация: 6-07-12
Из: г.Нижний Новгород
Пользователь №: 72 651

|
Имею ADC, запуск выборки идет от триггера с периодом 2us, ADC тактируется от APBCLK = 48 MHz с делением на 2 или 4, данные забираются через DMA. Период запуска конверсии 2us, проверял осциллографом, все ок, 2us в наличии. Далее непонятный эффект, если ставлю предделитель на 4 (тактовая ADC = 12 MHz), то выборку могу поставить только 1.5 ADC clock cycles, при 7.5 сс данные становятся случайными, хотя: 7.5cc + 12.5cc=20cc, плюс еще trigger start latency 2.625 ADC clock cycles = 22.625cc => 1/12MHz * 22.625 = 1,885 us Если ставлю предделитель на 2 (тактовая ADC = 24 MHz, что ни есть хорошо), То все работает вплоть до выборки 28,5сс 28.5cc + 12.5cc + 2.75сс =43.75cc, 2.75 => 1/24MHz * 43,75 = 1.823us Код // ADC1 ADC1->CFGR1 = ADC_CFGR1_DISCEN; //discontinuos mode, the each TRIGOI event do convertion //ADC1->CFGR1 = ADC_CFGR1_CONT | ADC_CFGR1_SCANDIR; //ADC1->CFGR2 |= ADC_CFGR2_CKMODE_1; //APBCLK/4 = 12MHz ADC1->CFGR2 |= ADC_CFGR2_CKMODE_0; //APBCLK/2 = 24MHz ADC1->CFGR1 |= ADC_CFGR1_EXTSEL_1 | ADC_CFGR1_EXTEN_0; // SEL = 010 TIM2 TRIGOut EN = 01 ON RISING // Время для всех каналов //ADC1->SMPR &= !ADC_SMPR_SMP; //Для всех каналов 000: 1.5 ADC clock cycles //ADC1->SMPR |= ADC_SMPR_SMP_0; //Для всех каналов 001: 7.5 ADC clock cycles, 7.5cc + 12.5cc=20cc, 1/12MHz * 20 = 1,66us 1/24MHz * 20 = 0.8us //ADC1->SMPR |= ADC_SMPR_SMP_1; //Для всех каналов 010: 13.5 ADC clock cycles, 13.5cc + 12.5cc=26cc, 1/12MHz * 26 = 2.16us 1/24MHz * 26 = 1.08us ADC1->SMPR |= ADC_SMPR_SMP_1 | ADC_SMPR_SMP_0; //Для всех каналов 011: 28.5 ADC clock cycles, 28.5cc + 12.5cc=41cc, 1/24MHz * 41 = 1.708us Не хватает чуть чуть... Может кто-то имеет опыт в этом деле. Получится запустить на ADC на 12 MHz с выборкой 7,5сс?
Сообщение отредактировал seniorandre - Apr 24 2016, 19:01
|
|
|
|
|
 |
Ответов
|
Apr 24 2016, 18:19
|
Участник

Группа: Свой
Сообщений: 58
Регистрация: 6-07-12
Из: г.Нижний Новгород
Пользователь №: 72 651

|
Цитата(scifi @ Apr 24 2016, 21:04)  А том вроде бы есть HSI14 специально для АЦП. Не подойдёт? Нет тайминг нужен точный и синхронный с таймерами и DAC. Вот подумываю для USB HSI48 задействовать и поднять тактовую ядра, либо вообще оставить ADC от 24MHz. На 24 MHz время выборки увеличилось (как доля от 2 us), а время конверсии уменьшилось, качество данных стало лучше, правда пока не понял на сколько, но вижу данные вообще не плавают. Потребление только надо на 24MHz и 12MHz сравнить. Случайно включил ADC на 48MHz, как ни странно, но тоже работает.
|
|
|
|
|
Apr 24 2016, 18:26
|
Гуру
     
Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136

|
Цитата(seniorandre @ Apr 24 2016, 21:19)  На 24 MHz время выборки увеличилось (как доля от 2 us), а время конверсии уменьшилось, качество данных стало лучше, правда пока не понял на сколько, но вижу данные вообще не плавают. Потребление только надо на 24MHz и 12MHz сравнить. Случайно включил ADC на 48MHz, как ни странно, но тоже работает. Есть некий риск, конечно. Кто знает, что внутри у этого АЦП? В диапазоне температур и напряжений питания может что-то вылезти. А может и не вылезти...
|
|
|
|
|
Apr 24 2016, 18:34
|
Участник

Группа: Свой
Сообщений: 58
Регистрация: 6-07-12
Из: г.Нижний Новгород
Пользователь №: 72 651

|
Цитата(scifi @ Apr 24 2016, 21:26)  Есть некий риск, конечно. Кто знает, что внутри у этого АЦП? Проект собственно не коммерческий, поэтому можно и вылезти за пределы ТТХ. У меня такое ощущение, что у буржуев старого оборудования и технологий нет, вот им и приходится старые чипы на новых технологиях выпускать. А параметры приходится занижать что бы линейку поддерживать. Маркетинг блин... Это косвенно подтверждается тем что ядро народ на 3-х кратной частоте запускает, а оно все работает. Должен быть и от маркетинга хоть какой-то выхлоп для нас  ST в CubeMx не дают тактовую поднять, а через регистры что хошь делай.
Сообщение отредактировал seniorandre - Apr 24 2016, 18:36
|
|
|
|
Сообщений в этой теме
seniorandre STM32F072 непонятный эффект с выборкой ADC Apr 24 2016, 05:48 ViKo Возможно, пересылка по DMA тоже тактов требует. Apr 24 2016, 07:49 scifi Цитата(seniorandre @ Apr 24 2016, 08:48) ... Apr 24 2016, 08:25 seniorandre Цитата(scifi @ Apr 24 2016, 11:25) Откуда... Apr 24 2016, 17:06 Aner Да, третий битик задействовали, не как у старших S... Apr 24 2016, 11:04    jcxz Цитата(seniorandre @ Apr 25 2016, 00:34) ... Apr 26 2016, 03:21  amiller Цитата(seniorandre @ Apr 24 2016, 22:19) ... Apr 26 2016, 04:10 KnightIgor Цитата(seniorandre @ Apr 24 2016, 06:48) ... Apr 25 2016, 20:03 seniorandre Цитата(KnightIgor @ Apr 25 2016, 23:03) А... Apr 26 2016, 14:44  jcxz Цитата(seniorandre @ Apr 26 2016, 20:44) ... May 1 2016, 06:47
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|