STM32 программирование из FLProg.

Кастомные контроллеры STM32F103C8T6, STM32F407Vxx DevEBox для версий 6.1

Аватара пользователя
DrMario
Лейтенант
Сообщения: 371
Зарегистрирован: 07.11.2016{, 13:11}
Репутация: 58
Откуда: Камень-на-Оби
Имя: Евгений
Контактная информация:

STM32 программирование из FLProg.

#1

Сообщение DrMario » 24.10.2019{, 09:58}

Начиная с версии 6.1.0 появилась возможность самостоятельно интегрировать в программу кастомные контроллеры.
https://habr.com/ru/post/467007/
Я воспользовался такой возможностью и добавил STM32F103C8T6, который уже больше года лежал в столе.
Для использования STM32F103C8T6 необходимо предварительно добавить к плате компоненты, необходимые для загрузки программ в микроконтроллер (прошивка FLASH) и добавить библиотеку Arduino_STM32-master в каталог ...\ideV4\hardware\ используемой IDE.
Ссылка на библиотеку (сюда не помещается)
https://github.com/rogerclarkmelbourne/Arduino_STM32
Дополнительная информация по предварительной подготовке:
http://mypractic.ru/urok-2-plata-stm32f ... oader.html


После чего нужно загрузить библиотеку STM32F103 (Cortex®-M3 CPU) в пользовательские описания контроллеров FLProg.
Получилось так, что для STM контроллеров своя библиотека шины OneWire, а именно OneWireSTM, которая лежит в папке Arduino_STM32-master.
На данный момент при компиляции IDE сообщает об ошибке. Проблема пока решается путем замены #include <OneWire.h> на #include <OneWireSTM.h>. Возможно эту проблему можно решить как то иначе, в редакторе есть секции для специального кода.
Если у кого получится, поделитесь знанием.
В наличии у меня есть STM32F042 Nucleo, позже добавлю этот контроллер.
19.12.2019. Отредактировал описание контроллера STM32F103C8T6. Названия выводов теперь соответствуют названию на плате по кличке "Голубая таблетка". Добавлено описание альтернативных функций для выводов.
=========
04.05.2020 Добавил кастомный STM32F407Vxx DevEBox
Подробная справка в описании платы.
Для программирования этой платы через Arduino IDE нужно добавить платы STM32 Cores. В поисковике менеджера плат нужно набрать stm32 и установить их.
Возможно придется дополнительно установить STM32CubeProg, чтобы обновить прошивку в ST-Link
https://www.st.com/en/development-tools ... eprog.html

Пока программирую через SWD ST-Link ом, через DFU пока не получается. Есть возможность добавить виртуальный USART для отладки, см. описание.
PCB Top.PNG
Вид платы
STM32F407VX_M_schematicsOk1.pdf
Даташит STM32F407VGT6 DevEBox
(410.57 КБ) 181 скачивание
01.09.2020
Архив с последней редакцией кастомных контроллеров STM32 (Cortex®-M3 CPU) и STM32 (Cortex®-M4 CPU).
В состав STM32 (Cortex®-M3 CPU) контроллер STM32F103C8T6 Blue Pill в двух вариантах выбора из менеджера плат.
В состав STM32 (Cortex®-M4 CPU) контроллеры STM32F401CCU6 Black Pill, STM32F411CEU6 Black Pill, STM32F407VGT6 DevEBox.
Подробное описание внутри.
Вложения
STM32 (Cortex®-M3-M4).7z
Редакция от 01.09.2020.
(3.83 МБ) 413 скачиваний
STM32F103 Datasheet.pdf
Даташит
(1.91 МБ) 251 скачивание
Последний раз редактировалось DrMario 01.09.2020{, 17:53}, всего редактировалось 6 раз.

fsergei70
Капитан
Сообщения: 786
Зарегистрирован: 17.11.2015{, 20:36}
Репутация: 54
Имя: Сергей

STM32 программирование из FLProg.

#2

Сообщение fsergei70 » 11.12.2019{, 13:34}

DrMario, Спасибо огромное, у меня возникло несколько вопросов, может кто подскажет.
1 Правильно ли указаны аналоговые входы для портов PB0, PB1?,Если я не ошибаюсь должно быть для PB0 аналоговый вход 8, PB1 аналоговый вход 9. Правильно ли обозначены PA11, PA12 как UART-0, ведь в стм всего 3 UART порта.
2. Что у нас на PC13 при использованного RTC, кварц на 32768 надо цеплять к PC14, PC15.
3. PA13, PA14 выведены на отдельный разъем для подключения STLINK, если шить через USB их можно использовать?
4. Можно ли использовать порты PA11, PA12 которые применяются для USB?

Отправлено спустя 1 час 27 минут 43 секунды:
5. Можно ли слать инфу в порт USB при выполнении программы, на подо бе того как это делается отправкой данных в сериал порт? Может очень пригодиться при отладке.

aidar_i
Полковник
Сообщения: 3122
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 674
Откуда: Уфа
Имя: Айдар
Контактная информация:

STM32 программирование из FLProg.

#3

Сообщение aidar_i » 11.12.2019{, 21:59}

Отвечу на вопрос 2
У вас на плате стоит
СпойлерПоказать
1964ab.png
1964ab.png (14.64 КБ) 6888 просмотров

fsergei70
Капитан
Сообщения: 786
Зарегистрирован: 17.11.2015{, 20:36}
Репутация: 54
Имя: Сергей

STM32 программирование из FLProg.

#4

Сообщение fsergei70 » 12.12.2019{, 02:18}

aidar_i писал(а):
11.12.2019{, 21:59}
Отвечу на вопрос 2
У вас на плате стоит
я если честно не в курсе, платы ещё в пути, судя по данным отслеживания приедут через дней 5..

Аватара пользователя
DrMario
Лейтенант
Сообщения: 371
Зарегистрирован: 07.11.2016{, 13:11}
Репутация: 58
Откуда: Камень-на-Оби
Имя: Евгений
Контактная информация:

STM32 программирование из FLProg.

#5

Сообщение DrMario » 12.12.2019{, 10:36}

fsergei70 писал(а):
11.12.2019{, 15:02}
DrMario, Спасибо огромное, у меня возникло несколько вопросов, может кто подскажет.
1 Правильно ли указаны аналоговые входы для портов PB0, PB1?,Если я не ошибаюсь должно быть для PB0 аналоговый вход 8, PB1 аналоговый вход 9. Правильно ли обозначены PA11, PA12 как UART-0, ведь в стм всего 3 UART порта.
2. Что у нас на PC13 при использованного RTC, кварц на 32768 надо цеплять к PC14, PC15.
3. PA13, PA14 выведены на отдельный разъем для подключения STLINK, если шить через USB их можно использовать?
4. Можно ли использовать порты PA11, PA12 которые применяются для USB?
Я буду рад, если кто нибудь перепроверит и сделает исправления. На данный момент пока не до этого контроллера, вплотную занят своим проектом на ESP32. Но помню, что каждый вывод проверял :smile427: . Возможно что нибудь и упустил из виду.

markirovka76
Рядовой
Сообщения: 18
Зарегистрирован: 08.11.2019{, 22:48}
Репутация: 7
Откуда: Ярославль
Имя: ALEXEY

STM32 программирование из FLProg.

#6

Сообщение markirovka76 » 18.12.2019{, 18:19}

Начал тоже этим вопросом заниматься и вот, что нашел.
1) Нельзя использовать выводы : PA11, PA12, PA15, PB3, PB4, PB5. Два первых это USB (это не UART0), 3 других - для отладки через JTAG.
2) Выводы PA4 и PA5 - два независимых аппаратных ЦАП, т.е. аналоговые выхода с разрешением 8 (12) bit (не путать с ШИМ).
3) SoftSerial, как многие пишут, на этих платах пока не работает.

Попробовал поиграться с ШИМ, правда для этой цели пришлось сделать пользовательский блок. Работает на входе величина 4095 (1023 Arduino), выход (16bit) 65535 против (255 Arduino)
Вложения
STM32.ubl
(30.01 КБ) 256 скачиваний

Аватара пользователя
DrMario
Лейтенант
Сообщения: 371
Зарегистрирован: 07.11.2016{, 13:11}
Репутация: 58
Откуда: Камень-на-Оби
Имя: Евгений
Контактная информация:

STM32 программирование из FLProg.

#7

Сообщение DrMario » 18.12.2019{, 18:51}

markirovka76 писал(а):
18.12.2019{, 18:19}
2) Выводы PA4 и PA5 - два независимых аппаратных ЦАП, т.е. аналоговые выхода с разрешением 8 (12) bit (не путать с ШИМ).
Дайте ссылку

markirovka76
Рядовой
Сообщения: 18
Зарегистрирован: 08.11.2019{, 22:48}
Репутация: 7
Откуда: Ярославль
Имя: ALEXEY

STM32 программирование из FLProg.

#8

Сообщение markirovka76 » 18.12.2019{, 18:55}

http://easystm32.ru/for-beginners/37-dac-stm32/

Отправлено спустя 1 час 46 минут 4 секунды:
DrMario писал(а):
12.12.2019{, 10:36}
fsergei70 писал(а):
11.12.2019{, 15:02}
DrMario, Спасибо огромное, у меня возникло несколько вопросов, может кто подскажет.
1 Правильно ли указаны аналоговые входы для портов PB0, PB1?,Если я не ошибаюсь должно быть для PB0 аналоговый вход 8, PB1 аналоговый вход 9. Правильно ли обозначены PA11, PA12 как UART-0, ведь в стм всего 3 UART порта.
2. Что у нас на PC13 при использованного RTC, кварц на 32768 надо цеплять к PC14, PC15.
3. PA13, PA14 выведены на отдельный разъем для подключения STLINK, если шить через USB их можно использовать?
4. Можно ли использовать порты PA11, PA12 которые применяются для USB?
Я буду рад, если кто нибудь перепроверит и сделает исправления. На данный момент пока не до этого контроллера, вплотную занят своим проектом на ESP32. Но помню, что каждый вывод проверял :smile427: . Возможно что нибудь и упустил из виду.
Нашел еще одну неточность в Вашем кастомном проекте на контроллер - у STM32F103 память EEPROM - равна 0, т.е. ее нет

dsfbuy
Сержант
Сообщения: 171
Зарегистрирован: 03.11.2018{, 12:40}
Репутация: 21
Откуда: Братск
Имя: Виктор

STM32 программирование из FLProg.

#9

Сообщение dsfbuy » 18.12.2019{, 20:47}

Вы про какой МК пишите про DAC? У STM32F103C8T6 его нет.
https://www.rlocman.ru/datasheet/pdf.ht ... 66711&p=12

markirovka76
Рядовой
Сообщения: 18
Зарегистрирован: 08.11.2019{, 22:48}
Репутация: 7
Откуда: Ярославль
Имя: ALEXEY

STM32 программирование из FLProg.

#10

Сообщение markirovka76 » 18.12.2019{, 22:08}

dsfbuy писал(а):
18.12.2019{, 20:47}
Вы про какой МК пишите про DAC? У STM32F103C8T6 его нет.
https://www.rlocman.ru/datasheet/pdf.ht ... 66711&p=12
Да оплошность, не на туда посмотрел.

skrickis
Рядовой
Сообщения: 86
Зарегистрирован: 05.02.2017{, 12:02}
Репутация: 9

STM32 программирование из FLProg.

#11

Сообщение skrickis » 18.12.2019{, 22:10}

DrMario писал(а):
24.10.2019{, 09:58}
Я воспользовался такой возможностью и добавил STM32F103C8T6
большое спасибо автору за проект контролёра STM32F103...!!! :smile9:
А то валяется штук пять STM32F103... можно будет гне нибуть применить :smile44:

markirovka76
Рядовой
Сообщения: 18
Зарегистрирован: 08.11.2019{, 22:48}
Репутация: 7
Откуда: Ярославль
Имя: ALEXEY

STM32 программирование из FLProg.

#12

Сообщение markirovka76 » 18.12.2019{, 23:20}

Я тоже купил 10-к 2 года назад и только сейчас довольный, как "мамонт". :victory: В данный момент залил маленький проект в stm - счетчик с выводом в uart смотрю и "любуюсь" :smile225:

Отправлено спустя 1 минуту 9 секунд:
dsfbuy писал(а):
18.12.2019{, 20:47}
Вы про какой МК пишите про DAC? У STM32F103C8T6 его нет.
https://www.rlocman.ru/datasheet/pdf.ht ... 66711&p=12

Если Вы про этот МК изучали еще что-то, кроме приведенной ссылки, то может знаете какие ноги поддерживают прерывания. Дабы "допилить" описание контроллера в flprog?

Отправлено спустя 43 минуты 29 секунд:
При описании собственного контроллера столкнулся с одной проблемой, может кому пригодится - прерывания. Нашел такую вещь, что всего их 19, 16 из которых от внешних устройств и распределяются они так PA0, PB0..... EXTI0; PA15, PB15...EXTI15, т.е. они распределяются по регистрам. Однако в описании 0, 1 и т.д. номер прерывания можно использовать только один раз, что немного будет накладывать ограничения по выводам. При этом еще указано, что меньший номер прерывания всегда имеет приоритет перед большим.

Аватара пользователя
DrMario
Лейтенант
Сообщения: 371
Зарегистрирован: 07.11.2016{, 13:11}
Репутация: 58
Откуда: Камень-на-Оби
Имя: Евгений
Контактная информация:

STM32 программирование из FLProg.

#13

Сообщение DrMario » 19.12.2019{, 09:27}

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

markirovka76
Рядовой
Сообщения: 18
Зарегистрирован: 08.11.2019{, 22:48}
Репутация: 7
Откуда: Ярославль
Имя: ALEXEY

STM32 программирование из FLProg.

#14

Сообщение markirovka76 » 19.12.2019{, 11:27}

Я написал про ноги которые нельзя использовать - возникнут проблемы. Вот ссылка от куда это взял. https://ht-deko.com/arduino/stm32f103c8 ... 0170729_01

vovka1973
Майор
Сообщения: 1060
Зарегистрирован: 14.02.2016{, 14:16}
Репутация: 42
Откуда: kazahstan

STM32 программирование из FLProg.

#15

Сообщение vovka1973 » 02.01.2020{, 16:16}

markirovka76 писал(а):
18.12.2019{, 18:19}
правда для этой цели пришлось сделать пользовательский блок.
А как обстоят дела с энкодерами ? Кто -нибудь пробовал?
Изображение

markirovka76
Рядовой
Сообщения: 18
Зарегистрирован: 08.11.2019{, 22:48}
Репутация: 7
Откуда: Ярославль
Имя: ALEXEY

STM32 программирование из FLProg.

#16

Сообщение markirovka76 » 08.01.2020{, 23:11}

vovka1973 писал(а):
02.01.2020{, 16:16}
markirovka76 писал(а):
18.12.2019{, 18:19}
правда для этой цели пришлось сделать пользовательский блок.
А как обстоят дела с энкодерами ? Кто -нибудь пробовал?
Нормально! Работают. Сегодня сам пробовал. Правда только с библиотекой отсюда https://github.com/enjoyneering/RotaryEncoder

vovka1973
Майор
Сообщения: 1060
Зарегистрирован: 14.02.2016{, 14:16}
Репутация: 42
Откуда: kazahstan

STM32 программирование из FLProg.

#17

Сообщение vovka1973 » 09.01.2020{, 06:33}

Отправлено спустя 30 минут 55 секунд:
markirovka76 писал(а):
08.01.2020{, 23:11}
Нормально! Работают. Сегодня сам пробовал. Правда только с библиотекой отсюда https://github.com/enjoyneering/RotaryEncoder
Видел я эту библиотеку ,пробовал блок создать , нельзя в DeclareSection прописать
СпойлерПоказать
void encoderISR()
{
encoder.readAB();
}

void encoderButtonISR()
{
encoder.readPushButton();
}
Да и встроенный пример через сериал выдает только кнопку
Изображение

markirovka76
Рядовой
Сообщения: 18
Зарегистрирован: 08.11.2019{, 22:48}
Репутация: 7
Откуда: Ярославль
Имя: ALEXEY

STM32 программирование из FLProg.

#18

Сообщение markirovka76 » 09.01.2020{, 09:23}

vovka1973 писал(а):
09.01.2020{, 07:04}
Отправлено спустя 30 минут 55 секунд:
markirovka76 писал(а):
08.01.2020{, 23:11}
Нормально! Работают. Сегодня сам пробовал. Правда только с библиотекой отсюда https://github.com/enjoyneering/RotaryEncoder
Видел я эту библиотеку ,пробовал блок создать , нельзя в DeclareSection прописать
СпойлерПоказать
void encoderISR()
{
encoder.readAB();
}

void encoderButtonISR()
{
encoder.readPushButton();
}
Да и встроенный пример через сериал выдает только кнопку
Я сегодня попробую сделать пользовательский блок. По результату отпишусь, и если получится прикреплю его сюда.

markirovka76
Рядовой
Сообщения: 18
Зарегистрирован: 08.11.2019{, 22:48}
Репутация: 7
Откуда: Ярославль
Имя: ALEXEY

STM32 программирование из FLProg.

#19

Сообщение markirovka76 » 09.01.2020{, 12:13}

Выкладываю поправленную библиотеку Encoder для STM32F1, которая работает с одноименным пользовательским блоком без каких либо дополнений и пример. Сам все проверил. :smile427:
Есть только одно ограничение - нельзя использовать одновременно пины с одинаковыми номерами разных портов, т.е. PA0 и PB0, PA12 и PB12 (это только пример - номера с "потолка") и так далее. Специфика работы прерываний контроллера. :D
Вложения
Encoder.zip
Поправленная библиотека для STM32
(12.8 КБ) 192 скачивания
Encoder_exs.flp
Пример FLPROG
(327.56 КБ) 202 скачивания
encoder_exemple.ino
Пример с выводом на UART
(772 байт) 143 скачивания
Последний раз редактировалось markirovka76 09.01.2020{, 18:02}, всего редактировалось 2 раза.

vovka1973
Майор
Сообщения: 1060
Зарегистрирован: 14.02.2016{, 14:16}
Репутация: 42
Откуда: kazahstan

STM32 программирование из FLProg.

#20

Сообщение vovka1973 » 09.01.2020{, 12:29}

markirovka76 писал(а):
09.01.2020{, 12:13}
PA0 и PB0, PA12 и PB12
А как ноги прописывал?
Изображение

Ответить

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