Перейти к содержанию
    

STM32F103 проблема с АЦП

Добрый день,

 

Столкнулся со следующей проблемой с АЦП на STM32F103VBT6 - при достижении некоторого напряжения на входе АЦП данные с него не изменяются при последующем увеличении напряжения. Код, на котором застывают показания - 1023 (0x3FF) (вх. напряжение 0.63 В), затем при увеличении напряжения код скачком увеличивается до 1046. Опорное напряжение - внешнее 2.5 В, формирует AD.

 

Алексей.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я не сталкивался, но сходу проверил бы несколько вещей:

- не превышена ли тактовая частота АЦП?

- процедуру самокалибровки делать не забываете?

- нет ли шума в цепи питания Vdda?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я не сталкивался, но сходу проверил бы несколько вещей:

- не превышена ли тактовая частота АЦП?

- процедуру самокалибровки делать не забываете?

- нет ли шума в цепи питания Vdda?

 

Как задать частоту АЦП не нашел, используются настройки по умолчанию.

Самокалибровку делаю.

Vdda чистый.

 

Проблема проявляется только при напряжении на входе 0.64 В, грубо говоря, на одном сравнительно узком участке диапазона входного напряжения.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Осциллограмму входного сигнала - в студию!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может вход не настроен на аналоговый режим? В этом случае как раз около половины питания во входных цепях должен появляться сквозной ток, возможно он как-то влияет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Осциллограмму входного сигнала - в студию!

 

Сигнал подается прямо на вход АЦП от калибратора Fluke 715. Осциллограмма представляет собой прямую линию, уровень шумов ~20 мВ. Сигнал медленно изменяется с помощью калибратора.

 

Может вход не настроен на аналоговый режим? В этом случае как раз около половины питания во входных цепях должен появляться сквозной ток, возможно он как-то влияет.

 

                /* Configure P as analog input -------------------------*/
        GPIO_StructInit(&GPIO_InitStructure);
        GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3| GPIO_Pin_4| GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7);
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
        GPIO_Init(GPIOA, &GPIO_InitStructure);
    
        GPIO_StructInit(&GPIO_InitStructure);
        GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_0 | GPIO_Pin_1);
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
        GPIO_Init(GPIOB, &GPIO_InitStructure);
    
        GPIO_StructInit(&GPIO_InitStructure);
        GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3| GPIO_Pin_4| GPIO_Pin_5);
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
        GPIO_Init(GPIOC, &GPIO_InitStructure);

 

Все пины настроены как аналоговые входы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1023 - это не половина, а четверть диапазона.

Тогда нужно найти, какой частотой тактируется.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я голосую за превышение частоты тактирования АЦП.

Частота равна частоте APB2, делённой на прескалер АЦП. Поищите у себя что-то типа такого:

    RCC->CFGR = (RCC->CFGR & ~(RCC_CFGR_HPRE | RCC_CFGR_PPRE2 | RCC_CFGR_PPRE1 | RCC_CFGR_ADCPRE)) |
            RCC_CFGR_HPRE_DIV1 | RCC_CFGR_PPRE2_DIV1 | RCC_CFGR_PPRE1_DIV2 | RCC_CFGR_ADCPRE_DIV6;

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я голосую за превышение частоты тактирования АЦП.

Частота равна частоте APB2, делённой на прескалер АЦП. Поищите у себя что-то типа такого:

 

Так оно и есть. После деления частоты проблема пропала. Спасибо!

 

 

А сам АЦП на нужную разрядность настроили?

 

Не нашел такой настройки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ага, посмотрел, у 1хх действительно нет, настройка разрядности только у 2хх.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Всем день добрый!

Спрошу тут:

Камень: STM32F103RCT6. По входу АЦП стоит резистор 10кОм на землю и ничего больше не подключено. Значения АЦП "скачут" в диапазоне 0...0х10 бит. При подаче на вход напряжения, меряет корректно. Собственно вопрос: Почему нет 0, при отсутствии сигнала. От настроек может быть?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Камень: STM32F103RCT6. По входу АЦП стоит резистор 10кОм на землю и ничего больше не подключено. Значения АЦП "скачут" в диапазоне 0...0х10 бит. При подаче на вход напряжения, меряет корректно. Собственно вопрос: Почему нет 0, при отсутствии сигнала. От настроек может быть?

Правильно заданный вопрос содержит половину ответа.

А звучать правильный будет так:

Камень: STM32F103RCT6. По входу АЦП стоит АНТЕННА с резистором 10кОм на землю и ничего больше не подключено. Значения АЦП "скачут" в диапазоне 0...0х10 бит.....

 

Вобщем, смотрите разводку.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кстати, в зависимости от настроек АЦП (а именно время выборки) 10 кОм может быть вовсе не таким уж маленьким сопротивлением. Соответственно, будет прыгать туда-сюда в зависимости от того, что там происходит на ёмкости выборки между преобразованиями.

post-25136-1477563927_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Блин, нежные они какие-то, эти F103 - отлаживался на макете, коснулся пинцетом одного неподключенного аналогового входа в разьеме (оттуда он через 1к и 0.1мкф в землю идет на проц), и видимо от статики при касании (хотя, искры вроде небыло).- все перезапустилось, и при этом у проца АЦП вышибло - вся программа работает, только с АЦП все нули читаются.

Перепаял проц - все заработало. На всякий случай, повесил 3.6в зенеры на все, что за пределы платы выходит.

Ни с одним другим СТМ32, ЛПЦ или ПИК - никогда такого небыло! Да еще чтобы через RC-цепочку!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...