STM32 новичку в ARM что к чему

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Опытный кот
Аватара пользователя
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск

Сообщение Oxford »

для чего вы ляпнули DMA не работает с флеш? цель?
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Контактная информация:
Реклама
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

Вы верно думаете, что отвечать вопросом на вопрос -- это офигенная идея? Нафиг вы эти нордики вообще приперли в тему про STM32 ? Поговорить захотелось?
Реклама
Опытный кот
Аватара пользователя
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск

Сообщение Oxford »

Это вы залезли ляпнули зачем то, я лишь посоветовал Asmodey ему адресовано было, так как человек начинающий, а у нордиков периферия легкая.
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 7360
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Сообщение uldemir »

Расшифруйте, кто такой "нордик"? Nordic Semiconductor? так у них одни RF кристаллы
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
Реклама
Эиком - электронные компоненты и радиодетали
Собутыльник Кота
Аватара пользователя
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="VladislavS",url="/forum/viewtopic.php?p=3901370#p3901370"]А покажите, как на православной С-шечке на контроллере STM32F4 установить на ноге PA15 ноль?[/uquote]
А вопрос новичка в игноре? Интересно же обсудить кто как и почему. Тем более, что есть варианты.
Реклама
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

Oxford писал(а):Это вы залезли ляпнули зачем то, я лишь посоветовал Asmodey ему адресовано было, так как человек начинающий, а у нордиков периферия легкая.
И как эти ваши откровения помогли Asmodey ?

Основная периферия у нордиков простая, от того и кажется, что легкая. Но за простоту приходится платить. Как я уже говорил, EasyDMA не умеет брать данные из флеша и, например, вывод битмапов из флеша на экран через SPI, оборачивается вполне себе ракообразными действиями. И не только это. Так что лучше не парьте мозги непосвященным.
Реклама
Опытный кот
Аватара пользователя
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск

Сообщение Oxford »

a5021 еще бы видео попросил и камеру. Нордики достаточно простые и гибкие. У нордиков абстракция периферии выше чем у STM32. К тому же на борту RF еще тащат. Графику нарисовать не проблема, не о тех проблемах вы думаете.

Взять тот факт что у нордиков периферия не привязана к конкретным ногам, куда хочешь туда и назначай.

Хачу TX вешаю на 13 порт, RX на 12
NRF_UARTE0->PSEL.TXD = 13;
NRF_UARTE0->PSEL.RXD = 12;

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

Идем дальше, человек париться с I2C на STM32. Я говорю братан не парься, возьми нордик там не надо думать об этом, аппаратура сама все делает при этом и DMA сама забирает/кладет готовое тебе в RAM. Там логически все программируешь и сосредоточен на коде. Пинай задачи, обрабатывай события все!
Последний раз редактировалось Oxford Вс окт 04, 2020 23:01:39, всего редактировалось 1 раз.
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Контактная информация:
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

[uquote="Oxford",url="/forum/viewtopic.php?p=3901797#p3901797"]Графику нарисовать не проблема, не о тех проблемах вы думаете.[/uquote]
Угу. Еще поучите меня о правильных проблемах думать. Не надоело тут метаться в беспорядке?
Опытный кот
Аватара пользователя
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск

Сообщение Oxford »

uldemir У них есть очень хорошие кортексы с RF
https://www.nordicsemi.com/-/media/Publ ... 7DCC945F26
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Контактная информация:
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

[uquote="VladislavS",url="/forum/viewtopic.php?p=3901792#p3901792"]А вопрос новичка в игноре? Интересно же обсудить кто как и почему. Тем более, что есть варианты.[/uquote]
А чем таким прославился этот PA15, что его нельзя взять и опустить в ноль, как все прочие пины? Смотрю в RM0368 и не вижу, в чем здесь прикол.
Собутыльник Кота
Аватара пользователя
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

В RM никакого "прикола" нет. Вопрос в том кто как его переносит на практику.
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

Если прикола нет, то почему именно PA15, а не PA0, скажем?
Собутыльник Кота
Аватара пользователя
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

Ну, значит, что-то есть, раз никто показать не может.
Опытный кот
Аватара пользователя
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск

Сообщение Oxford »

RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN;
GPIOA->MODER ^= GPIO_MODER_MODER15; //AF->OUT
GPIOA->BSRR = GPIO_BSRR_BR15;
Последний раз редактировалось Oxford Пн окт 05, 2020 01:15:40, всего редактировалось 5 раз.
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Контактная информация:
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

[uquote="VladislavS",url="/forum/viewtopic.php?p=3901822#p3901822"]Ну, значит, что-то есть, раз никто показать не может.[/uquote]
Пока что я вижу лишь некую легкомысленность. Вы либо задавайте вопрос по существу, либо переставайте играть в кошки мышки.
Опытный кот
Аватара пользователя
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск

Сообщение Oxford »

a5021 покажи как установить PA15 в ноль код свой напиши :tea: , что непонятного? Легкомысленность он видит :facepalm: Код пиши, а не видь :)))
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Контактная информация:
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

Без умников как-нибудь разберусь, что мне делать.
Собутыльник Кота
Аватара пользователя
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

Oxford, может вы начнёте? У вас практически эталонный CMSIS, в отличии от пользователей HAL. Хорошая отправная точка для обсуждения будет.

Добавлено after 48 minutes 8 seconds:
Oxford, спасибо, спросонья не заметил сообщение. Именно это я и ожидал увидеть.

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

GPIOA->BSRR = GPIO_BSRR_BR15;
Сейчас доеду до компа, посмотрим что из этого компилятор сделает. А пока злопыхателям предлагается более оптимальный с точки зрения генерируемого компилятором кода предложить.

Добавлено after 58 minutes 43 seconds:

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

//GPIOA->BSRR = GPIO_BSRR_BR15;
        LDR.N    R1,??main_0      ;; 0x40020018
        MOV      R0,#-2147483648
        STR      R0,[R1, #+0]
        // ...
??main_0:
        DC32     0x40020018
12 байт кода. Одного меня такая "дорогая" загрузка константы GPIO_BSRR_BR15 напрягает?
СпойлерИзображение

Изображение
bc1.png
(19.42 КБ) 91 скачивание
bc2.png
(5.12 КБ) 83 скачивания
Опытный кот
Аватара пользователя
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск

Сообщение Oxford »

У меня так в KEIL

0x080010A6 0381 LSLS r1,r0,#14
0x080010A8 6181 STR r1,[r0,#0x18]
Screenshot_11.png
(11.11 КБ) 146 скачиваний
Там код будет зависеть еще от предыдущего кода.
Если к примеру убрать код предыдущий то будет так

0x08001094 F04F4000 MOV r0,#0x80000000
0x08001098 6188 STR r0,[r1,#0x18]

Нормально он все делает. Какой компилятор?
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="Oxford",url="/forum/viewtopic.php?p=3901888#p3901888"]Там код будет зависеть еще от предыдущего кода.[/uquote]Ну да, аргумент для сдвига же где-то раньше взять надо было. Но кейлу зачёт, однозначно.

[uquote="Oxford",url="/forum/viewtopic.php?p=3901888#p3901888"]Если к примеру убрать код предыдущий то будет так

0x08001094 F04F4000 MOV r0,#0x80000000
0x08001098 6188 STR r0,[r1,#0x18][/uquote]В среднем по больнице и у IAR, и у GCC так же.

В то же время, в RM вот так написано про порты.
СпойлерИзображение
bc3.png
(35.67 КБ) 66 скачиваний
То есть. Мы имеем полное право сделать так

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

*((volatile uint8_t *)&GPIOA->BSRR+3) = GPIO_BSRR_BR15>>24;

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

//*((volatile uint8_t *)&GPIOA->BSRR+3) = GPIO_BSRR_BR15>>24;
        LDR.N    R1,??main_0      ;; 0x4002001b
        MOVS     R0,#+128
        STRB     R0,[R1, #+0]
        // ..
??main_0:
        DC32     0x4002001b
Минус два байта без всяких "как звёзды лягут".
Ответить

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