Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Ребята, не могу найти характеристики ОУ в STM32, не подскажите, где взять? Надо амперметр сделать, падение на шунте 3-10мВ, вот и думаю, необходимо ли отдельный ОУ ставить, например, LM358 или встроенного хватит?
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Заголовок сообщения: Re: STM32 новичку в ARM что к чему
Добавлено: Чт ноя 16, 2017 21:13:55
Мучитель микросхем
Карма: 4
Рейтинг сообщений: 15
Зарегистрирован: Ср янв 26, 2011 13:43:30 Сообщений: 414 Откуда: С того берега моря
Рейтинг сообщения:0
Привет ребята. Пробую тикать таймерами и использовать прерывания на STM32VLDiscovery. Взял код с сайта(не знаю, можно линк или нет, robocraft в общем), пытаюсь скомпилировать в Keil и он выдает две ошибки:
Цитата:
main.c(29): error: #268: declaration may not appear after executable statement in block GPIO_InitTypeDef gpio; main.c(45): error: #268: declaration may not appear after executable statement in block TIM_TimeBaseInitTypeDef base_timer;
Как будто не в том месте объявлены.
Вот сам код.
Код:
#include <stm32f10x.h> #include <stm32f10x_gpio.h> #include <stm32f10x_rcc.h> /* В этом файле - всё для работы с таймерами */ #include <stm32f10x_tim.h> /* В этом - для работы с NVIC */ #include <misc.h>
/* Инициализируем базовый таймер: делитель 24000, период 500 мс. * Другие параметры структуры TIM_TimeBaseInitTypeDef * не имеют смысла для базовых таймеров. */ TIM_TimeBaseInitTypeDef base_timer; TIM_TimeBaseStructInit(&base_timer); /* Делитель учитывается как TIM_Prescaler + 1, поэтому отнимаем 1 */ base_timer.TIM_Prescaler = 24000 - 1; base_timer.TIM_Period = 500; TIM_TimeBaseInit(TIM6, &base_timer);
/* Разрешаем прерывание по обновлению (в данном случае - * по переполнению) счётчика таймера TIM6. */ TIM_ITConfig(TIM6, TIM_IT_Update, ENABLE); /* Включаем таймер */ TIM_Cmd(TIM6, ENABLE);
/* Разрешаем обработку прерывания по переполнению счётчика * таймера TIM6. Так получилось, что это же прерывание * отвечает и за опустошение ЦАП. */ NVIC_EnableIRQ(TIM6_DAC_IRQn); }
void TIM6_DAC_IRQHandler() { /* Так как этот обработчик вызывается и для ЦАП, нужно проверять, * произошло ли прерывание по переполнению счётчика таймера TIM6. */ if (TIM_GetITStatus(TIM6, TIM_IT_Update) != RESET) { /* Очищаем бит обрабатываемого прерывания */ TIM_ClearITPendingBit(TIM6, TIM_IT_Update); /* Инвертируем состояние светодиодов */ GPIO_Write(GPIOC, GPIO_ReadOutputData(GPIOC) ^ (BLUE_LED | GREEN_LED)); } }
Я попробовал инициализацию структур порта и таймеров вытащить за мейн глобально. Но там посыпались другие ошибки...
_________________ - Бежит этот подлец-электрон, а вокруг его масса (аж 10 в 23й) штук ионов кремния и 10 в 15й ионов примеси и он, подлец, взаимодействует!
Заголовок сообщения: Re: STM32 новичку в ARM что к чему
Добавлено: Чт ноя 16, 2017 21:29:49
Мучитель микросхем
Карма: 4
Рейтинг сообщений: 15
Зарегистрирован: Ср янв 26, 2011 13:43:30 Сообщений: 414 Откуда: С того берега моря
Рейтинг сообщения:0
Ну да, порт тактируем до инита, и таймер так же.
Теперь посыпалось такое:
Код:
.\Objects\timer_example.axf: Error: L6218E: Undefined symbol TIM_ClearITPendingBit (referred from main.o). .\Objects\timer_example.axf: Error: L6218E: Undefined symbol TIM_Cmd (referred from main.o). .\Objects\timer_example.axf: Error: L6218E: Undefined symbol TIM_GetITStatus (referred from main.o). .\Objects\timer_example.axf: Error: L6218E: Undefined symbol TIM_ITConfig (referred from main.o). .\Objects\timer_example.axf: Error: L6218E: Undefined symbol TIM_TimeBaseInit (referred from main.o). .\Objects\timer_example.axf: Error: L6218E: Undefined symbol TIM_TimeBaseStructInit (referred from main.o).
_________________ - Бежит этот подлец-электрон, а вокруг его масса (аж 10 в 23й) штук ионов кремния и 10 в 15й ионов примеси и он, подлец, взаимодействует!
Нет. переменные должны быть объявлены до кодогенеррмрующих команд, а не где попадя. А дальнейшие ошибки сообщают об остутствии функций которые вы вызываете. Тут уж вам надо найти где нужные библиотеки и подключить их.
_________________ А люди посмотрят и скажут: "Собаки летят. Вот и осень."
Заголовок сообщения: Re: STM32 новичку в ARM что к чему
Добавлено: Пт ноя 17, 2017 10:50:32
Мучитель микросхем
Карма: 4
Рейтинг сообщений: 15
Зарегистрирован: Ср янв 26, 2011 13:43:30 Сообщений: 414 Откуда: С того берега моря
Рейтинг сообщения:0
Спасибо, просто забыл в spl галочку в TIM установить.
_________________ - Бежит этот подлец-электрон, а вокруг его масса (аж 10 в 23й) штук ионов кремния и 10 в 15й ионов примеси и он, подлец, взаимодействует!
Такая проблема: есть STM32VLDISCOVERY с МК STM32F100RBT6B, а также есть Pinboard II c МК STM32F103C8T6 (ситуация в обоих вариантах одинаковая). При HCLK больше 12-16МГц некоторые устройства с шиной I²С не работают. Обращаю внимание, что не все устройства себя так ведут. Например, работают на любой частоте микросхемы DS3231 и DS1307 и отваливаются при повышении частоты RDA5807M и MPU-6050. В чём может быть дело? Изменение скорости I²С (100-400 КГц) влияния не оказывает. Keil 5.24a, STM32CubeMX 4.23.0, HAL.
RCC_GetClocksFreq (&rcc); i = (rcc.HCLK_Frequency/10000000)*us;
for (; i != 0; i—); }
Мне требА это самое реализовать по под халловские библиотеки.... у самого чёт нибельмеса не получается... КЕЙЛИ 5 выдаёт ошибку "идентификатор "RCC_ClocksTypeDef" неопределен RCC_ClocksTypeDef rcc;" - что в принципе правильно(библиотеки то не те...) Попробовал повыдёргивать со своего "STM32F1xx_HAL_RCC_H" ничего не получилось. Лучшее что получилось это такая ошибка -
"78\78.axf: Error: L6218E: Undefined symbol RCC_OscInitStruct (referred from main.o). Not enough information to list image symbols. Not enough information to list load addresses in the image map."
Помогите пожалуйста вот часть моего файла "STM32F1xx_HAL_RCC_H"
Банальная задержка. Рассчитываем значение i, сколько должно быть "тиков" ядра, чтобы задержка была нужное количество миллисекунд. И дальше их "тикаем". Найти в сети хал код на подобное и вставить в тело функции. Вообще слабо представляю уровень программиста, который писал задержку путём полного загруза МК... Он ничего не может делать в это время. А если прерывание произойдёт? Задержка уплывёт... В общем... Может не стоит оно?
_________________ Глупый не задает вопросы. Глупый и так все знает.
Только выдаёт она +/- километр. И ещё в добавок она делает задержку в миллисекундах.
В Keil можно написать так:
Код:
void MT_Delay(uint32_t us) { volatile uint32_t i;
i = (SystemCoreClock/10000000)*us;
for (; i != 0; i—); }
Или так красивее и меньше переменных:
Код:
void MT_Delay(uint32_t us) { us = (SystemCoreClock / 10000000)*us; while (us--) ; }
Но задержка будет неверная. Нельзя от неё ждать микросекунд. Процентов на 10-20 соврёт. Можно скорректировать путём измерения частоты на ножке МК. Делить не на 10000000, а например на 9000000. Впрочем, если прерывания вылезут, то ещё больше уплывёт и это не скорректировать.
Делать стоит всё же на таймере.
_________________ Глупый не задает вопросы. Глупый и так все знает.
Как сделать грамотно ассемблерную вставку ? в общем, нагуглил, что есть такая полезная команда как CLZ в Cortex-M3, поиском по файликам не нашел и решали сделать сам.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 37
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения