Stm32 с чего начать изучение...

Кто любит RISC в жизни, заходим, не стесняемся.
Zapolyarny
Встал на лапы
Сообщения: 123
Зарегистрирован: Чт май 07, 2026 00:30:38

Re: Stm32 с чего начать изучение...

Сообщение Zapolyarny »

КРАМ писал(а): Пт июн 05, 2026 00:38:49 Именно для этого они и предназначены. В них пишут ЕДИНИЦУ (ноль не исполняется).
Да, я так и думал. Поэтому, недавно прочитанная документация на контроллеры CH32V несколько удивила - почему доступ только в 16-битном формате? Или они что-то иное имели ввиду? Непонятно.
Just_Fluffy писал(а): Пт июн 05, 2026 00:41:36 И нельзя загнать сразу двойное слово, где будет и установка нужных битов, и сброс.
Вы будете смеяться, у них есть и такой регистр :) GPIOx_BSHR, но, установка имеет приоритет перед сбросом, а сброс лежит в старшей половине регистра.
(упс, Вы же про него и написали. Прошу прощения, каким-то образом я не увидел... наверное, вижу только то, что хочется, и это печально.)

вот он (прошу прощения за оффтоп, это не имеет отношения к STM32):

Изображение

(а ещё забавно, что у этого контроллера нет битовых операций, нет такого расширения именно в этом RISC-V. Но я могу очень сильно ошибаться, начал изучать совсем недавно.)
Вложения
1.jpg
(61.71 КБ) 101 скачивание
Последний раз редактировалось Zapolyarny Пт июн 05, 2026 04:17:34, всего редактировалось 2 раза.
Реклама
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25356
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Stm32 с чего начать изучение...

Сообщение КРАМ »

Zapolyarny писал(а): Пт июн 05, 2026 00:46:14 почему доступ только в 16-битном формате?
Из чего это следует?
Оффсет регистра в домене соответствует 32 битам.
Реклама
Zapolyarny
Встал на лапы
Сообщения: 123
Зарегистрирован: Чт май 07, 2026 00:30:38

Re: Stm32 с чего начать изучение...

Сообщение Zapolyarny »

КРАМ писал(а): Пт июн 05, 2026 00:56:31 Из чего это следует?
Эээ... из описания. Выше на картинке (не STM32).
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25356
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Stm32 с чего начать изучение...

Сообщение КРАМ »

Zapolyarny писал(а): Пт июн 05, 2026 00:58:51 Выше на картинке.
И как из этой картинки следует 16-битный доступ?
Оффсет для всех 32 бит указан один.
Реклама
Эиком - электронные компоненты и радиодетали
Zapolyarny
Встал на лапы
Сообщения: 123
Зарегистрирован: Чт май 07, 2026 00:30:38

Re: Stm32 с чего начать изучение...

Сообщение Zapolyarny »

Из их слов "These bits can only be accessed in the form of 16 bits".
Я даже китайско-язычную версию взял - там тоже самое.
Вот и не понимаю. 32-битные регистры портов. 8 бит (а у того, что на картинке 8+8) .Доступ в 16-битном :)
Полагаю, что моё понимание отличается от написанного и общепринятого. Но не вижу, в чём.
Может, в этом случае адресация и данные умещаются в одну команду? :dont_know:

сейчас просто посмотрю на практике.

посмотрел.
Нет, нет разницы, инструкции одинаковы при различных способах и к различным регистрам.
Реклама
Rapra
Мучитель микросхем
Сообщения: 430
Зарегистрирован: Пн фев 16, 2026 17:30:02

Re: Stm32 с чего начать изучение...

Сообщение Rapra »

Just_Fluffy писал(а): Пт июн 05, 2026 00:41:36 Регистр BSRR является 32-битным. Он разделен на две части:
Младшие 16 бит (0–15): Установка пинов в 1 (Set).
Старшие 16 бит (16–31): Сброс пинов в 0 (Reset).
Мне почему то кажется, что данная фраза значит, что в этот регистр нужно писать пословно, т.е. по 16 бит. И нельзя загнать сразу двойное слово, где будет и установка нужных битов, ]
Не дочитали мануал. Потому как там даже напрямую сказано, что при одновременной записи BSx и BRx приоритет имеет BSx, то есть установка пина в лог.1. Как это применять на практике:

Код: Выделить всё

GPIOA->BSSR = (mask << 16) | (data & mask);

Что это делает - это запись выходного значения по маске, атомарный аналог записи в ODR по маске. (mask << 16) сбрасывает все ножки по маске в 0, а (data & mask) одновременно устанавливает в 1 ножки, указанные в data. Раздельная запись BS и BR в этом случае будет давать паразитный импульс перехода в 0 тех ножек, которые должны оказаться в 1.

Однако, в некоторых файлах описания регистр BSRR представлен в структуре GPIO_Typedef виде двух раздельных 16-битных BSRRH и BSRRL, хоть и расположены они рядом. Но мануал не запрещает писать в 32-битной разрядности. Объединить в один 32-битный в этом случае можно так:

Код: Выделить всё

 *((uint32_t*)&gpio->BSRRL) =   
Кстати. В ODR так же можно записать половину порта, использовав приведение к 8-битной разрядности:

Код: Выделить всё

*((uint8_t*)&GPIOA->ODR) = 0x55; // запись в PA0 - PA7
*((uint8_t*)&GPIOA->ODR + 1) = 0xAA; // запись в PA8 - PA15 
Однако, этот способ имеет ограничение и не будет работать например на STM32F1xx, где запись в ODR возможна только 16-битной разрядности.
Реклама
Zapolyarny
Встал на лапы
Сообщения: 123
Зарегистрирован: Чт май 07, 2026 00:30:38

Re: Stm32 с чего начать изучение...

Сообщение Zapolyarny »

Rapra писал(а): Пт июн 05, 2026 03:37:11 Однако, в некоторых файлах описания регистр BSRR представлен в структуре GPIO_Typedef виде двух раздельных 16-битных BSRRH и BSRRL, хоть и расположены они рядом.
Это удобно, да. И, получается, этот регистр у CH32V совпадает с STM32. Но у CH32V есть ещё и отдельный сброс через Port Reset Register (GPIOx_BCR), где только одна группа младших битов. В этом есть какая-то хитрость? или это просто артефакт при подсмотре/копировании/наследовании/развитии архитектур?
Rapra
Мучитель микросхем
Сообщения: 430
Зарегистрирован: Пн фев 16, 2026 17:30:02

Re: Stm32 с чего начать изучение...

Сообщение Rapra »

У STM32F1xx (это самая старая линейка у STM) есть отдельный 16-битный регистр BRR, чисто для сброса. И полный 32-битный регистр BSRR для BS и BR. В последствии модуль GPIO переделали и получился один 32-битный BSRR.
CH32V возможно скопировали идею со старых STM-ов.
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25356
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Stm32 с чего начать изучение...

Сообщение КРАМ »

Zapolyarny писал(а): Пт июн 05, 2026 01:02:36 Из их слов "These bits can only be accessed in the form of 16 bits".
Полагаю это кривым изложением мысли о том, что нет побитного доступа.
Потому что в следующем предложении утверждается приоритет BS битов, если одновременно оба бита (BS и BR) будут установлены.
Опять же невозможно отключить 32 битный доступ в 32 битном контроллере при выровненном обращении. Оффсет всего регистра кратен 32 битам, значит запись в домен порта со смещением 0х10 32-битной загрузкой неизбежно модифицирует все 32 бита.
При необходимости выполнить "These bits can only be accessed in the form of 16 bits" потребовалось бы сместить старшие 16 бит в адрес кратный 32 битам.
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25356
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Stm32 с чего начать изучение...

Сообщение КРАМ »

Rapra писал(а): Пт июн 05, 2026 05:10:04 CH32V возможно скопировали идею со старых STM-ов.
Есть такое мнение, что все идеи периферии покупаются как IP-блоки у сторонних разработчиков. Особенно если это касается фаблесс-компаний.
Ну и выше я привел свой довод относительно доступа в 16 бит.
Так же добавлю, что попытка оригинальничать в вопросах периферии делает несовместимым код при переходе на продукцию любителя пооригинальничать. Это противоречит его бизнесу.
Одинаковая периферия - это способ получить чужих клиентов, а не копирование чужой продукции за неимением своего.
Аватара пользователя
Zikon
Встал на лапы
Сообщения: 99
Зарегистрирован: Вт фев 28, 2017 08:13:31
Откуда: Свердловская обл.

Re: Stm32 с чего начать изучение...

Сообщение Zikon »

посмотрел доки на CH32V
в каком конкретно чипе указано
"These bits can only be accessed in the form of 16 bits". ?

открыл RM на младший CH32V003
чётко написано 32 бит доступ ко всем регистрам
и префикс в наименовании R32_ об этом говорит

А наименования переделали а функции те же что и у STM32F103
(вся переферия скопирована с него)
BSHR - это BSRR
BCR - это BRR
Вложения
gpio.jpg
(144.87 КБ) 2 скачивания
Zapolyarny
Встал на лапы
Сообщения: 123
Зарегистрирован: Чт май 07, 2026 00:30:38

Re: Stm32 с чего начать изучение...

Сообщение Zapolyarny »

Zikon писал(а): Пт июн 05, 2026 06:41:04 в каком конкретно чипе указано
"These bits can only be accessed in the form of 16 bits". ?

открыл RM на младший CH32V003
чётко написано 32 бит доступ ко всем регистрам
и префикс в наименовании R32_ об этом говорит
Выше приводил картинку, это как раз из RM последней версии на CH32V003.
Более того, эта надпись и в CH32V00XRM и CH32V003RM на китайском языке, то есть, оригинале производителя.

На Вашей картинке чётко написано не "32 бит доступ ко всем регистрам", а:
"Если не указано иное, регистры GPIO должны работать в режиме слова (32-бита)."
КРАМ писал(а): Пт июн 05, 2026 05:30:43 Rapra писал(а): Пт июн 05, 2026 05:10:04
CH32V возможно скопировали идею со старых STM-ов.
Есть такое мнение, что все идеи периферии покупаются как IP-блоки у сторонних разработчиков. Особенно если это касается фаблесс-компаний.
Ну и выше я привел свой довод относительно доступа в 16 бит.

КРАМ, Rapra, спасибо!
Я немного предполагал, что просто искажение информации, тем более, что в спецификациях там более чем достаточно ляпов, особенно в местах, располагающих к копи/пасте. Но без опыта доверять своим предположениям опасаюсь.
Аватара пользователя
Zikon
Встал на лапы
Сообщения: 99
Зарегистрирован: Вт фев 28, 2017 08:13:31
Откуда: Свердловская обл.

Re: Stm32 с чего начать изучение...

Сообщение Zikon »

Всё понятно, в данном контексте надо смотреть всё-таки на список регистров,
и доступ к регистрам
а данное выражение "These bits can only be accessed in the form of 16 bits"
в конкретном поле регистра
скорее всего - "Вы можете управлять только 16 бит порта"

и у STM32F103 - Тоже подобная фраза есть
"These bits are write-only and can be accessed in Word mode only."
скопировали и перефразировали

Больше похоже что STM32 какие-то баги в доке, а остальные копируют
// PY32 нет этой фразы про 16бит(Word) и наименования нормальные от STM32
// ах, да они уже копировали с STM32F0xx - там нормально всё

И в CH32X035 нет этих выражений, может внимательно прочитали и исправили
так как в CH32X035 порты есть до 24 бит и добавлены доп регистры
например
BSXR - то же что и BSHR только для 16-23 битов
и др.
tonyk
Это не хвост, это антенна
Сообщения: 1312
Зарегистрирован: Вт ноя 19, 2019 06:10:18

Re: Stm32 с чего начать изучение...

Сообщение tonyk »

КРАМ писал(а):Есть такое мнение, что все идеи периферии покупаются как IP-блоки у сторонних разработчиков.
Так и есть. Попадался документ от самой ST, в котором была таблица их МК с указанием какая периферия у кого куплена, даже версия IP-блока была указана. Более того, на форумах попадались фразы про другие МК, в стиле "а это тут сделано как в STM32, поэтому возьми описание регистров периферии из STm32F...". Китайцы не_копируют STM32, а просто покупают периферию там же, где и ST, зачастую более свежие версии с исправленными ошибка. Ну, а то, что адреса периферии у китайцев как у ST, так то чистая случайность, адреса ведь не защищаются патентами.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18647
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Stm32 с чего начать изучение...

Сообщение ARV »

КРАМ писал(а): Чт июн 04, 2026 23:16:48 Вы невнимательно читали даташиты, Роман.
Сопротивления каналов открытых выходных ключей определяются по падению напряжения на каналах при заданном токе канала. Этот параметр есть во всех даташитах на МК.
Вы невнимательно читаете мои сообщения. Сопротивление канала и заявленная способность ограничивать ток - это не одно и то же. Если бы пин был способен работать в режиме ограничения тока, это было бы описано в документации. Внешний резистор гарантирует, что при имеющемся питании никогда (пока исправен резистор) ток через пин не превысит определенное значение, не взирая на все его (пина) внутренние структуры.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18647
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Stm32 с чего начать изучение...

Сообщение ARV »

Transformer-V писал(а): Чт июн 04, 2026 23:38:10 Нельзя и даже в приделах одного порта, потому что железобетонно:
1) Неравенство токов;
2) Сквозные токи.
Если я правильно понимаю, то технологически невозможно изготовить кристалл, в котором бы соседние транзисторные структуры отличались друг от друга сколько-нибудь существенно, если эти структуры "по схеме" одинаковы. На том стоит вся промышленность интегральных микросхем. Два пина одного порта по параметрам переключения, сопротивления каналов в открытом состоянии и утечке в закрытом, а так же по емкостям затворов и другим (паразитным) будут отличаться не более, чем никак, тысячные доли процента. И параллельное соединение выходов, управляемых одновременно - официально оговариваемая возможность всех логических схем, к которым, безусловно, и МК относится.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25356
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Stm32 с чего начать изучение...

Сообщение КРАМ »

ARV писал(а): Пт июн 05, 2026 08:14:46 Вы невнимательно читаете мои сообщения. Сопротивление канала и заявленная способность ограничивать ток - это не одно и то же.
Роман, вы ожидаемо самонадеяны... :tea:
Ограничение тока в ПУШПУЛЬНОМ выходе порта обеспечивается фиксированным питанием. То есть ток не может превысить величину равную отношению напряжения питания к сопротивлению открытого канала P-канального мосфета. Это раз.
Второе состоит в том, что ЛЮБОЙ БАЛЛАСТНЫЙ ИМПЕДАНС имеет свойство ограничивать ток. Не в смысле стабилизации тока, а в смысле его ограничения при определенном ЭДС контура цепи.
ARV писал(а): Пт июн 05, 2026 08:18:37 Если я правильно понимаю, то...
Вы абсолютно правильно понимаете, Роман. Вы просто не привыкли к словесному мусору, который сопровождает всякое появление в технической части форума Трансформера-В. Впрочем, в МЯУ он так же умудряется нести ахинею. Привычка - вторая натура.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18647
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Stm32 с чего начать изучение...

Сообщение ARV »

КРАМ писал(а): Пт июн 05, 2026 08:24:07 То есть ток не может превысить величину равную отношению напряжения питания к сопротивлению открытого канала P-канального мосфета.
Вы забыли, что ток может в открытый пин ВТЕКАТЬ, и прекрасно может превысить всё, что угодно, если СНАРУЖИ не ограничен
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25356
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Stm32 с чего начать изучение...

Сообщение КРАМ »

ARV писал(а): Пт июн 05, 2026 08:37:22 ток может в открытый пин ВТЕКАТЬ
Ответьте, Роман, себе на вопрос - мог ли я забыть про сей факт, если КОНКРЕТНО УКАЗАЛ на тип порта (пушпул) и упомянул сопротивление открытого канала только P-канального мосфета? :)
В пушпульной схеме вы не сможете превысить питание нагрузки более чем на падение напряжения на боди-диоде Р-канального мосфета.
В оупен дрейне ЕСТЕСТВЕННО вы можете спалить транзистор, однако и там есть ограничение в 5 Вольт, поскольку превышение этого значения приведет к пробою канала уже в закрытом состоянии ключа. То есть и там имеется естественное ограничение тока величиной 5/65=76мА. Да, эта величина превышает абсолютные лимиты даташита....
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18647
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Stm32 с чего начать изучение...

Сообщение ARV »

КРАМ писал(а): Пт июн 05, 2026 08:49:06 Ответьте, Роман, себе на вопрос - мог ли я забыть про сей факт, если КОНКРЕТНО УКАЗАЛ
В том и вопрос, что когда я пишу что-то, я имею ввиду одно, а когда вы мне возражаете, вы оговариваете другие условия. Как и все прочие - спорят не со мной, а с тем, что сами про меня за меня придумали. И в таких условиях я всегда не прав, естественно...

Мы берем МК, берем его ПИН, и знаем о нем только документированные параметры. Я тупо беру, и вешаю на него реле, трехвольтовое. Ну, тупой я, вешаю. Когда я отключаю катушку, выброс ЭДС будет раз в 5 выше VCC контроллера, и без резистора никакие сопротивления его каналов, хоть пушпульные, хоть опендайные, хоть вообще в аналоговом режиме работаюшие, не спасут МК от выгорания. Только эту мысль я и хотел донести. А правильно рассчитанный резистор свел бы подобную вероятность к нулю. Мой дебильный пример с реле вполне может быть заменен на более реальный, если нагрузить пин на затвор мосфета, коммутирующего 100-вольтовую нагрузку - тут за счет паразитной емкости на пин МК может попасть 100В, которые на 40-70 Омах сопротивления его каналов дадут наносекундный ток под 2 ампера...

Ну и, наконец, чтобы больше не спорить: покажите кусочек схемы своих разработок, коими вы так гордитесь, где на затвор полевика с выхода МК вы подаете сигнал напрямую, без резистора. Увижу - заткнусь навсегда.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Ответить

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