Виртуальный COM порт установить удалось. С помощью STM32 ST-LINK Utility загрузил в плату, как вы говорите, загрузчик IDE (generic_boot20_pc13.bin) предварительно поставив Boot 0 в 1. Вернул Boot 0 в 0 и подключил к ПК по USB кабелю. В диспетчере устройств появился maple-dfu. Это не удивило, поскольку рнее драйвер для него мне удалось установить (см. пост 606). Запустил Ардуино, в Uploader metod установил STM32duino bootloader и попробовал залить рабочий скетчь. На этапе загрузки IDE сказала что то про сериал порт и предложила установить драйвер. Средствами Windows в ручную указал папку maple-serial, инсталлер подхватил и произвёл установку и дозалил скетч. Программа заработала адекватно. В диспетчере устройств появился виртуальный COM порт maple-serial. Ранее, без запуска ардуино, на все установочные файлы Windows ругался. Я так понимаю, что что то им без ардуино не хватало. В общем я рад за себя и спасибо всем кто направлял.
Танцы не окончились. Отладил на столе устройство и поставил на объект. По реальным результатам надо изменить программу. Стал подготавливат ноутбук (XP) и опять проблема с драйверами. Делал всё, что и раньше на настольном ПК, но драйвера не встают (видимо совсем дряхлые и давно мясом не кормили). Единственное, что появилось в диспетчере устройств, так это в разделе "Другие устройство" устройство Maple с жёлтым восклицательным знаком. Чувство отвратное , поскольку понимаю, что подсказать здесь не просто. И всё же, утеште меня чем ни будь, а то совсем мерзко на душе.
раз у вас есть STM32 ST-LINK Utility - то может и фиг с ней, с загрузкой через USB? Грузите через Ст-линк и не мучайтесь.
Дело в том, что, как раз на случай программной доработки, в устройстве предусмотрел выход USB. А теперь, что бы сделать выход для ST-LINK, так это надо на уши встать. Хотя, когда делал железо, хотел и этот выход предусмотреть, но никак не думал, что будут проблемы с установкой драйверов. А потом, если память совсем не отшибло, там надо и джампером играть. А пока свербит мысль, что же там в наборе совта не хватает, что бы этот самый "wdi-simple.exe" мог нормально раскрутиться. А то "install_drivers.bat" запускается, появляется досовское окно, а затем сообщение, что "wdi-simple.exe" не является приложением win32. Заколдун какой то. Может, я скачиваю необходимое ПО не от туда откуда все скачивают.
Не ставился. Но в какой то момент с радостью увидел, что появился чистый, без жёлтых вопросов Maple DFU. Зафиксировать момент и действия, вызвавшие нормальную установку Maple DFU к сожалению не могу, какое то колдовство, а действий всяких было сделано много. Увидел и обрадовался - ну уж сейчас всё пойдёт по маслу - уже проходили. Вставляю USB в ноутбук, в разделе "Другие устройства" появляется устройство Maple c жёлтым вопросительным знаком. Через некоторое время появляется Мастер нового оборудования, отсылаю его к файлу usb_device.inf, начинается радующая глаз загрузка драйвера. Но через некоторое время это прерывается с сообщением, что "Произошла ошибка при установке устройства" и "Не правильная секция установки службы в этом INF файле". Устройство Maple с жёлтым вопросом появляется в разделе Порты, а в разделе Другие устройства оно пропадает. Но на настольном ПК эта часть прошла же без запинки. Вобщем мыслей ни каких, а это удручает.
Вобщем сдался я, драйвер так и не установил. Обидно всё это. Буду переделывать железо в плане возможности подключения ST-Link. Заодно выведу контакты Boot, Reset, может быть и светодиод. В связи с этим вопрос. Что нужно сделать с платой что бы ввести её в режим для программировать через ST-Link?
Вобщем сдался я, драйвер так и не установил. Обидно всё это. Буду переделывать железо в плане возможности подключения ST-Link. Заодно выведу контакты Boot, Reset, может быть и светодиод. В связи с этим вопрос. Что нужно сделать с платой что бы ввести её в режим для программировать через ST-Link?
Всё сделал как запланировал и программу залил через ардуино IDE. А вот как подглядывать за переменными в этой связке: ардуино IDE, ST-Link. Подскажите, пожалуйста, если это возможно.
ua6em пишет:
Ничего, просто подключть, вы жеж бут заливали )))
Просто подключить у меня не получилось. Получилось когда стёр всю память. Очень даже вероятно, что по не знанию делал что то лишнее.
А вот как подглядывать за переменными в этой связке: ардуино IDE, ST-Link. Подскажите, пожалуйста, если это возможно.
В этой связке никак. Т.к. в Arduino IDE не реализован отладчик (debugger). Но такая возможность есть во "взрослых" IDE типа Keil uVision, IAR Embedded Workbench и т.д. Там реализованы точки останова (breakpoints), просмотр содержимого регистров, переменных и т.д.
После того как в теме "Video на stm32duino" затронули вопрос работы с обычными GPIO через DMA у меня возник интерес на предмет прикрутить генерацию DDS через dma, нашёл готовый примерчик на форуме stm32duino, немного модифицировал, что-б гнать табличный синус на младшие 8 бит порта "A" через R2R ЦАП.
Скетч:
К великому сожалению в режиме dma "memory to memory" нельзя зациклить чтение буффера в кольцо, и для того, чтобы бесконечно "проигрывать" буффер в данном скетче отслеживаю обнуление регистра CNDTR, который делает декремент с пересылкой каждого байта из массива, и как только он обнулится - отключаю dma, записываю заново CNDTR , и включаю dma обратно (без отключения dma этот регистр r/o) . Из-за этой процедуры возникает микросекундная задержка в генерации, которая заметна на осцилограмме получаемого синуса, соответссно для wave-генераторов эта фича наврядли пригодится, а для других нужд вполне.
В остальном по скетчу я думаю всё понятно, канал можно выбирать любой.
На али STM32F103RCT6 (голый чип в партии из 5шт) стоит чуть дороже ста рублей. У него на борту 2 ЦАПа. И DMA в них выводит бесшовно всякие кривули из кольцевого буфера.
Ссылки от человека, который первый день на форуме открывать вообще дурной тон :)
Что-то уж больно сурово. Мне, например, как начинающему, очень даже полезно - всё в одном флаконе. Ни кто же на форуме не озадачился собрать всё необходимое в одно место да ещё бы со ссылками на первоисточники. А, вот, слабо знающим вместо поверхностной критики проанализировать предложенную подборку на предмет актуальности. (Обидеть ни кого не хотел).
Юрий48, ох, ардуино ide и так всё упрощает, а самостоятельная установка аддонов и библиотек хоть немножко заставляет людей вникнуть в то, что же он будет потом использовать.
Здравствуйте. Имеется плата с st32f103c8t6 (128k). Вопрос такой. Что занимает 10% памяти чипа, если скомпилировать пустой проект? И каким образом можно это исправить? До этого писал на bascom для меги 8, 16, 32, 328. Так там пустой проект занимает 0% для 328 и 1% для 8.
в platformio с поддержкой arduino пустой проект занимает 6,3%
DATA: [ ] 4.2% (used 852 bytes from 20480 bytes)
PROGRAM: [= ] 6.3% (used 8252 bytes from 131072 bytes)
Там хранится таблица векторов прерываний. Есть примеры как обойтись без неё, тогда будет весить мало, но функционала не будет, только светодиодиком поморгать в майне
Собственно это весь код, который выполняется в МК. В массиве g_pfnVectors находится начало таблицы векторов, без которых нельзя обойтись. Это адрес начала стека и адрес функции выполняемой при старте (сбросе) МК. Массив занимает 8 байт прошивки.
Функция Reset_Handler выполняется при старте (сбросе) МК и в ней включается тактирование порта GPIOC, а затем его 13 вывод настраивается на работу выходом. После, в цикле инвертируется выход PC13 к которому подключен светодиод и циклом for создается небольшая пауза чтобы было видно как мигает светодиод.
Этот код скомпилировался в прошивку размером 48 байт.
Код:
Program size (bytes): 48
Data size (bytes): 0
BSS size (bytes): 0
Total size (bytes): 48 (R/W Memory: 0)
Вспомнилось былое нытьё АСМистов... типа "Си отъедает ресурсы зря"... )))))))))))
Да создайте пустой проект в Кейле или ИАРе... и посмотрите... что и на что там отъедается... там лишнего ничего то и нет... по сути... А что там насовывает "platformio" или прочая шняга... это уже к великим "писателям"... этих шняг...
И почему 8 кБ . Минимальная пустая прошивка с оптимизацией весит около 1 кБ. Помимо конкретно таблицы может и ещё что-то идёт, но всё равно связанное с ней. Сути дела это не меняет, по примеру видно, что избавляясь от этого код весит очень мало и работает.
Имею 3 одинаковых платы Blue Pill на STM32F103C8T6, резисторы R10 на 2х поменял на 1,5 КОм, имею проблему - платы не шьются через USB, РАНЬШЕ(из старой среды и со старым загрузчиком) на 1 плату скетчи загружались через USB, в какой-то момент наверно случайно на нее прошил новый бутлоадер и она стала работать как остальные.
Что делаю и результат:
Перемычки 00, прошил через ST-LINK "STM32duino-bootloader-master\bootloader_only_binaries\generic_boot20_pc13.bin" - синий диод быстро замигал, по USB находится как "Maple DFU".
Пытаюсь прошить Ардуино скетч "blink" с PC13, плата "Generic STM32F103C series", методом "STM32duino-bootloader", остальное по дефолту - среда отвечает "Загрузка завершена" но светодиод как быстро мигал так и мигает, ничего не прошито, вывод среды:
Изменены опции сборки, пересобираем все
Скетч использует 14356 байт (21%) памяти устройства. Всего доступно 65536 байт.
Глобальные переменные используют 3088 байт (15%) динамической памяти, оставляя 17392 байт для локальных переменных. Максимум: 20480 байт.
java.lang.UnsupportedClassVersionError: Bad version number in .class file
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
Exception in thread "main" timeout waiting for COM3 serial
Пытаюсь прошить тоже самое, методом "STLink" - среда отвечает "Загрузка завершена" светодиод начинает мигать медленно как в скетче.
Бутлоадер явно меняется - плата теперь находится как "Maple Serial", но прошить методом "STM32duino-bootloader" так-же как ранее не получается.
Пробовал Ардуино 1.8.5 и 1.8.9 - работают одинаково.
Подскажите пожалуйста где взять правильный бутлоадер, среду и/или как правильно прошить?
Попробовал шить STLink-ом загрузчик с перемычками 10 и 01 - ничего не меняется, перемычки 10 наверно нужны для заливки через сериал А9 А10?
Иногда ломается нормальный бутлоадер - STLink подключается только первые 2 секунды после ресета, у меня вылечилось прошивкой скетча блинк средой Ардуино через STLink с нажатием ресета сразу после компиляции.
Вроде победил - была кривая Ява, снес все старые и поставил новую - заработало но только если бутлоадер "STM32duino-bootloader-master\bootloader_only_binaries\generic_boot20_pc13.bin" записать STLink-ом родной утилитой и потом писать скетчи по USB, если прошить STLink-ом из Ардуино то загрузка через USB перестает работать.
если прошить STLink-ом из Ардуино то загрузка через USB перестает работать.
естесственно! Писать через загрузчик можно только по USB. Как только вы что-то заливаете ST-link-ом - загрузчик затирается и его надо заново восстанавливать.
Загрузчик не затирается, а заменяется Ардуино на другой содержащий только "Maple Serial", загрузчик "STM32duino-bootloader-master\bootloader_only_binaries\generic_boot20_pc13.bin" после старта на 2 секунды активирует "Maple DFU", если есть что грузить то грузит новую прошивку, если нет то активирует "Maple Serial" и запускает прошивку во флеше.
Вообще-то St-link-ом можно прошивать как угодно, хочешь затирай загрузчик ваш ардуиновский, хочешь не затирай. Нужно только знать его размер. Соответственно в настройках нужно указать с какого места стирать и с тогоже места будет записывать. По умолчания стоит 0x08000000. А будет к прмиеру 0x080002AF. Это так, как пример, нужно знать именно размер загрузчика.
BOOT0 и BOOT1 при прошивки st-link - ом по нулям, ничего переключать не нужно
Не естественно, одна среда Ардуино, программаторы USBasp и STLink разные но выполняемые в Ардуино функции одинаковые, при прошивке USBasp-ом плат на АТмегах загрузка через USB продолжает работать, при такой-же прошивке STLink-ом платы на STM32 загрузка через USB больше не работает...
Вообще конечно класно, у СТМ32 шустрая математика, большая и быстрая переферия, но реальных задач где СТМ32 лучше АТмег я не вижу...
при прошивке USBasp-ом плат на АТмегах загрузка через USB продолжает работать
вранье. То есть, простите, я хотел сказать - Вы что-то путаете. Причем опять заявляете это с такой же уверенностью, как до того писали про СТМ. хотя теперь видно, что ошибались. Так вот и насчет АВР вы тоже не правы. По умолчанию при прошивке программатором загрузчик на АТМегах стирается. То есть, конечно, вы можете настроить ИДЕ так, чтоб каждый раз вместе с кодом шить и загрузчик, но стандартно так, как я написал выше.
Ivanii пишет:
Вообще конечно класно, у СТМ32 шустрая математика, большая и быстрая переферия, но реальных задач где СТМ32 лучше АТмег я не вижу...
у блюпилл в 10 раз больше памяти, чем у Нано, больше портов и более мощная периферия. Так что при одинаковой цене я, наоборот, не вижу ни одного преимущества АТМег перед СТМ32.
Я ничего не настраивал в среде, для новой 328Р, 128 или 2560 один раз пишем загрузчик средой через USBasp и дальше можем средой писать чарез USBasp или стандартно скетчи, загрузчик не слетает, без записи загрузчика скетчи никак не работают.
Я не о мощности а о применени на практике - на каждый аналоговый канал СТМ32 нужно по операционнику, при правильной планировке программы быстродействия АТмеги хватает с диким запасом и забьть кодом 32К тоже мало реально.
Ну да. Регулятор шестифазного тиристорного выпрямителя с ПИД стабилизацией выходного напряжения и меню управления, контролем исправности тирристоров, индикацией режимов и прочими плюшками как то у меня на avr не получилось. На блюпиле даже без операционников на аналоговых входах всё работает. Из обвеса только датчик пересечения нуля и привод тирристоров на оптосиммисторах.
Регулятор шестифазного тиристорного выпрямителя с ПИД стабилизацией выходного напряжения и меню управления, контролем исправности тирристоров, индикацией режимов и прочими плюшками...На блюпиле даже без операционников на аналоговых входах всё работает
Гвозди микроскопом, а вместо микроскопа стеклышко...
У дешевых СТМ32 в основном АЦП с приличным постоянным(0,5 В на 100 КОм для STM32F103) и небольшим но вполне заметным ИМПУЛЬСНЫМ(внутри только 5 пФ но для сопротивления источника 100 КОм время заряда до точности 0,1% будет 3,5 мкс) током на аналоговых ВХОДАХ и не забываем к этому добавлять обычную(Typ Total unadjusted error = 3 LSB) ошибку самого АЦП.
В среде Ардуино на ATmega328P получается более 12 000 измерений в секунду, мне пока для хим/физ оборудования и света хватает с диким запасом, обрабатывать звук никто в здравом уме не станет ни на ATmega328P ни на STM32F103C.
32 КБ флеша это гдето 3000 - 8000 строк СВОЕГО кода, если не пихать мусор в скетч.
Для меня блинк на СТМ32 вообще стал откровением:
ATmega328P как UNO "Скетч использует 930 байт (2%) памяти устройства. Глобальные переменные используют 9 байт"
STM32F103C8T6 как STM32F103C "Скетч использует 14356 байт (21%) памяти устройства. Глобальные переменные используют 3088 байт (15%) динамической памяти" что!? 14 КБ флеша и 3 КБ оперативки!!!
Меня пока устраивают(работают без ошибок) согласователи из 1-2х резисторов, а вот в схемах на STM32 согласователи на микросхемах вижу постоянно.
Я не имею ничего против СТМ32, но только там, где его применение оправдано.
Я ничего не настраивал в среде, для новой 328Р, 128 или 2560 один раз пишем загрузчик средой через USBasp и дальше можем средой писать чарез USBasp или стандартно скетчи, загрузчик не слетает, без записи загрузчика скетчи никак не работают.
1) После прошивки скетча через программатор загрузчик точно стирается. Скетчи через USB после этого загружаться не будут.
2) Без записи загрузчика скетчи отлично работают, если предварительно прошить фьюзы. Просто вместе с загрузчиком IDE прошивает и фьюзы. Но это можно сделать самостоятельно, без прошивки загрузчика.
Регулятор шестифазного тиристорного выпрямителя с ПИД стабилизацией выходного напряжения и меню управления, контролем исправности тирристоров, индикацией режимов и прочими плюшками...На блюпиле даже без операционников на аналоговых входах всё работает
Гвозди микроскопом, а вместо микроскопа стеклышко...
У дешевых СТМ32 в основном АЦП с приличным постоянным(0,5 В на 100 КОм для STM32F103) и небольшим но вполне заметным ИМПУЛЬСНЫМ(внутри только 5 пФ но для сопротивления источника 100 КОм время заряда до точности 0,1% будет 3,5 мкс) током на аналоговых ВХОДАХ и не забываем к этому добавлять обычную(Typ Total unadjusted error = 3 LSB) ошибку самого АЦП.
В среде Ардуино на ATmega328P получается более 12 000 измерений в секунду, мне пока для хим/физ оборудования и света хватает с диким запасом, обрабатывать звук никто в здравом уме не станет ни на ATmega328P ни на STM32F103C.
32 КБ флеша это гдето 3000 - 8000 строк СВОЕГО кода, если не пихать мусор в скетч.
Для меня блинк на СТМ32 вообще стал откровением:
ATmega328P как UNO "Скетч использует 930 байт (2%) памяти устройства. Глобальные переменные используют 9 байт"
STM32F103C8T6 как STM32F103C "Скетч использует 14356 байт (21%) памяти устройства. Глобальные переменные используют 3088 байт (15%) динамической памяти" что!? 14 КБ флеша и 3 КБ оперативки!!!
Меня пока устраивают(работают без ошибок) согласователи из 1-2х резисторов, а вот в схемах на STM32 согласователи на микросхемах вижу постоянно.
Я не имею ничего против СТМ32, но только там, где его применение оправдано.
Думаю дальше спорить безсмысленно.
А ты, вапще, в теме? Или в паралельной лиарьности?
Я ничего не настраивал в среде, для новой 328Р, 128 или 2560
один раз пишем загрузчик средой
через USBasp и дальше можем средой писать чарез USBasp или стандартно скетчи,
загрузчик не слетает,
без записи загрузчика скетчи никак не работают.
О как! "А ты говоришь: "Зачем багор?". (с)
Тут же каждая фраза - перл! Я их даже строками выделил!
----------
И вот это чудо тоже "мнение имеет"... Не, я конечно за демократию и плюрализьмус, но разве можно такое оставлять в ветках? И Их же дети (!!! ;) ) читать будут и сошлюстя потом, что "вот у некоего Ивании, после записи через ISCP загрузчик не затирается!" и будут пюлюваться в стиле "вывсёврётии!".
Гвоздь, микроскоп... Вот скажи мне как на AVR обеспечить отсутствие джитера в управляющих сигналах? На STM я задал приоритеты прерываний и шестифазные управляющие сигналы генерятся без каких либо задержек. И при этом по MODBUS в режиме реального времени гонит в компьютер осцилограммы тока и напряжения, а так же каждый период сети считает RMS напряжения для ПИД. 400 точек, 3 фазы расчёт занимает 0.8 мс. На AVR даже памяти не хватит такие массивы держать. Молчу про время расчёта.
АЦП имеет регулировку времени заряда конденсатора УВХ. Выбирай правильно и можешь под своё выходное сопротивление подстроить без всяких операционников. У AVR при выходном сопротивлении источника сигнала больше 10 кОм надо ставить операционник.
Виртуальный COM порт установить удалось. С помощью STM32 ST-LINK Utility загрузил в плату, как вы говорите, загрузчик IDE (generic_boot20_pc13.bin) предварительно поставив Boot 0 в 1. Вернул Boot 0 в 0 и подключил к ПК по USB кабелю. В диспетчере устройств появился maple-dfu. Это не удивило, поскольку рнее драйвер для него мне удалось установить (см. пост 606). Запустил Ардуино, в Uploader metod установил STM32duino bootloader и попробовал залить рабочий скетчь. На этапе загрузки IDE сказала что то про сериал порт и предложила установить драйвер. Средствами Windows в ручную указал папку maple-serial, инсталлер подхватил и произвёл установку и дозалил скетч. Программа заработала адекватно. В диспетчере устройств появился виртуальный COM порт maple-serial. Ранее, без запуска ардуино, на все установочные файлы Windows ругался. Я так понимаю, что что то им без ардуино не хватало. В общем я рад за себя и спасибо всем кто направлял.
Танцы не окончились. Отладил на столе устройство и поставил на объект. По реальным результатам надо изменить программу. Стал подготавливат ноутбук (XP) и опять проблема с драйверами. Делал всё, что и раньше на настольном ПК, но драйвера не встают (видимо совсем дряхлые и давно мясом не кормили). Единственное, что появилось в диспетчере устройств, так это в разделе "Другие устройство" устройство Maple с жёлтым восклицательным знаком. Чувство отвратное , поскольку понимаю, что подсказать здесь не просто. И всё же, утеште меня чем ни будь, а то совсем мерзко на душе.
раз у вас есть STM32 ST-LINK Utility - то может и фиг с ней, с загрузкой через USB? Грузите через Ст-линк и не мучайтесь.
раз у вас есть STM32 ST-LINK Utility - то может и фиг с ней, с загрузкой через USB? Грузите через Ст-линк и не мучайтесь.
Дело в том, что, как раз на случай программной доработки, в устройстве предусмотрел выход USB. А теперь, что бы сделать выход для ST-LINK, так это надо на уши встать. Хотя, когда делал железо, хотел и этот выход предусмотреть, но никак не думал, что будут проблемы с установкой драйверов. А потом, если память совсем не отшибло, там надо и джампером играть. А пока свербит мысль, что же там в наборе совта не хватает, что бы этот самый "wdi-simple.exe" мог нормально раскрутиться. А то "install_drivers.bat" запускается, появляется досовское окно, а затем сообщение, что "wdi-simple.exe" не является приложением win32. Заколдун какой то. Может, я скачиваю необходимое ПО не от туда откуда все скачивают.
Свой пост #610 nосмотрите
Свой пост #610 nосмотрите
С него и начал. См. пост №651
и драйвер как в посте #606 не ставится?
Попробуйте поставить драйвер без бат файла, а ручками. Будут понятны ошибки.
и драйвер как в посте #606 не ставится?
Не ставился. Но в какой то момент с радостью увидел, что появился чистый, без жёлтых вопросов Maple DFU. Зафиксировать момент и действия, вызвавшие нормальную установку Maple DFU к сожалению не могу, какое то колдовство, а действий всяких было сделано много. Увидел и обрадовался - ну уж сейчас всё пойдёт по маслу - уже проходили. Вставляю USB в ноутбук, в разделе "Другие устройства" появляется устройство Maple c жёлтым вопросительным знаком. Через некоторое время появляется Мастер нового оборудования, отсылаю его к файлу usb_device.inf, начинается радующая глаз загрузка драйвера. Но через некоторое время это прерывается с сообщением, что "Произошла ошибка при установке устройства" и "Не правильная секция установки службы в этом INF файле". Устройство Maple с жёлтым вопросом появляется в разделе Порты, а в разделе Другие устройства оно пропадает. Но на настольном ПК эта часть прошла же без запинки. Вобщем мыслей ни каких, а это удручает.
Вобщем сдался я, драйвер так и не установил. Обидно всё это. Буду переделывать железо в плане возможности подключения ST-Link. Заодно выведу контакты Boot, Reset, может быть и светодиод. В связи с этим вопрос. Что нужно сделать с платой что бы ввести её в режим для программировать через ST-Link?
Вобщем сдался я, драйвер так и не установил. Обидно всё это.
я не помню - у вас резистор между PФ12 и 3.3в стоит?
я не помню - у вас резистор между PФ12 и 3.3в стоит?
Одной из мер при этих плясках была именно эта.
Вобщем сдался я, драйвер так и не установил. Обидно всё это. Буду переделывать железо в плане возможности подключения ST-Link. Заодно выведу контакты Boot, Reset, может быть и светодиод. В связи с этим вопрос. Что нужно сделать с платой что бы ввести её в режим для программировать через ST-Link?
Ничего, просто подключть, вы жеж бут заливали )))
Всё сделал как запланировал и программу залил через ардуино IDE. А вот как подглядывать за переменными в этой связке: ардуино IDE, ST-Link. Подскажите, пожалуйста, если это возможно.
Ничего, просто подключть, вы жеж бут заливали )))
Просто подключить у меня не получилось. Получилось когда стёр всю память. Очень даже вероятно, что по не знанию делал что то лишнее.
А вот как подглядывать за переменными в этой связке: ардуино IDE, ST-Link. Подскажите, пожалуйста, если это возможно.
В этой связке никак. Т.к. в Arduino IDE не реализован отладчик (debugger). Но такая возможность есть во "взрослых" IDE типа Keil uVision, IAR Embedded Workbench и т.д. Там реализованы точки останова (breakpoints), просмотр содержимого регистров, переменных и т.д.
После того как в теме "Video на stm32duino" затронули вопрос работы с обычными GPIO через DMA у меня возник интерес на предмет прикрутить генерацию DDS через dma, нашёл готовый примерчик на форуме stm32duino, немного модифицировал, что-б гнать табличный синус на младшие 8 бит порта "A" через R2R ЦАП.
Скетч:
К великому сожалению в режиме dma "memory to memory" нельзя зациклить чтение буффера в кольцо, и для того, чтобы бесконечно "проигрывать" буффер в данном скетче отслеживаю обнуление регистра CNDTR, который делает декремент с пересылкой каждого байта из массива, и как только он обнулится - отключаю dma, записываю заново CNDTR , и включаю dma обратно (без отключения dma этот регистр r/o) . Из-за этой процедуры возникает микросекундная задержка в генерации, которая заметна на осцилограмме получаемого синуса, соответссно для wave-генераторов эта фича наврядли пригодится, а для других нужд вполне.
В остальном по скетчу я думаю всё понятно, канал можно выбирать любой.
На али STM32F103RCT6 (голый чип в партии из 5шт) стоит чуть дороже ста рублей. У него на борту 2 ЦАПа. И DMA в них выводит бесшовно всякие кривули из кольцевого буфера.
Может... не может... Да вы уж разберитесь... что к чему...
Вот здесь все, что нужно (программы, драйвера, инструкции) для начала работы STM32F103C8T6 Arduino IDE: https://yadi.sk/d/-tVdmQ95Kvjj6w
Вот здесь все, что нужно (программы, драйвера, инструкции) для начала работы STM32F103C8T6 Arduino IDE: https://yadi.sk/d/-tVdmQ95Kvjj6w
спасибо, конечно, но вообще-то все необходимое нет никаках проблем найти в официальных источниках, без необходимости лазить по сомнительным ссылкам.
Не знаю, как вы - но я ссылкам Яндекс-диска не доверяю и стараюсь их не открывать.
Ссылки от человека, который первый день на форуме открывать вообще дурной тон :)
Ссылки от человека, который первый день на форуме открывать вообще дурной тон :)
"...бойтесь Данайцев дары приносящих..."
Ссылки от человека, который первый день на форуме открывать вообще дурной тон :)
Что-то уж больно сурово. Мне, например, как начинающему, очень даже полезно - всё в одном флаконе. Ни кто же на форуме не озадачился собрать всё необходимое в одно место да ещё бы со ссылками на первоисточники. А, вот, слабо знающим вместо поверхностной критики проанализировать предложенную подборку на предмет актуальности. (Обидеть ни кого не хотел).
Юрий48, ох, ардуино ide и так всё упрощает, а самостоятельная установка аддонов и библиотек хоть немножко заставляет людей вникнуть в то, что же он будет потом использовать.
Как узнать сколько там реально flash памяти 64k или 128k?
Как узнать сколько там реально flash памяти 64k или 128k?
программа FlashLoader, когда прошивает загрузчик для Ардуино - пишет обьем флеша
Здравствуйте. Имеется плата с st32f103c8t6 (128k). Вопрос такой. Что занимает 10% памяти чипа, если скомпилировать пустой проект? И каким образом можно это исправить? До этого писал на bascom для меги 8, 16, 32, 328. Так там пустой проект занимает 0% для 328 и 1% для 8.
в platformio с поддержкой arduino пустой проект занимает 6,3%
С\СPP Runtime library
Там хранится таблица векторов прерываний. Есть примеры как обойтись без неё, тогда будет весить мало, но функционала не будет, только светодиодиком поморгать в майне
Собственно это весь код, который выполняется в МК. В массиве g_pfnVectors находится начало таблицы векторов, без которых нельзя обойтись. Это адрес начала стека и адрес функции выполняемой при старте (сбросе) МК. Массив занимает 8 байт прошивки.
Функция Reset_Handler выполняется при старте (сбросе) МК и в ней включается тактирование порта GPIOC, а затем его 13 вывод настраивается на работу выходом. После, в цикле инвертируется выход PC13 к которому подключен светодиод и циклом for создается небольшая пауза чтобы было видно как мигает светодиод.
Этот код скомпилировался в прошивку размером 48 байт.
Там хранится таблица векторов прерываний.
Мне кажется. вы очень сильно ошибаетесь. Одна только таблица векторов не занимает 8К. Кроме таблицы там еще куча всего.
Вспомнилось былое нытьё АСМистов... типа "Си отъедает ресурсы зря"... )))))))))))
Да создайте пустой проект в Кейле или ИАРе... и посмотрите... что и на что там отъедается... там лишнего ничего то и нет... по сути... А что там насовывает "platformio" или прочая шняга... это уже к великим "писателям"... этих шняг...
И почему 8 кБ . Минимальная пустая прошивка с оптимизацией весит около 1 кБ. Помимо конкретно таблицы может и ещё что-то идёт, но всё равно связанное с ней. Сути дела это не меняет, по примеру видно, что избавляясь от этого код весит очень мало и работает.
Пытаюсь прошить тоже самое, методом "STLink" - среда отвечает "Загрузка завершена" светодиод начинает мигать медленно как в скетче.
Бутлоадер явно меняется - плата теперь находится как "Maple Serial", но прошить методом "STM32duino-bootloader" так-же как ранее не получается.
в момент прошивки бутлоадера перемычки должны стоять 0-1, а после прошивки - 00
Попробовал шить STLink-ом загрузчик с перемычками 10 и 01 - ничего не меняется, перемычки 10 наверно нужны для заливки через сериал А9 А10?
Иногда ломается нормальный бутлоадер - STLink подключается только первые 2 секунды после ресета, у меня вылечилось прошивкой скетча блинк средой Ардуино через STLink с нажатием ресета сразу после компиляции.
Вроде победил - была кривая Ява, снес все старые и поставил новую - заработало но только если бутлоадер "STM32duino-bootloader-master\bootloader_only_binaries\generic_boot20_pc13.bin" записать STLink-ом родной утилитой и потом писать скетчи по USB, если прошить STLink-ом из Ардуино то загрузка через USB перестает работать.
если прошить STLink-ом из Ардуино то загрузка через USB перестает работать.
естесственно! Писать через загрузчик можно только по USB. Как только вы что-то заливаете ST-link-ом - загрузчик затирается и его надо заново восстанавливать.
Загрузчик не затирается, а заменяется Ардуино на другой содержащий только "Maple Serial", загрузчик "STM32duino-bootloader-master\bootloader_only_binaries\generic_boot20_pc13.bin" после старта на 2 секунды активирует "Maple DFU", если есть что грузить то грузит новую прошивку, если нет то активирует "Maple Serial" и запускает прошивку во флеше.
Вообще-то St-link-ом можно прошивать как угодно, хочешь затирай загрузчик ваш ардуиновский, хочешь не затирай. Нужно только знать его размер. Соответственно в настройках нужно указать с какого места стирать и с тогоже места будет записывать. По умолчания стоит 0x08000000. А будет к прмиеру 0x080002AF. Это так, как пример, нужно знать именно размер загрузчика.
BOOT0 и BOOT1 при прошивки st-link - ом по нулям, ничего переключать не нужно
вот размеры. 2 варианта там
Jump locations for legacy bootloader (0x8005000) and new / smaller bootloder (0x8002000)
Не естественно, одна среда Ардуино, программаторы USBasp и STLink разные но выполняемые в Ардуино функции одинаковые, при прошивке USBasp-ом плат на АТмегах загрузка через USB продолжает работать, при такой-же прошивке STLink-ом платы на STM32 загрузка через USB больше не работает...
Вообще конечно класно, у СТМ32 шустрая математика, большая и быстрая переферия, но реальных задач где СТМ32 лучше АТмег я не вижу...
при прошивке USBasp-ом плат на АТмегах загрузка через USB продолжает работать
вранье. То есть, простите, я хотел сказать - Вы что-то путаете. Причем опять заявляете это с такой же уверенностью, как до того писали про СТМ. хотя теперь видно, что ошибались. Так вот и насчет АВР вы тоже не правы. По умолчанию при прошивке программатором загрузчик на АТМегах стирается. То есть, конечно, вы можете настроить ИДЕ так, чтоб каждый раз вместе с кодом шить и загрузчик, но стандартно так, как я написал выше.
Вообще конечно класно, у СТМ32 шустрая математика, большая и быстрая переферия, но реальных задач где СТМ32 лучше АТмег я не вижу...
у блюпилл в 10 раз больше памяти, чем у Нано, больше портов и более мощная периферия. Так что при одинаковой цене я, наоборот, не вижу ни одного преимущества АТМег перед СТМ32.
Ну да. Регулятор шестифазного тиристорного выпрямителя с ПИД стабилизацией выходного напряжения и меню управления, контролем исправности тирристоров, индикацией режимов и прочими плюшками как то у меня на avr не получилось. На блюпиле даже без операционников на аналоговых входах всё работает. Из обвеса только датчик пересечения нуля и привод тирристоров на оптосиммисторах.
Что Вы говорите!
Сэр, навереное, ничего сложнее блинка не видел?
PS. Мне кажется, если бы с самого начала Ардуина развивалась на STM32, сейчас проблем было бы намного меньше:
- не потребовалось бы согласования по уровням с периферией, которая почти вся работает на 3.3В,
- возможно было бы обойтись меньшим числом различных контроллеров,
- возможно было бы провести гораздо более глубокую унификацию софта,
- ну и ресурсы...
У дешевых СТМ32 в основном АЦП с приличным постоянным(0,5 В на 100 КОм для STM32F103) и небольшим но вполне заметным ИМПУЛЬСНЫМ(внутри только 5 пФ но для сопротивления источника 100 КОм время заряда до точности 0,1% будет 3,5 мкс) током на аналоговых ВХОДАХ и не забываем к этому добавлять обычную(Typ Total unadjusted error = 3 LSB) ошибку самого АЦП.
В среде Ардуино на ATmega328P получается более 12 000 измерений в секунду, мне пока для хим/физ оборудования и света хватает с диким запасом, обрабатывать звук никто в здравом уме не станет ни на ATmega328P ни на STM32F103C.
32 КБ флеша это гдето 3000 - 8000 строк СВОЕГО кода, если не пихать мусор в скетч.
Для меня блинк на СТМ32 вообще стал откровением:
ATmega328P как UNO "Скетч использует 930 байт (2%) памяти устройства. Глобальные переменные используют 9 байт"
STM32F103C8T6 как STM32F103C "Скетч использует 14356 байт (21%) памяти устройства. Глобальные переменные используют 3088 байт (15%) динамической памяти" что!? 14 КБ флеша и 3 КБ оперативки!!!
Меня пока устраивают(работают без ошибок) согласователи из 1-2х резисторов, а вот в схемах на STM32 согласователи на микросхемах вижу постоянно.
Я не имею ничего против СТМ32, но только там, где его применение оправдано.
Думаю дальше спорить безсмысленно.
У дешевых СТМ32 в основном АЦП с приличным постоянным(0,5 В на 100 КОм для STM32F103) и небольшим но вполне заметным ИМПУЛЬСНЫМ(внутри только 5 пФ но для сопротивления источника 100 КОм время заряда до точности 0,1% будет 3,5 мкс) током на аналоговых ВХОДАХ и не забываем к этому добавлять обычную(Typ Total unadjusted error = 3 LSB) ошибку самого АЦП.
В среде Ардуино на ATmega328P получается более 12 000 измерений в секунду, мне пока для хим/физ оборудования и света хватает с диким запасом, обрабатывать звук никто в здравом уме не станет ни на ATmega328P ни на STM32F103C.
32 КБ флеша это гдето 3000 - 8000 строк СВОЕГО кода, если не пихать мусор в скетч.
Для меня блинк на СТМ32 вообще стал откровением:
ATmega328P как UNO "Скетч использует 930 байт (2%) памяти устройства. Глобальные переменные используют 9 байт"
STM32F103C8T6 как STM32F103C "Скетч использует 14356 байт (21%) памяти устройства. Глобальные переменные используют 3088 байт (15%) динамической памяти" что!? 14 КБ флеша и 3 КБ оперативки!!!
Меня пока устраивают(работают без ошибок) согласователи из 1-2х резисторов, а вот в схемах на STM32 согласователи на микросхемах вижу постоянно.
Я не имею ничего против СТМ32, но только там, где его применение оправдано.
Думаю дальше спорить безсмысленно.
А ты, вапще, в теме? Или в паралельной лиарьности?
О как! "А ты говоришь: "Зачем багор?". (с)
Тут же каждая фраза - перл! Я их даже строками выделил!
----------
И вот это чудо тоже "мнение имеет"... Не, я конечно за демократию и плюрализьмус, но разве можно такое оставлять в ветках? И Их же дети (!!! ;) ) читать будут и сошлюстя потом, что "вот у некоего Ивании, после записи через ISCP загрузчик не затирается!" и будут пюлюваться в стиле "вывсёврётии!".
Гвоздь, микроскоп... Вот скажи мне как на AVR обеспечить отсутствие джитера в управляющих сигналах? На STM я задал приоритеты прерываний и шестифазные управляющие сигналы генерятся без каких либо задержек. И при этом по MODBUS в режиме реального времени гонит в компьютер осцилограммы тока и напряжения, а так же каждый период сети считает RMS напряжения для ПИД. 400 точек, 3 фазы расчёт занимает 0.8 мс. На AVR даже памяти не хватит такие массивы держать. Молчу про время расчёта.
АЦП имеет регулировку времени заряда конденсатора УВХ. Выбирай правильно и можешь под своё выходное сопротивление подстроить без всяких операционников. У AVR при выходном сопротивлении источника сигнала больше 10 кОм надо ставить операционник.