Гость Semen Опубликовано 25 мая, 2019 Поделиться Опубликовано 25 мая, 2019 Пользуюсь платой stm32f103vet6. Пытался запустить ацп и мерить напряжение на PA0 через потенциометр (10к) напряжение. Опорное = 3,3 волтта. При подачи на PA0 любого напряжения результат счета = 2000 +/-. И на ноге PA0 всегда висит 1.6 вольт если она никуда не подключена. Режим работы ацп - регулярный. Помоги пожалуйста. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
straw Опубликовано 26 мая, 2019 Поделиться Опубликовано 26 мая, 2019 Вы ваш кусок кода где инициализируете ацп лучше покажите. И пробовали с другого пина считывать? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
20% скидка на весь каталог электронных компонентов в ТМ Электроникс!Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!Перейти на страницу акции Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849
Гость Semen Опубликовано 28 мая, 2019 Поделиться Опубликовано 28 мая, 2019 void init_adc(void) { //включаем тактирование порта А RCC->APB2ENR |= RCC_APB2ENR_IOPAEN; //включаем тактирование АЦП RCC->APB2ENR |= RCC_APB2ENR_ADC1EN; //настраиваем порт А0 на аналоговый режим GPIOA->CRL &= ~((0x3 << GPIO_CRL_CNF0_Pos)|(0x3 << GPIO_CRL_MODE0_Pos)); // сбрасываем настройки порта //настраиваем ацп //ADC1->SMPR2 &= (~(0x7 << ADC_SMPR2_SMP0_Pos));//выбираем скорость выборки АЦП ADC1->SMPR2 |= (0x7 << ADC_SMPR2_SMP0_Pos); ADC1->CR2 |= ADC_CR2_EXTSEL; //преобразование простое, которое включается от SWSTART ADC1->CR2 |= ADC_CR2_CONT; // постоянное преобразование //ADC1->CR2 &= ~ADC_CR2_CONT; // одиночное преобразование //ADC1->CR2 |= ADC_CR2_ADON; //включаем АЦП //ADC1->SMPR2 |= (0x0 << ADC_SMPR2_SMP0_Pos); ADC1->SQR1 &= 0x00000000; ADC1->SQR2 &= 0x00000000; ADC1->SQR3 &= 0x00000000; ADC1->SQR3 |= 0x00000001; //используем только нулевой ADC1->CR2 |= ADC_CR2_ADON; //включаем АЦП ADC1->CR2 |= ADC_CR2_CAL; //калибровка while((!(ADC1->CR2) & ADC_CR2_CAL)); //ждем пока не закончится колибровка ADC1->CR2 |= (4 << ADC_CR2_SWSTART_Pos); //включаем преобразование регулярной группы } 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>> Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161
BARS_ Опубликовано 28 мая, 2019 Поделиться Опубликовано 28 мая, 2019 В 26.05.2019 в 00:22, Гость Semen сказал: И на ноге PA0 всегда висит 1.6 вольт если она никуда не подключена. Тут два варианта, либо она куда-то подтянута на плате, либо, что более вероятно, криво настроена. Настройка должна выглядеть примерно так: GPIOA -> CRL &= ~ GPIO_CRL_MODE0; GPIOA -> CRL &= ~ GPIO_CRL_CNF0; А настройка АЦП примерно так: RCC->CFGR &= ~RCC_CFGR_ADCPRE; RCC->CFGR |= RCC_CFGR_ADCPRE_DIV2; RCC->APB2ENR |= RCC_APB2ENR_ADC1EN; ADC1->SQR3 |= ADC_SQR3_SQ1_0; ADC1->CR2 |= ADC_CR2_EXTSEL; ADC1->CR2 |= ADC_CR2_EXTTRIG; ADC1->CR2 |= ADC_CR2_ADON; ADC1->CR2 |= ADC_CR2_CAL; while (!(ADC1->CR2 & ADC_CR2_CAL)); ADC1->CR2 |= ADC_CR2_SWSTART; И на форме ответа есть кнопка вставки кода... 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterElectric Опубликовано 28 мая, 2019 Поделиться Опубликовано 28 мая, 2019 Может оно реально такое и есть, что мультиметр показывает? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Semen Опубликовано 28 мая, 2019 Поделиться Опубликовано 28 мая, 2019 мультиметр показывает 1,6 В. есть подозрение что делитель (красный круг) в работе находится, т.е. не отключается. Хотя настраиваю на аналоговый вход. И кстати BARS_ твой код не проходит цикл while (!(ADC1->CR2 & ADC_CR2_CAL));, по каким то причинам бит калибровки не ставится. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Semen Опубликовано 28 мая, 2019 Поделиться Опубликовано 28 мая, 2019 BARS_ извини все ставится. Но проблема все таки осталась. если даю на порт А0 любое напряжение от 0 до 3,3 вольта, результат измерения ацп не меняется. все так же около 2000 +\- 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
john2103 Опубликовано 10 июня, 2019 Поделиться Опубликовано 10 июня, 2019 (изменено) Настройки порта самого те? Изменено 10 июня, 2019 пользователем john2103 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.