Суть проста, на PA6 висит датчик температуры, нужно снять напряжение.
При запуске выдает результат 1.63...--1.73...В
Листинг
Кто поможет, могу выдать функцию обмена и обработки результатов (с учетом перегрузов каналов) STM32 с АЦП AD7738ARZ
Не работает АЦП STM32F103RCT6
Не работает АЦП STM32F103RCT6
- Вложения
-
- 1.PNG
- (86.71 КБ) 256 скачиваний
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Не работает АЦП STM32F103RCT6
Настройте инжектированный канал. В любой момент когда в программе нужно будете без всяких прерываний и глобальных переменных прямо из регистра АЦП читать измеренное значение. Вот, например, для 4-х каналов сразу.
Код: Выделить всё
//Настройка АЦП2 на 4 инжектированых канала 0,3,5,15
ADC2->CR1 = 0;
ADC2->CR2 = ADC_CR2_ADON | ADC_CR2_CAL;
while(ADC2->CR2 & ADC_CR2_CAL);
ADC2->CR2 = ADC_CR2_ADON | ADC_CR2_JEXTSEL | ADC_CR2_JEXTTRIG | ADC_CR2_CONT;
ADC2->CR1 = ADC_CR1_SCAN | ADC_CR1_JAUTO;
ADC2->JSQR = _VAL2FLD(ADC_JSQR_JL,3)
| _VAL2FLD(ADC_JSQR_JSQ1,0)
| _VAL2FLD(ADC_JSQR_JSQ2,3)
| _VAL2FLD(ADC_JSQR_JSQ3,5)
| _VAL2FLD(ADC_JSQR_JSQ4,15);
ADC2->SMPR2 = _VAL2FLD(ADC_SMPR2_SMP1,ADC_SMPT_239d5)
| _VAL2FLD(ADC_SMPR2_SMP2,ADC_SMPT_239d5)
| _VAL2FLD(ADC_SMPR2_SMP4,ADC_SMPT_239d5)
| _VAL2FLD(ADC_SMPR2_SMP6,ADC_SMPT_239d5);
ADC2->CR2 |= ADC_CR2_JSWSTART;
Re: Не работает АЦП STM32F103RCT6
Спасибо за ответ, но, все таки, чисто из принципа, хотелось бы понять, что именно не так
Плюс, одно из требований к ПО, программа без использования HAL, LL и других библиотек, только регистры, максимум битовыее маски
Плюс, одно из требований к ПО, программа без использования HAL, LL и других библиотек, только регистры, максимум битовыее маски
Re: Не работает АЦП STM32F103RCT6
с электроникой все верно? - может, что на ацп пришло то он и намерил.
для температуры имеет смысл использовать медленное преобразование
(файл не качал )
для температуры имеет смысл использовать медленное преобразование
(файл не качал )
Re: Не работает АЦП STM32F103RCT6
по электронике и по прорблеме в целом
https://yadi.sk/i/2a7lctzmox8mwA
Добавлено after 3 hours 30 minutes 3 seconds:
Аналогичный результат, закрадывается мысля о смерти АЦП
Попробую залить на плату приемного устройства... посмотрим
Добавлено after 2 hours 27 minutes 39 seconds:
Вопрос решен, мертв АЦП STM
https://yadi.sk/i/2a7lctzmox8mwA
Добавлено after 3 hours 30 minutes 3 seconds:
Аналогичный результат, закрадывается мысля о смерти АЦП
Попробую залить на плату приемного устройства... посмотрим
Настройте инжектированный канал. В любой момент когда в программе нужно будете без всяких прерываний и глобальных переменных прямо из регистра АЦП читать измеренное значение. Вот, например, для 4-х каналов сразу.
Код: Выделить всё
//Настройка АЦП2 на 4 инжектированых канала 0,3,5,15
ADC2->CR1 = 0;
ADC2->CR2 = ADC_CR2_ADON | ADC_CR2_CAL;
while(ADC2->CR2 & ADC_CR2_CAL);
ADC2->CR2 = ADC_CR2_ADON | ADC_CR2_JEXTSEL | ADC_CR2_JEXTTRIG | ADC_CR2_CONT;
ADC2->CR1 = ADC_CR1_SCAN | ADC_CR1_JAUTO;
ADC2->JSQR = _VAL2FLD(ADC_JSQR_JL,3)
| _VAL2FLD(ADC_JSQR_JSQ1,0)
| _VAL2FLD(ADC_JSQR_JSQ2,3)
| _VAL2FLD(ADC_JSQR_JSQ3,5)
| _VAL2FLD(ADC_JSQR_JSQ4,15);
ADC2->SMPR2 = _VAL2FLD(ADC_SMPR2_SMP1,ADC_SMPT_239d5)
| _VAL2FLD(ADC_SMPR2_SMP2,ADC_SMPT_239d5)
| _VAL2FLD(ADC_SMPR2_SMP4,ADC_SMPT_239d5)
| _VAL2FLD(ADC_SMPR2_SMP6,ADC_SMPT_239d5);
ADC2->CR2 |= ADC_CR2_JSWSTART;
Добавлено after 2 hours 27 minutes 39 seconds:
Вопрос решен, мертв АЦП STM
Re: Не работает АЦП STM32F103RCT6
16 аналоговых входа мертвы, причем, как цифровые входы пашут
Добавлено after 9 minutes 27 seconds:
Короче, напишу, наверное, статью по сигма-дельта АЦП AD7738, а то никакой толковой информации по ней не нашел, в свое время
Добавлено after 9 minutes 27 seconds:
Короче, напишу, наверное, статью по сигма-дельта АЦП AD7738, а то никакой толковой информации по ней не нашел, в свое время
Re: Не работает АЦП STM32F103RCT6
Вопрос решен, мертв АЦП STM
А порты настроенные как вход аналоговый ?