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

STM32 для чайника


ART_ME

Рекомендуемые сообщения

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Хотя с АЦП, тут конечно тоже по регистрам настройка такая что голову сломаешь, блин в АВР регистры как - то проще, может это тяжело мне на другой архитектуре.

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

Просто делите частоту на скорость и вписывайте в BRR.

36000000 / 57600 = 625 = 0x271

Можете пересчитать по "фирменной" формуле и убедиться в правильности.

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

блин чет я затупил, мы же обе половинки умножаем в конечном итоге на 16, т.е. BRR = Fck / Speed, вроде норм считает (опередил:))

2 минуты назад, Zhuk72 сказал:

Просто делите частоту на скорость и вписывайте в BRR.

36000000 / 57600 = 625 = 0x271

Можете пересчитать по "фирменной" формуле и убедиться в правильности.

у него же шина 72

блин нахрна так наворотили в даташите не могли проще формулу показать

Изменено пользователем MasterElectric
Ссылка на комментарий
Поделиться на другие сайты

а теперь вопрос, какой оператор в С целочисленное деление, а препроцессор сам посчитает и выкенет дробную часть?

 

// таблица скоростей USART
const uint16_t                              Cls_UART::USART_BaudRateDiv[] = {
    (234 << 4) | 6,         // 9600
    (19 << 4) | 8,          // 115200
    (1 << 4) | 1,           // 2048000
};

а я таблично делал(((

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

Ну так в регистр BRR пишутся по отдельности целая и дробная части. Не знаю как , но по найденной мной формуле они правильно суммируются. Первый байт - целое, второй - дробная часть.

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

Эта формула не правильная, деление на 2 если убрать то все получается USART_BRR = (fck + baudrate /2 ) / baudrate

(72000000+115200).115200=626=0x272

Изменено пользователем Электронщик
Ссылка на комментарий
Поделиться на другие сайты

@Электронщик вы лучше не к АЦП переходите а углубите знания по УАРТУ, есть еще прерывания, ДМА, режимы разные (интересный IDLE), напишите библиотечку уоторая будет в фоне работать и не стопорить процессор ожидая флаг.

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

Это не я взял, я же ссылку тут кидал, откуда, я эту формулу нашел

 

MasterElectric, да я хочу по регистрам хоть не много прощупать периферию, а потом уже по ней углубиться.

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

2 минуты назад, Zhuk72 сказал:

Формула из RM такая: USARTDIV = Fclk/(16*baud)

Откуда вы взяли деление на два?!

http://easystm32.ru/interfaces/15-uart-in-stm32-part-1

возможно попытка корректировка отсечения дробной части

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

USARTDIV = Fclk/(16*baud)

72000000 / (16 * 115200) = 72000000 / 1843200 = 39,0625

Целое - 39 = 0х27

Дробь - 0,0625 * 16 = 1, переноса в старший разряд нет.

При объединении выходит 0х271.

Я доверяю только официальным источникам. Эту упрощенную формулу я нашел где-то на стороне, но проверил ее с несколькими значениями.

При каких-то определенных входных данных может и соврать, не знаю.

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

Вопрос такой как сделать ADCPrescaler(предделитель частоты для АЦП) на 6, так как шина APB2 72МГц, ?

сейчас просто прописал RCC->APB2ENR|=RCC_APB2ENR_ADC1EN;, а как поделить на 6?

Второй вопрос, АЦП настроил 2 инжекторных канала по регистрам, все хорошо, данные в СОМ порт с двух каналов идут, но не могу понять а как определенному инжекторному  каналу назначить определенный пин АЦП, какой регистр за это отвечает?

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

По поводу АЦП пока ничего не посоветую, с ним пока не разбирался, а настройка тактовой такая (до включения тактирования АЦП):

    RCC->CFGR &= ~RCC_CFGR_ADCPRE_0;
    RCC->CFGR |= RCC_CFGR_ADCPRE_1;

Почитайте раздел 11, там много подсказок. Описания регистров АЦП в конце этого раздела.

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

Отлично мне тоже не приходилось АЦП использовать, давайте вместе разберемся. Но меня интересует регулярные каналы + ДМА. Я буду мучать stm32f103c8

2 часа назад, Zhuk72 сказал:

По поводу АЦП пока ничего не посоветую, с ним пока не разбирался, а настройка тактовой такая (до включения тактирования АЦП):


    RCC->CFGR &= ~RCC_CFGR_ADCPRE_0;
    RCC->CFGR |= RCC_CFGR_ADCPRE_1;

Почитайте раздел 11, там много подсказок. Описания регистров АЦП в конце этого раздела.

До включения тактирования АЦП вы ничего совсем не запишете в блок регистров АЦП

Изменено пользователем MasterElectric
Ссылка на комментарий
Поделиться на другие сайты

RCC какое имеет к ним отношение? Или вы меня не так поняли.

Я имел в виду, что предделитель АЦП (код я давал) надо выставлять ДО включения тактирования командой RCC->APB2ENR |= RCC_APB2ENR_ADC1EN.

Его вообще надо вставить в процедуру начальной инициализации чипа вместе с другими настройками в том же RCC->CFGR.

У меня сейчас на руках другая работа, в ней нет места АЦП, а отвлекаться не хочу. Так что пока без меня ))

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

MasterElectric я тоже мучаю stm32f103c8, когда вы думаете с АЦП начать? А то я сейчас застопорился, на инжекторных каналах, данные приходят но не совсем понятно что за числа такие, и на аждый вход пробовал проводком 3,3В задать а числа стоят.

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

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

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

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

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

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

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

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