scifi 1 26 февраля, 2014 Опубликовано 26 февраля, 2014 · Жалоба не могу найти апнот по теме разводки питания цифрового и аналогового для STM32F10x, ссылкой не поделитесь? AN2586 Но там практически только повторение сведений из даташита. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 26 февраля, 2014 Опубликовано 26 февраля, 2014 · Жалоба ссылкой не поделитесь? Ссылок не дам, а принципы везде одинаковые - как можно короче, шире (кроме инвертирующих входов усилителей). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zWitCh 0 26 февраля, 2014 Опубликовано 26 февраля, 2014 · Жалоба продолжил свои изыскания, взял я совершенно другую плату (на STM32F103RBT6): проводами на один из входов подключил источник питания регулируемый, и начал плавно его регулировать попутно записывая все измерения (код программы тот же что и ранее), вот что вышло: Вроде все хорошо, помехи и выбросы есть и на осциллограмме, они связаны с тем что источник плохой и длинными проводами подключен, но если рассмотреть участок вблизи моей злополучной точке "1023" то мы увидим все ту же проблему: Тут хорошо видно что вблизи точки "1023" (значение выдаваемое АЦП) полностью отсутствуют значения в диапазоне от 1024 до 1048 и все они заменяются на мои 1023! Дальше я просто посмотрел а АЦП хоть когда либо выдает ли мне на выходе цифры в диапазоне 1024 - 1048, и выяснились что нет, на двух совершенно разных платах и немного разных процессорах... Обнаружив такую особенность я достал старую добрую STM32-Discovery и запустил тот же код на ней, там все ок, таких особенностей работы АЦП не заметил... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 26 февраля, 2014 Опубликовано 26 февраля, 2014 · Жалоба Вроде все хорошо, помехи и выбросы есть и на осциллограмме, они связаны с тем что источник плохой и длинными проводами подключен, но если рассмотреть участок вблизи моей злополучной точке "1023" то мы увидим все ту же проблему: ... Обнаружив такую особенность я достал старую добрую STM32-Discovery и запустил тот же код на ней, там все ок, таких особенностей работы АЦП не заметил... Так не в источнике питания ли дело? Что, если подать питание через дроссель, LC фильтр? Там помехи бегают... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zWitCh 0 26 февраля, 2014 Опубликовано 26 февраля, 2014 · Жалоба Так не в источнике питания ли дело? Что, если подать питание через дроссель, LC фильтр? Там помехи бегают... Интересные помехи которые распределены во всем диапазоне равномерно а в определенных точках отсутствуют и сигнал в них идеально гладкий, ну да ладно, пошел дальше в изысканиях, немного переписал код, теперь я просто считаю сколько раз я с выхода АЦП имею определенное значение, а на вход подал просто шум, ниже код и результат. uint16_t arr[4096], indx; int main(void) { uint32_t i; GPIO_InitTypeDef PORT; // Initialize USART1 (для рабочей платы) /* USART_InitTypeDef USART_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); AFIO->MAPR |= AFIO_MAPR_USART1_REMAP; PORT.GPIO_Pin = GPIO_Pin_6; PORT.GPIO_Speed = GPIO_Speed_2MHz; PORT.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOB, &PORT); //*/ // Initialize USART1 (для стартика MINI_STM32_V3) USART_InitTypeDef USART_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); PORT.GPIO_Pin = GPIO_Pin_9; PORT.GPIO_Speed = GPIO_Speed_2MHz; PORT.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOA, &PORT); USART_InitStructure.USART_BaudRate = 115200; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Tx; USART_Init(USART1, &USART_InitStructure); USART_Cmd(USART1, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC , ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2ENR_ADC1EN, ENABLE); ADC1->CR2 |= ADC_CR2_CAL; while (!(ADC1->CR2 & ADC_CR2_CAL)) ADC1->CR1 |= ADC_CR1_SCAN; ADC1->CR2 |= ADC_CR2_EXTSEL; ADC1->CR2 |= ADC_CR2_EXTTRIG; ADC1->SQR3 |= (ADC_SQR3_SQ1_3|ADC_SQR3_SQ1_2|ADC_SQR3_SQ1_1|ADC_SQR3_SQ1_0); // вход AN15 ADC1->CR2 |= ADC_CR2_ADON; ADC1->CR2 |= ADC_CR2_SWSTART; while (!(ADC1->SR & ADC_SR_EOC)); _debug_print_str("\r\n *** TEST *** \r\n"); while(1) { ADC1->CR2 |= ADC_CR2_SWSTART; while (!(ADC1->SR & ADC_SR_EOC)); indx = ADC1->DR; if(arr[indx] < 0x1FFF) arr[indx]++; if(arr[4090] > 100) break; } i = 4096; while(i--){ _debug_print_num(i); _debug_print_str(";"); _debug_print_num(arr[i]); _debug_print_str(";\r\n"); } while(1); } И вот что мы имеем на выходе: Тут отчетливо видно что есть значения которые АЦП на выходе не выдает никогда, я лично очень сомневаюсь что тот сигнал что я подавал на вход (шум), действительно имеет такие дырки (я его формировал крутя потенциометр в зад - перед раз 20, в конце выкрутил в крайнее положение и мой код отследил приход значений соответствующих крайнему положению и выдал результат в UART). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 26 февраля, 2014 Опубликовано 26 февраля, 2014 · Жалоба Интересные помехи которые распределены во всем диапазоне равномерно а в определенных точках отсутствуют и сигнал в них идеально гладкий, ну да ладно... Ничего не ладно. Вы знаете, как помехи по питанию влияют на АЦП? Да он у вас там не может алгоритм последовательного приближения выполнить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tanya 4 26 февраля, 2014 Опубликовано 26 февраля, 2014 · Жалоба Так не в источнике питания ли дело? Что, если подать питание через дроссель, LC фильтр? Там помехи бегают... Источник бы везде. Он ведь не знает про цифры внутри... А вот если построить график напряжение - код-напряжение(как будто подсоединен виртуальный ЦАП), то что будет? Будут ли две прямые со сдвигом - до и после магического числа? Если так, то калибровка внутри сбита - этот разряд значительно больше нормального и компаратор уже не добавляет несколько младших. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 26 февраля, 2014 Опубликовано 26 февраля, 2014 · Жалоба Источник бы везде. Он ведь не знает про цифры внутри... На Дискавери нет источника. Она от USB питается. И провалов в кодах с АЦП, по уверению автора, на ней нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 26 февраля, 2014 Опубликовано 26 февраля, 2014 · Жалоба Ничего не ладно. Вы знаете, как помехи по питанию влияют на АЦП? Да он у вас там не может алгоритм последовательного приближения выполнить. +1. Кстати, в том же AN2586 сказано, что для фильтрации можно добавить ferrite bead перед Vdda и резистор перед Vref. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zWitCh 0 26 февраля, 2014 Опубликовано 26 февраля, 2014 · Жалоба На Дискавери нет источника. Она от USB питается. И провалов в кодах с АЦП, по уверению автора, на ней нет. на дискавери есть источник: L1117 Series но это не суть, моя плата по схемотехники запитана аналогичным с дискавери образом, через линейный преобразователь, Помехи идет в лилии сигнальной, уровень этих помех мал что видно на графике, да и исходно я обнаружил данный феномен на плате где сигнал не так зашумлен, мы сейчас обсуждаем на сколько чистый я сигнал оцифровываю, но я сейчас в рамках проверки АЦП оцифровываю шум, шум этот малой амплитуды (меньше чем питание АЦП), так что не очень понял причем тут помехи по питанию, в начале топика я уже писал, что питание проверил первым, в нем нет выбросов и провалов. +1. Кстати, в том же AN2586 сказано, что для фильтрации можно добавить ferrite bead перед Vdda и резистор перед Vref. Господа, пожалуйста будте внимательнее, у меня все блокирующие конденсаторы и дросели у VADD стоят, в цепи питания НЕТ ПОМЕХ! Зашумел помехой я сигнал который оцифровываю специально для эксперимента, что бы поиметь на выходе с АЦП более менее нормальное распределение! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tanya 4 26 февраля, 2014 Опубликовано 26 февраля, 2014 · Жалоба На Дискавери нет источника. Она от USB питается. И провалов в кодах с АЦП, по уверению автора, на ней нет. А разве автор не руками выставляет измеряемое? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 26 февраля, 2014 Опубликовано 26 февраля, 2014 · Жалоба ...так что не очень понял причем тут помехи по питанию, в начале топика я уже писал, что питание проверил первым, в нем нет выбросов и провалов. ... Господа, пожалуйста будте внимательнее, у меня все блокирующие конденсаторы и дросели у VADD стоят, в цепи питания НЕТ ПОМЕХ! Зашумел помехой я сигнал который оцифровываю специально для эксперимента, что бы поиметь на выходе с АЦП более менее нормальное распределение! А это не вы писали: "Вроде все хорошо, помехи и выбросы есть и на осциллограмме, они связаны с тем что источник плохой и длинными проводами подключен"? Чудеса... :laughing: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zWitCh 0 26 февраля, 2014 Опубликовано 26 февраля, 2014 · Жалоба Источник бы везде. Он ведь не знает про цифры внутри... А вот если построить график напряжение - код-напряжение(как будто подсоединен виртуальный ЦАП), то что будет? Будут ли две прямые со сдвигом - до и после магического числа? Если так, то калибровка внутри сбита - этот разряд значительно больше нормального и компаратор уже не добавляет несколько младших. вот тут была картинка в самом начале: там наглядно показано что выдает (оцифровывает АЦП), на входе напряжение при этом меняется линейно (проверено осциллографом на хорошей развертке) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 26 февраля, 2014 Опубликовано 26 февраля, 2014 · Жалоба А разве автор не руками выставляет измеряемое? А что? :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tanya 4 26 февраля, 2014 Опубликовано 26 февраля, 2014 · Жалоба Господа, пожалуйста будте внимательнее, у меня все блокирующие конденсаторы и дросели у VADD стоят, в цепи питания НЕТ ПОМЕХ! А вход опорного напряжения имеет адекватный конденсатор? А на входе? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться