27 Сен., 2021, 23:39

Труд рождает мудрость и чистоту; леность рождает невежество и чувственность.

Генри Дэвид Торо


STM32 :: пытаемся разобраться

Автор zenon, 22 Окт., 2020, 00:20

« предыдущая - следующая »

Slabovik

24 Нояб., 2020, 20:33 #25 Последнее редактирование: 24 Нояб., 2020, 21:36 от Slabovik
У них вроде конвертатор есть (фирмварь ST-link'а заменяют с возможностью восстановления обратно).
https://www.segger.com/products/debug-probes/j-link/models/other-j-links/st-link-on-board/
Надо пробовать, но я завис на лабораторнике, а тянуть несколько дел одновременно не получается.

upd: у китайцев J-Link имеется, вполне вменяемо. https://sysadmin.link/?p=2522
Общением на форуме подпитываю свою эгоистичную, склонную к самолюбованию сущность.

zenon

Ну вот, только я засел на линукс... опять перегружаться... :)
offtop:
Я пока собрал вот так (пидб), на выходе 4хtip35с.
... получилась неплохая полочка на столе... сверху ещё кусок фанеры, брутально короче. :)))

zenon

24 Нояб., 2020, 22:08 #27 Последнее редактирование: 24 Нояб., 2020, 22:49 от zenon
Не, пока не могу/хочу ничего из того, что видел, да понимаю, что тыкаюсь в geany неэффективно... но нужна ли мне эффективность? Если мне всего-то и надо помигать, почитать ацп...
Перешил в j-link - опять какие-то лицензии... да епрст.
Мне надо, чтобы было просто и понятно, вот редактор, вот терминал, командная строка, make etc.
Взглянув очередной раз на Hal, куб, эклипс понял что пока они у меня вызывают стойкое отвращение, может что-нибудь изменится...
Вот например интерфейс ардуины - аж вздрагиваю, к тому, что на яве наверное никогда не привыкну.
Но это сугубо моё отношение на данный момент. :))

zenon

Решил посмотреть как через чтение пина работать будет, и будет ли вообще... :)
Источник.
Моё видео.
Оно то конечно не для использования, так - побаловаться.

zenon

27 Нояб., 2020, 09:08 #29 Последнее редактирование: 27 Нояб., 2020, 10:22 от zenon
Решил бороться со своими привычками, они - зло.
Ну сильная же штука segger, видно сразу, тут хоть часть от неё поиспользовать.
... и мимо usart никак не пройти, разбирался вчера и с тем и с тем, попутно освежив в памяти по диагонали разницу между uart и usart, опять-же плохая привычка оставлять разборки деталей на потом.
В итоге в segger запустил usart? (или uart :) ) по-простому передачу и прерывание на приём, можно было сразу с dma выдрать - примеров предостаточно, но это не наш подход.
Попробовал и в линукс и в вин, всё работает, терминал, дебаг etc.
Не разобрался пока как переменные в отслеживание добавить...
Код в процессе... лишних комментариев из разных мест много, не всё правильно.
Передаёт в терминал символы, при приёме любого зажигает на чуть-чуть светодиод.

Slabovik

27 Нояб., 2020, 13:36 #30 Последнее редактирование: 27 Нояб., 2020, 14:24 от Slabovik
Вот ещё описание интересного инструмента от Segger https://habr.com/ru/post/259205/
и ссылка на официальную страничку https://www.segger.com/products/debug-probes/j-link/technology/about-real-time-transfer/
Насколько я понимаю, для использования нужно только включить библиотеку в код и пользоваться её функциями для вывода чего-то нужного для отладки.

зы: USART - более сложное устройство т.к. является синхронным.  Краткий болтологический ликбез: https://www.rlocman.ru/review/article.html?di=164400

Кстати, SPI - это типичный USART, I2C - тоже, как и множество других. Самый прикольный пример USART - манчестерский код, который можно было просто записывать на магнитофон, чем и пользовались для хранения программ во времена Радио-86 (гы: Spectrum этот код не использовал, из-за чего вывод-ввод на магнитофон у него был более унылым).

p.s. и просто оставлю чуток ссылок в копилку ликбеза: как прошить STM32

https://blog.kvv213.com/2020/01/kak-proshit-chip-stm32/
http://dimoon.ru/obuchalka/stm32f1/programmirovanie-stm32-chast-14-proshivaem-stm32-cherez-st-link.html
https://www.drive2.ru/b/2228288/
http://microsin.net/programming/arm/um1075-st-link-debugger-programmer-for-stm8-and-stm32.html
Ну а что, пусть будет  :)
Общением на форуме подпитываю свою эгоистичную, склонную к самолюбованию сущность.

zenon

Пытаюсь понять как назначаются альтернативные функции.
Меня сейчас интересует таймер TIM1_CH1.
Даташит тут. Reference manual.
В сниппетсах это делается так:
GPIOA->MODER = (GPIOA->MODER & ~(GPIO_MODER_MODER8)) | (GPIO_MODER_MODER8_1);
GPIOA->AFR[1] |= 0x02;
у меня получилось методом непонятным... вот так:
GPIOA->MODER  |= GPIO_MODER_MODER8_1;
GPIOA->AFR[1] |= (0x2 << 0*4);
Никак я с такими выкрутасами не разберусь... что и откуда берётся и как складываются две тетрады.
Для PA8 TIM1_CH1 это AF2. Весь байт значит у нас находится в GPIOA->AFR[2] судя из даташита... почему в примере AFR[1]?
И как получилось что он равен 0x02?

zenon

Дабы разобраться с битовыми операциями запустил отладку и смотрю что и куда.
В коде специально подробно для себя расписал...
Приёмник работает. :)

zenon

Эммм, начал искать vref у stm32f030, а его отдельного и нету. Он на vdda.
Цитата: undefinedVref- and Vref+ are only available as external pins on LQFP144, UFBGA132, LQFP100, UFBGA100, and TFBGA64 packages, otherwise they are bonded to Vssa and Vdda, respectively.
И куда же тогда точную опору ставить? На vdda/vssa? Какое напряжение тогда?

Slabovik

Если я правильно понимаю, VDDA ровно такой же, как и Vcc, просто питает он аналоговые цепи. Точность и "плывучесть" со всеми вытекающими напрямую зависит от точности и плывучести применённого стабилизатора питания (его можно индивидуально для VDDA забацать).

Для проведения точный измерений в таком случае всё-равно внешний АЦП с прецизионной опорой ставить, ну, или искать чип, где Ref выведен наружу...
Общением на форуме подпитываю свою эгоистичную, склонную к самолюбованию сущность.

zenon

VREF+ and VREF- inputs are available only on 100-pin packages.
Не понимаю я почему такая политика у них, вроде есть 12 бит... а тут так.