Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
2 / 2 / 1
Регистрация: 11.07.2016
Сообщений: 152

Устройство памяти в STM32

08.01.2022, 14:05. Показов 3796. Ответов 58
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго дня!!!
Разбираюсь STM32F411 в мануал пишут под GPIOA выделено памяти с адресным пространством с 0х4002 0000-0х4002 03FF если правильно считаю это 1Кб. для конфигурирования GPIOA нам доступны 10 32bitных регистра это 40 байт. Вопрос: Зачем для GPIO столько памяти выделено?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.01.2022, 14:05
Ответы с готовыми решениями:

USB - Составное устройство.. STM32.
Всем привет. Есть задача - подключить к STM32F4 принтер HP, причем принтер не простой, а МФУ, да еще и с картридером.. USB-сниффер...

Выравнивание памяти в stm32
Соственно сабж Нигде не найду как организована память. В документации по этому поводу нашел только, что выбирать из памяти можно...

STM32, динамическое выделение памяти
Доброго времени суток! Никто не работал с динамическим выделением памяти (calloc, malloc, free) на STM32? Пишу в Atotlic True Studyo...

58
75 / 66 / 12
Регистрация: 09.02.2016
Сообщений: 940
Записей в блоге: 17
09.01.2022, 00:09
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Через BSRR ненамного дольше.
Только зачем вы работу с этой линией сделали через подпрограммы?
судя по меткам работа с дисплеем, и некоторые из них любят когда передергивают CS в обязательном порядке при смене вида передаваемых данных...

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
А при чем здесь гарвардская архитектура?
как скажете

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Это ведь не про адресные пространства, а про различные инструкции доступа к разным памятям.
то есть в этом своем утверждении вы не видите противоречия ? :-)
ОК. я не против.
0
Windows must die
610 / 883 / 104
Регистрация: 23.11.2021
Сообщений: 5,170
Записей в блоге: 19
09.01.2022, 00:13
Цитата Сообщение от ВитГо Посмотреть сообщение
кстати пример
Абсолютно бессмысленный, между прочим, т.к. то же самое действие делается аналогично с BSRR! А учитывая то, что дергать одним пином редко когда нужно, битбандинг вообще лишается какого-либо смысла...
0
75 / 66 / 12
Регистрация: 09.02.2016
Сообщений: 940
Записей в блоге: 17
09.01.2022, 00:16
Цитата Сообщение от Eddy_Em Посмотреть сообщение
Абсолютно бессмысленный, между прочим, т.к. то же самое действие делается аналогично с BSRR!
ну вы наверное никогда не меняли размер передачи по spi на лету :-) там bsrr нет :-)

а вообще я же не навязываю :-) еще раз отошлю к тому офтопу что уже писал выше
0
Windows must die
610 / 883 / 104
Регистрация: 23.11.2021
Сообщений: 5,170
Записей в блоге: 19
09.01.2022, 00:21
Цитата Сообщение от ВитГо Посмотреть сообщение
передергивают CS в обязательном порядке
Делается макросом через BSRR. Занимает те же самые 2 инструкции. А дальше опять включается передача данных через DMA.
Я поначалу думал, что на STM8 можно решить основную массу моих задач (добавив для USB преобразователь CH340), но потом понял, что все же STM32 ненамного дороже (по крайней мере, 2 года назад STM8S103 + CH340 стоили дороже, чем готовый STM32F072), да забросил восьмибитки совершенно. Ну и скорость вычислений радует. Пусть нет аппаратных делений и флоатов, но в STM8 флоатов тоже нет, а аппаратное деление ненамного быстрей софтового у STM32!
Но DMA — это просто кайф!
Добавлено через 1 минуту
Цитата Сообщение от ВитГо Посмотреть сообщение
размер передачи по spi на лету
Дико бессмысленная задача. Ну и все равно операция смены бита будет выкладываться в те же две инструкции!!!
0
75 / 66 / 12
Регистрация: 09.02.2016
Сообщений: 940
Записей в блоге: 17
09.01.2022, 00:24
Цитата Сообщение от Eddy_Em Посмотреть сообщение
Ну и все равно операция смены бита будет выкладываться в те же две инструкции!!!
ну у вас может и в две :-) а вообще то достаточно одной. но я не настаиваю.
вы все конечно правы :-)

Добавлено через 1 минуту
Цитата Сообщение от Eddy_Em Посмотреть сообщение
Дико бессмысленная задача.
ого, как безаппеляционно... ну ладно, подождем когда вам нужно будет выжать из дисплея максимум не применяя двойной буфер...
0
Windows must die
610 / 883 / 104
Регистрация: 23.11.2021
Сообщений: 5,170
Записей в блоге: 19
09.01.2022, 00:27
Цитата Сообщение от ВитГо Посмотреть сообщение
вообще то достаточно одной
Не получится: сначала инициируем константу, потом заносим ее в регистр.
Цитата Сообщение от ВитГо Посмотреть сообщение
когда вам нужно будет выжать из дисплея максимум не применяя двойной буфер.
Для таких ситуаций нужен дисплей с собственным буфером. А вообще, в случае динамической индикации без двойного буфера вообще никак не обойтись: пока DMA обновляет дисплей старым буфером, мы заполняем новый. А потом передаем в DMA адрес второго буфера...
0
Эксперт по электронике
7151 / 3330 / 342
Регистрация: 28.10.2011
Сообщений: 13,138
Записей в блоге: 7
09.01.2022, 00:55
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Задач, где нужно в оперативке изменить всего 1 бит крайне мало.
Установка/сброс флагов.
Выполняется атомарно в отличие от чтение/модификация/запись.
0
75 / 66 / 12
Регистрация: 09.02.2016
Сообщений: 940
Записей в блоге: 17
09.01.2022, 01:00
Цитата Сообщение от Eddy_Em Посмотреть сообщение
Не получится: сначала инициируем константу, потом заносим ее в регистр.
ну да, ну да :-) особенно если не выделить изначально перед групповой операцией пару регистров с 1 и 0, тогда да, тогда инициализировать придется.. обязательно :-) а если выделить. то все станет веселее :-)

Добавлено через 1 минуту
Цитата Сообщение от Eddy_Em Посмотреть сообщение
Для таких ситуаций нужен дисплей с собственным буфером. А вообще, в случае динамической индикации без двойного буфера вообще никак не обойтись: пока DMA обновляет дисплей старым буфером, мы заполняем новый. А потом передаем в DMA адрес второго буфера...
угу, я давно говорю что все эти новомодные языки приводят только к удорожанию железа :-) причем как того для которого программируют, так и того на котором :-)
0
 Аватар для COKPOWEHEU
4146 / 2724 / 433
Регистрация: 09.09.2017
Сообщений: 12,065
09.01.2022, 02:16
Цитата Сообщение от ВитГо Посмотреть сообщение
судя по меткам работа с дисплеем, и некоторые из них любят когда передергивают CS в обязательном порядке при смене вида передаваемых данных...
Так подпрограммы-то зачем? Что мешало оформить макросом и встраивать прямо в код?
Цитата Сообщение от ВитГо Посмотреть сообщение
то есть в этом своем утверждении вы не видите противоречия ? :-)
Нет, не вижу. Допустим, периферия располагается в отдельном адресном пространстве, доступ к которому осуществляется какими-нибудь in/out. Что мешает сделать это адресное пространство "дырявым"?
Цитата Сообщение от ВитГо Посмотреть сообщение
ну вы наверное никогда не меняли размер передачи по spi на лету :-) там bsrr нет :-)
Ну я менял. Но это делается один раз на пол-килобайта данных. Опять не то место, где надо экономить такты.
Цитата Сообщение от ВитГо Посмотреть сообщение
ого, как безаппеляционно... ну ладно, подождем когда вам нужно будет выжать из дисплея максимум не применяя двойной буфер...
Например, так? https://www.youtube.com/watch?v=afyTgpuA6sc
Цитата Сообщение от locm Посмотреть сообщение
Установка/сброс флагов.
Выполняется атомарно в отличие от чтение/модификация/запись.
Да, один из вариантов. Хотя и там можно обойтись без этого.
Цитата Сообщение от ВитГо Посмотреть сообщение
угу, я давно говорю что все эти новомодные языки приводят только к удорожанию железа
Вы из какого года пишете что Си называете новомодным?
0
Эксперт .NET
 Аватар для Rius
13398 / 7852 / 1700
Регистрация: 25.05.2015
Сообщений: 23,869
Записей в блоге: 14
09.01.2022, 02:39
Bit-bandig нужен для атомарного доступа к битам. Там, где BSRR и пр. нет, например, в SRAM.
В миландровском вот 1986ВЕ9x этого нет, да и BSRR тоже нормально не реализовали. Там можно познать всю прелесть тех проблем, которые решают вышеперечисленные средства.
1
2 / 2 / 1
Регистрация: 11.07.2016
Сообщений: 152
20.01.2022, 13:01  [ТС]
Цитата Сообщение от ВитГо Посмотреть сообщение
посмотрите в даташите такой механизм как bitbanding
там есть формула
и по ней поймете почему именно такие "потери" адресного пространства получились
Здравствуйте! поразбирался с bitbanding, я так понял помимо него куча резерва адресов. меня одно смутило, что для отображения или хранения одного бита выделяется 32 битная ячейка?
0
75 / 66 / 12
Регистрация: 09.02.2016
Сообщений: 940
Записей в блоге: 17
20.01.2022, 13:12
Цитата Сообщение от Roman2947 Посмотреть сообщение
меня одно смутило, что для отображения или хранения одного бита выделяется 32 битная ячейка?

не вылеляется 32битная ячейка(!!!) а АДРЕСУЕТСЯ :-)
и да, общим квантом обмена по шине данных являются именно 32 бита - поэтому адресуется бит как 32ух битная ячейка :-)

вообще не переживайте за это :-) памяти там вагон :-) столько врядли в реальных устройствах подключить сколько можно адресовать :-)
1
 Аватар для Voland_
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
20.01.2022, 13:34
Цитата Сообщение от ВитГо Посмотреть сообщение
столько врядли в реальных устройствах подключить сколько можно адресовать :-)
немного поковырявшись в даташитах, нашел QSPI FLASH на 8Gbit... Ну, то есть пока что Вы правы, но... это не надолго
0
Эксперт .NET
 Аватар для Rius
13398 / 7852 / 1700
Регистрация: 25.05.2015
Сообщений: 23,869
Записей в блоге: 14
20.01.2022, 13:40
Цитата Сообщение от Roman2947 Посмотреть сообщение
для отображения или хранения одного бита выделяется 32 битная ячейка?
Выделяется адрес, а не ячейка. Когда на нескольких параллельных линиях адреса появляется правильное сочетание сигналов, что-то по этому случаю срабатывает.
Почитайте про дешифраторы адреса.
Вложения
Тип файла: pdf контрольная по МПС.pdf (330.5 Кб, 5 просмотров)
1
2 / 2 / 1
Регистрация: 11.07.2016
Сообщений: 152
20.01.2022, 19:32  [ТС]
Цитата Сообщение от ВитГо Посмотреть сообщение
не вылеляется 32битная ячейка(!!!) а АДРЕСУЕТСЯ :-)
вот тут немного не понятно. хорошо, выделяется адрес. этот адрес является адресом физического бита регистра или байта?

Добавлено через 1 минуту
Цитата Сообщение от ВитГо Посмотреть сообщение
вообще не переживайте за это :-)
дело не в переживании, я хочу понять как это все физически устроено
0
 Аватар для COKPOWEHEU
4146 / 2724 / 433
Регистрация: 09.09.2017
Сообщений: 12,065
20.01.2022, 19:33
Лучший ответ Сообщение было отмечено Roman2947 как решение

Решение

Бита.
То есть у вас есть 32-битное слово, у которого есть свой адрес. Но дополнительно к каждому биту вы можете обратиться по их собственным виртуальным адресам. Получается, у вас 33 разных адреса для одной физической ячейки.
1
2 / 2 / 1
Регистрация: 11.07.2016
Сообщений: 152
20.01.2022, 19:59  [ТС]
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Получается, у вас 33 разных адреса для одной физической ячейки.
вот теперь понятно. спасибо.

Добавлено через 7 минут
Еще момент не ясный.
Data register (CRC_DR) адрес 0x4002 3000
Independent data register (CRC_IDR) смещение 0х04 адрес 0x4002 3004


в моем понимании Data register (CRC_DR) имеет 4 байтовые ячейки с адресами:

0x4002 3000
0x4002 3001
0x4002 3002
0x4002 3003

Можно ли получить доступ допустим по адресу 0x4002 3002?

Добавлено через 2 минуты
В STM32 нет EEPROM?

Добавлено через 10 минут
Почему не делают одну цельную 32 битную ячейку с одним адресом?
0
75 / 66 / 12
Регистрация: 09.02.2016
Сообщений: 940
Записей в блоге: 17
20.01.2022, 20:28
Цитата Сообщение от Roman2947 Посмотреть сообщение
Можно ли получить доступ допустим по адресу 0x4002 3002?
конечно можно, в системе команд ядра есть команда LDR
и она может читать значения различных размеров


так что при желании можно прочитать любой объем данных

но нужно понимать что реальное чтение из памяти произойдет все таки 32-ух битного значения, и затем уже дешифратор внутри cpu выполнит усечение значения до нужной размерности
0
75 / 66 / 12
Регистрация: 09.02.2016
Сообщений: 940
Записей в блоге: 17
20.01.2022, 20:32
Цитата Сообщение от Roman2947 Посмотреть сообщение
В STM32 нет EEPROM?
нет, а нужно ?

Добавлено через 3 минуты
Цитата Сообщение от Roman2947 Посмотреть сообщение
Почему не делают одну цельную 32 битную ячейку с одним адресом?
потому что есть команды LDRB, LDRH
и чтобы понять какой же байт нужно прочитать у него должен быть адрес...

и тут вопрос - вы действительно хотите получить геморой с вычислением адреса байта или полубайта в каждом адресе 32ух битного значения, или все таки проще сделать сквозную байт-адресацию и не забивать этим голову :-)
и это по началу немного ломает конечно, но на деле - на ассемблере быстро привыкаешь, а для языков высокого адреса как правило не имеет особого значения в 99% случаев
0
2 / 2 / 1
Регистрация: 11.07.2016
Сообщений: 152
20.01.2022, 20:40  [ТС]
Цитата Сообщение от ВитГо Посмотреть сообщение
нет, а нужно ?
в AVR ах есть, а здесь что ж обделили. куда мне пользовательские настройки или данные сохранять теперь?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.01.2022, 20:40

stm32 защита контролера от чтения и копирования флеш памяти
Кто подскажет как защитить контролер от копировки хэкс файла?

Сортировать массив во внешней памяти данных, передать его во внешнее устройство
Всем доброго дня! Прошу помочь с данным заданием в Ассемблере. Массив двоичных целых однобайтовых чисел без знака (N<256) размещен...

Оконечное устройство LoRa на базе STM32
Здравствуйте уважаемые форумчане. Не получается подключить модуль на основе stm32f103c8t6(SX1276-Lora модем) к базовой станции Вега...

Устройство памяти
пишут так: пусть у нас четыре ячейки памяти идущие подряд , содержимое которых соотетсвтуют шестнадцатеричным цифрам 41 ,4E, 4E и 41,...

Устройство оперативной памяти
Здравствуйте! Оперативная память состоит из чипов, каждый чип из банков, каждый банк из строк и столбцов. Подскажите, пожалуйста,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302 Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru