Ruslan-maniak 0 17 июля, 2018 Опубликовано 17 июля, 2018 (изменено) · Жалоба Приветствую. Пытаюсь запустить все АЦП каналы доступные на контроллере STM32F103ZCT (21 канал: 15 каналов в ADC1 и 6 каналов в ADC3) при одновременной работе через ДМА в циклическом режиме. То есть выборка происходит все время для всех каналов. И столкнулся со следующей проблемой. Очень большой шум в каналах (но не во всех). Даже если их накоротко посадить на землю, то на некоторых каналах (особенно у ADC3) измерения достигают 100-150 LSB. При чем эти значения не периодические, а постоянны, то есть ноль в канале я вижу реже чем значение выше например 50 LSB. При этом у каждого канала свой шум и он также зависит от Rank'а присвоенного при конфигурировании канала. Частота тактирования АЦП = 36МГц. Если её опускать то ничего не меняется. Время сэмплирования стоит максимальное ADC_SampleTime_239Cycles5. Подскажите как получить адекватные значения по всем каналам? Кто сталкивался с такой проблемой? Или СТМ на это не способен в принципе и стоит сразу смотреть в сторону внешних АЦП? Изменено 17 июля, 2018 пользователем Ruslan-maniak Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
uriy 4 17 июля, 2018 Опубликовано 17 июля, 2018 · Жалоба При подключении входов к питанию значение с АЦП тоже не доходит до 4096 и составляет порядка 3900? Тогда вы забыли сделать калибровку. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan-maniak 0 17 июля, 2018 Опубликовано 17 июля, 2018 · Жалоба При подключении входов к питанию значение с АЦП тоже не доходит до 4096 и составляет порядка 3900? Тогда вы забыли сделать калибровку. До 4095 не доходит. В районе 4000 LSB. плюс-минус. Калибровку произвожу ADC_Cmd(adc->number, ENABLE); // калибровка АЦП ADC_ResetCalibration(adc->number); while(ADC_GetResetCalibrationStatus(adc->number)); ADC_StartCalibration(adc->number); while(ADC_GetCalibrationStatus(adc->number)); ADC_SoftwareStartConvCmd(adc->number, ENABLE); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 17 июля, 2018 Опубликовано 17 июля, 2018 · Жалоба Vref смотрели, нормальное, не шумит, не возбуждается, не звенит? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan-maniak 0 17 июля, 2018 Опубликовано 17 июля, 2018 · Жалоба Vref смотрели, нормальное, не шумит, не возбуждается, не звенит? Действительно, там шумновато. амплитуда шумов около 0.05 В. Попробую докинуть ёмкости. Но мне кажется, дело не только в шуме. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 17 июля, 2018 Опубликовано 17 июля, 2018 · Жалоба Но мне кажется, дело не только в шуме. В питании в целом? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 26 17 июля, 2018 Опубликовано 17 июля, 2018 · Жалоба . . . Даже если их накоротко посадить на землю, то на некоторых каналах (особенно у ADC3) измерения достигают 100-150 LSB. . . .Может в разводке дело, по GND переток под процессором ? Соблюдено, то что в даташите "General PCB design guidelines" ? ps :) ну, и банальная промывка платы рекомендуется. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pnp_mechanic 2 17 июля, 2018 Опубликовано 17 июля, 2018 · Жалоба В АЦП STM32 нет входного буфера. Во время выборки через ключ подключается конденсатор, который был подключен к предыдущему каналу. Возможно проблемы в в входных цепях вашей схемы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan-maniak 0 18 июля, 2018 Опубликовано 18 июля, 2018 · Жалоба Некоторые дополнения. Смотрите, у меня 20 идентичных по схемотехнике каналов. Все 20 каналов идут через повторители на ОУ. Перед ОУ стоят цифровые потенциометры которые в данный момент прижимают сигнал к земле накоротко. Если замерить мультиметром то сопротивление получается там около 200-300 Ом. Так вот сейчас для эксперимента запускаю измерения только для одного канала циклически через ДМА (буфер на 10 замеров) и каждую миллисекунду смотрю что в буфере. И например на канале ADC1-15 среднее значение этого буфера всегда равно нулю, а максимальный пик фиксируется за длительное время не более 10 LSB. Если же взять канал ADC1-10 то там картина разительно отличается. Среднее значение буфера скачет от 20 до 80 LSB. А максимальный пик фиксируется практически сразу в районе 180 LSB, и постепенно доходит до 200 LSB. Даже если я замыкаю напрямую землю контроллера и пин АЦП. На мой взгляд такое поведение вряд ли можно объяснить (оправдать) неправильной разводкой (разводка отличается лишь тем что длина дорожки от ОУ до АЦП больше на 4 см), непромывкой, или проблемами с питанием. Кто что думает? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 166 18 июля, 2018 Опубликовано 18 июля, 2018 · Жалоба Да не над чем тут думать, кроме очередной страницы ни о чём. Когда таки соизволите додумать выложить схему и разводку — вот тогда подумаем подумать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 26 18 июля, 2018 Опубликовано 18 июля, 2018 · Жалоба . . . Перед ОУ стоят цифровые потенциометры которые в данный момент прижимают сигнал к земле накоротко. Если замерить мультиметром то сопротивление получается там около 200-300 Ом. . . .Накоротко - это перемычка входа на GND, все остальное от линии отключено. Если стоят повторители (как оказалось), зачем время выборки максимальное ? Поставьте среднее, минимальное. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 119 18 июля, 2018 Опубликовано 18 июля, 2018 · Жалоба Калибровку произвожу ADC_Cmd(adc->number, ENABLE); // калибровка АЦП ADC_ResetCalibration(adc->number); "Если ничего не помогает - прочтите, наконец, инструкцию"... Note: 1 It is recommended to perform a calibration after each power-up. 2 Before starting a calibration the ADC must have been in power-off state (ADON bit = ‘0’) for at least two ADC clock cycles. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Wasserati 0 18 июля, 2018 Опубликовано 18 июля, 2018 · Жалоба Частота тактирования АЦП = 36МГц. Максимальная частота тактирования АЦП - 14 МГц. Отсюда и могу быть проблемы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться