Шаманъ 0 16 февраля, 2017 Опубликовано 16 февраля, 2017 · Жалоба Приветствую всех! Обнаружил такую засаду (которая оказалась частично документирована в errata на этот камушек). Началось с того, что внесение в код некоторых изменений (не связаны с работой АЦП) приводило к росту шума АЦП где-то в 6 раз :1111493779: . Из-за чего устройство переставало нормально работать. При этом код этот к АЦП никакого отношения не имел :), ну а закончилось, когда изменение кода в той части, которая никогда не выполняется дало тот же результат :laughing: При этом единственное, что изменилось в работающей части кода это некоторые части кода сдвинулись на 4 байта. После этого подозрения упали на модуль флеш памяти и ART. Отключение "префетчера" полностью решило вопрос с шумом АЦП. В принципе примерно то же описано в AN4073. Собственно это вступление, которое может кому-то будет полезно :) Теперь вопрос - в более старших моделях есть специальные биты ADCDC1/ADCxDC2 которые позволяют эту проблему пофиксить и оставить префетчер включенным, в 407х их нет. В принципе мне хватает производительности и с отключенным префетчером, но все же, так сказать на будущее - кто-то боролся с этим безобразием в 407м? Если да, то какой был результат и как он был достигнут (если не секрет)? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
igorsh88 0 4 апреля, 2018 Опубликовано 4 апреля, 2018 · Жалоба Аналогичная ситуация, только отключение prefetch не помогает Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 4 апреля, 2018 Опубликовано 4 апреля, 2018 · Жалоба Речь идёт о FLASH_ACR_PRFTEN? Я его отключил по другой причине: еррата говорит, что в ревизии А эта штука глючит, и я это наблюдал. Опять же, скорости хватает, зачем копать глубже? :laughing: Кстати, говорят, медианная фильтрация эффективно срезает выбросы, так что изучите возможность применения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 10 4 апреля, 2018 Опубликовано 4 апреля, 2018 · Жалоба Если да, то какой был результат и как он был достигнут (если не секрет)? FLASH_ACR_PRFTEN отключал, а для отсчетов делал усреднение по схеме N-X (8-4). Звук (речь) становился гораздо лучше. FLASH->ACR = 0 | (0 << FLASH_ACR_PRFTEN) | (1 << FLASH_ACR_DCEN) | (1 << FLASH_ACR_ICEN) | (6 << FLASH_ACR_LATENCY); #define MIC_N (8) #define MIC_X (4) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
amaora 20 4 апреля, 2018 Опубликовано 4 апреля, 2018 · Жалоба В STM32F405 замечал повышенный шум если во время преобразования идет выполнение. Обычно делаю преобразование по событию таймера когда МК находится во сне. Префетч отключать не пробовал, с выполнение из RAM не сравнивал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
igorsh88 0 11 апреля, 2018 Опубликовано 11 апреля, 2018 · Жалоба Делаю DDC приёмник на STM32F407 в 100 корпусе. Аналоговой сигнал через буферный повторитель, собранный на AD823, поступает на вход 10 канала ADC1 (PC0). Запуск АЦП по таймеру, частота дискретизации 2048000 выборок в секунду. Далее, по накоплению N отсчетов АЦП, данные по каналу DMA поступают в double буфер, откуда уже в прерывании по тому же DMA происходить их снос на ноль и децимация. На выходу получаю полосу в 32 кГц в IQ отсчетах и передаю их на комп по обычному UARTу. Проблема в тому что, при выборе определенного N, появляются искажения в исходном сигнале на частотах кратных 2048000/N Гц. Питание от USB, фильтры, опора, киндеры все сделал как надо. Пробовал решать проблему отключением буфера предвыборки - не помогает, точнее помехи стают меньше но более размазаны по полосе. Сейчас планирую переделать проект под STM32F7, там есть специальные настройку наподобие битовых полей ADCDC1 и ADCxDC, которые отвечают за снижение шумов вызванные работой буфера предвыборки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
amiller 2 11 апреля, 2018 Опубликовано 11 апреля, 2018 · Жалоба частота дискретизации 2048000 выборок в секунду. Вы загнали АЦП практически под теоретический предел по частоте. При максимальной тактовой 36МГц для АЦП и с минимальным временем выборки из одного канала АЦП можно выжать 2116кГц для режима 12 бит. А если импульсы синхронизации будут идти чаще, чем длительность преобразования, возможны нехорошие последствия. Рекомендую снизить частоту до более разумной для этого кристалла и увеличить время выборки. Если нужна всё же нужна большая скорость к Вашим услугам double and triple mode. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
igorsh88 0 11 апреля, 2018 Опубликовано 11 апреля, 2018 · Жалоба Предел по частоте дискретизации равен 2400000. (36 МГц делим на 15, где 15 это сума 12 с 3) тоесть запас есть. Пробовал даже на 2.304 МГц запускать - все норм. За совет спасибо, попробую triple или double mode но не думаю, что это решит проблему с шумами на этом камне. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Шаманъ 0 11 апреля, 2018 Опубликовано 11 апреля, 2018 · Жалоба Кстати, говорят, медианная фильтрация эффективно срезает выбросы, так что изучите возможность применения. Она используется изначально, ибо в том применении все очень плотно с шумами АЦП было. P.S. Вот уж не думал, что через год кто-то напишет в тему :) Да, девайс давно и успешно работает с отключенным префетчером. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
amiller 2 12 апреля, 2018 Опубликовано 12 апреля, 2018 · Жалоба Предел по частоте дискретизации равен 2400000. (36 МГц делим на 15, где 15 это сума 12 с 3) тоесть запас есть. Пробовал даже на 2.304 МГц запускать - все норм. За совет спасибо, попробую triple или double mode но не думаю, что это решит проблему с шумами на этом камне. Странно, а даташит на этот камень отводит при внешней синхронизации 17 тактов на одно преобразование, а не 15 тактов. Причём со сноской: Guaranteed by characterization results, not tested in production. По моему Вы слишком оптимистичны в этом направлении. Когда мне нужно было обеспечить 2,5МГц дискретизацию, я перешел на double mode. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
igorsh88 0 12 апреля, 2018 Опубликовано 12 апреля, 2018 · Жалоба Все правильно, 17 тактов при внешней синхронизации, 15 при внутренней от таймера в моем случае. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 12 апреля, 2018 Опубликовано 12 апреля, 2018 · Жалоба Все правильно, 17 тактов при внешней синхронизации, 15 при внутренней от таймера в моем случае. Внутренний таймер в качестве триггера - это тот же внешний триггер в этом контексте. Имеется в виду внешний по отношению к АЦП. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
golf2109 0 13 апреля, 2018 Опубликовано 13 апреля, 2018 · Жалоба а для серии F7 также такое набдюдается? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Шаманъ 0 14 апреля, 2018 Опубликовано 14 апреля, 2018 (изменено) · Жалоба а для серии F7 также такое набдюдается? Я ж в первом сообщении про это писал: "...в более старших моделях есть специальные биты ADCDC1/ADCxDC2 которые позволяют эту проблему пофиксить и оставить префетчер включенным". Подробности смотрите в AN4073. На практике об F7 ничего сказать не могу, т.к. задач требующих очень малые шумы АЦП на F7 не попадалось. Изменено 14 апреля, 2018 пользователем Шаманъ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
igorsh88 0 17 апреля, 2018 Опубликовано 17 апреля, 2018 · Жалоба Вы слишком оптимистичны в этом направлении. Когда мне нужно было обеспечить 2,5МГц дискретизацию, я перешел на double mode. Попробовал double mode для АЦП. Частота дискретизации отдельного АЦП уменшылась соответственно вдвое и стала равной 1024000 выб/с, однако на шумы это никак не повлияло, что характер, что уровень не изменился. Отключение буфера предвыборки не сильно помогает. . В качестве эксперимента также запускал в triple mode АЦП, по этом шумы как были так и остались, а вот чувствительность АЦП к слабым сигналам (менее 2 мВ) упала примерно в четверо, как будто АЦП стало 10 битным. . Далее буду пробовать все сделать на STM32F7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться