Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

Не работает АЦП STM32F103RCT6

Пт июн 05, 2020 21:06:44

Суть проста, на PA6 висит датчик температуры, нужно снять напряжение.
При запуске выдает результат 1.63...--1.73...В

Листинг
PWM_Temp.h
(4.27 KiB) Скачиваний: 217


Кто поможет, могу выдать функцию обмена и обработки результатов (с учетом перегрузов каналов) STM32 с АЦП AD7738ARZ
Вложения
1.PNG
(86.71 KiB) Скачиваний: 234

Re: Не работает АЦП STM32F103RCT6

Пт июн 05, 2020 22:48:08

Настройте инжектированный канал. В любой момент когда в программе нужно будете без всяких прерываний и глобальных переменных прямо из регистра АЦП читать измеренное значение. Вот, например, для 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

Сб июн 06, 2020 01:52:17

Спасибо за ответ, но, все таки, чисто из принципа, хотелось бы понять, что именно не так
Плюс, одно из требований к ПО, программа без использования HAL, LL и других библиотек, только регистры, максимум битовыее маски

Re: Не работает АЦП STM32F103RCT6

Сб июн 06, 2020 07:20:38

с электроникой все верно? - может, что на ацп пришло то он и намерил.
для температуры имеет смысл использовать медленное преобразование
(файл не качал )

Re: Не работает АЦП STM32F103RCT6

Сб июн 06, 2020 17:09:38

по электронике и по прорблеме в целом
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

Сб июн 06, 2020 17:12:09

Вопрос решен, мертв АЦП STM

Что прям все три?

Re: Не работает АЦП STM32F103RCT6

Сб июн 06, 2020 17:33:33

16 аналоговых входа мертвы, причем, как цифровые входы пашут

Добавлено after 9 minutes 27 seconds:
Короче, напишу, наверное, статью по сигма-дельта АЦП AD7738, а то никакой толковой информации по ней не нашел, в свое время

Re: Не работает АЦП STM32F103RCT6

Сб июн 13, 2020 06:59:23

Вопрос решен, мертв АЦП STM

А порты настроенные как вход аналоговый ?
Ответить