STM32F103C8T6 BluePrill замена чипа на STM32L151C8T6A

Ответить
mmn71
Рядовой
Сообщения: 9
Зарегистрирован: 19 июл 2025, 13:30
Имя: Максим
Благодарил (а): 2 раза

STM32F103C8T6 BluePrill замена чипа на STM32L151C8T6A

Сообщение mmn71 »

Был собран проект на плате STM32F103C8T6 BluePrill где всё прекрасно работает, но потребление тока оставляло желать лучшего.
Купил чип STM32L151C8T6A и запаял его вместо F103C8T6.
По даташиту ноги идут в "pin to pin", по рекомендации соеденил 1 и 48 ноги (на плате это VBAT и 3,3в) хотя и без этого работало..
Заливаю Blink просто изменив в ArduinoIDE плату на STM32L151C8T6A -- диод PC13 мигает как и положено.
Заливаю свой проект -- где подключено и РАБОТАЕТ:
--A2, A3 (Serial2 - SIM800L) приём вызова, приём/отправка смс
--B10, B11 (Software Serial - GPS) получение координат
--A0, A1 (цифровые выходы для управления нагрузкой) - ОСТАЛЬНЫЕ не хотят, как и диод на PC13 работающий из под блинка(
--A8 (Buzzer)
--B4 (датчик температуры DS18B20)
--B6,B7 (Дисплей HD44780)

НЕ РАБОТАЕТ:
--B0 аналоговый вход (Контроль напряжения) очень важный элемент. Пробовал разные пины не пашет(.
Может как-то связано с Vref
U-F103.flp
PS:
Вывод -- в FLPROG нет контроллера STM32L151, а используя F103CBT6 получаем какое-то внутреннее несоответствие, но если писать код непосредственно в ArduinoIDE то работает.
Предлагали сделать минимум два действия: в CubeMX сравнить распиновку питания и потом в конфигурационных файлах библиотеки ядра (типа variant_generic.h , PeripheralPins.c и подобных) сравнить назначение пинов (портов), установил попробовал не понял)) (ну не силён я в програмировании, поэтому и юзаю FLPROG)

Может есть знающие люди сделать описание в файл STM32L151C8T6A.cdl
Вот мой недоделанный
stm32l1.cdl
У вас нет необходимых прав для просмотра вложений в этом сообщении.
ecoins
Полковник
Сообщения: 4183
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 173 раза
Поблагодарили: 219 раз

Re: STM32F103C8T6 BluePrill замена чипа на STM32L151C8T6A

Сообщение ecoins »

mmn71 писал(а): 07 сен 2025, 10:57 PS:
Вывод -- в FLPROG нет контроллера STM32L151, а используя F103CBT6 получаем какое-то внутреннее несоответствие, но если писать код непосредственно в ArduinoIDE то работает.

Вот мой недоделанный stm32l1.cdl
"Вывод -- в FLPROG нет контроллера STM32L151" - Ваш вывод верен.
В RT_HW_Base.h потребуется добавить этот контроллер, например по аналогии в файле BOARD_0103_STM32F103Cx.
У меня нет в наличии такого чипа, добавлять без тестирования и изучения не стоит.
Попробуйте самостоятельно.
С уважением, ecoins.
mmn71
Рядовой
Сообщения: 9
Зарегистрирован: 19 июл 2025, 13:30
Имя: Максим
Благодарил (а): 2 раза

Re: STM32F103C8T6 BluePrill замена чипа на STM32L151C8T6A

Сообщение mmn71 »

ecoins писал(а): 07 сен 2025, 17:06 Попробуйте самостоятельно.
RT_HW_BASE.h
Строка 109, какой ставить API_**** (#include "API_0361_BOARD_STM32L1/BOARD_0151_STM32L151Cx.hpp" //--STM32L151Cx;)

BOARD_0151_STM32L151Cx.hpp
Строка 12, менять что-нибудь надо? (#define RT_HW_BOARD_CODE (uint8_t)70 //--Идентификатор выбора платы;)
RT_HW_BASE.h
BOARD_0151_STM32L151Cx.hpp
У вас нет необходимых прав для просмотра вложений в этом сообщении.
ecoins
Полковник
Сообщения: 4183
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 173 раза
Поблагодарили: 219 раз

Re: STM32F103C8T6 BluePrill замена чипа на STM32L151C8T6A

Сообщение ecoins »

mmn71 писал(а): 12 сен 2025, 15:42
ecoins писал(а): 07 сен 2025, 17:06 Попробуйте самостоятельно.
RT_HW_BASE.h
Строка 109, какой ставить API_**** (#include "API_0361_BOARD_STM32L1/BOARD_0151_STM32L151Cx.hpp" //--STM32L151Cx;)

BOARD_0151_STM32L151Cx.hpp
Строка 12, менять что-нибудь надо? (#define RT_HW_BOARD_CODE (uint8_t)70 //--Идентификатор выбора платы;)
RT_HW_BASE.h
BOARD_0151_STM32L151Cx.hpp
В основном Вы разобрались - но эта тема немного сложнее:
1.В Arduino нет плат BluePill L151C8T6A - соответственно Вы не сможете в Arduino IDE такую плату.
2.На скорую руку поправил Ваш файл и добавил его в RT_HW_BASE.h(вер.6.4.7 - приклеплен к сообщению)
3.В саму RT_HW_BASE.h добавлено не только описание, но и ссылка на него.
//=================================================================================================
// 0362. Выбор плат STM32L1
//=================================================================================================
#include "API_0362_BOARD_STM32L1/BOARD_0101_STM32L151Cx.hpp" //--STM32L151Cx;
4.При работе в Arduino IDE выбирать:
Generic L151C8Tx или Generic L151C8Tx
5.Пробуйте, вникайте, разбирайтесь, тестируйте.
Может быть полезен тест из меню Примеры: RT_HW_BASE -> 0601->DEBUG_Serialx->CORE10+RT_HW_BASE_Serial_v10_090125
С уважением, ecoins.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
mmn71
Рядовой
Сообщения: 9
Зарегистрирован: 19 июл 2025, 13:30
Имя: Максим
Благодарил (а): 2 раза

Re: STM32F103C8T6 BluePrill замена чипа на STM32L151C8T6A

Сообщение mmn71 »

Да, согласен, не всё так гладко получается.
Для моего случая (запустить один аналоговый вход) пришлось задействовать "костыль" в виде пользовательского блока.
Теперь весь проект работает :smile9:
Единственное, что дискретность вместо 4096 работает на 1024, но это не критично
► Показать
Вот блок измерения напряжения на входе B0 для L151Cx, мож кому пригодится)
U_IN_(Code_-_Basic).ubi
У вас нет необходимых прав для просмотра вложений в этом сообщении.
ecoins
Полковник
Сообщения: 4183
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 173 раза
Поблагодарили: 219 раз

Re: STM32F103C8T6 BluePrill замена чипа на STM32L151C8T6A

Сообщение ecoins »

mmn71 писал(а): 14 сен 2025, 11:53 Да, согласен, не всё так гладко получается.
Для моего случая (запустить один аналоговый вход) пришлось задействовать "костыль" в виде пользовательского блока.
Теперь весь проект работает :smile9:
Единственное, что дискретность вместо 4096 работает на 1024, но это не критично
► Показать
Вот блок измерения напряжения на входе B0 для L151Cx, мож кому пригодится)
U_IN_(Code_-_Basic).ubi
Хорошо что у Вас получилось, поздравляю.
Несколько ремарок:
1.Вы используете прямое обращение.
Возможно использовать и штатные возможности FLProg - тогда и значение с ADC будет 0-4095.
Библиотеки настраивают на этот диапазон независимо от выбранного в Arduino IDE (!!!) контроллера.
При желании диапазон может быть изменен.
2.В блоке Вы применили "запрещенную" функцию delay()
u_in = analogRead(PB0);
delay(100);
u_out = u_in;
По проекту у Вас проект по сути в каждом цикле loop() будет "тормозить" на 100ms.
3.В проекте выводите на дисплей старый. Он тоже достаточно "тормозной".
Используйте новый LCD из левого меню, раздел "Отображение". Он и проще, не требует блока конвертации, работает в фоновом режиме и потому практически не влияет на быстродействие контроллера (не "тормозит").
4."Тормозы" начинают неприятно и значительно начинают проявляться при росте проекта и добавление сложных методов, например при использование Modbus и прочего.
-----
Еще раз поздравляю что Вы не через простой путь достигли желаемого для Вас результата.
С уважением, ecoins.
Ответить

Вернуться в «STM32»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей