Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
STM32 новичку в ARM что к чему
для чего вы ляпнули DMA не работает с флеш? цель?
Инженер R@D
Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
- Реклама
- Сообщения: 6452
- Зарегистрирован: Пт сен 13, 2013 13:11:31
Вы верно думаете, что отвечать вопросом на вопрос -- это офигенная идея? Нафиг вы эти нордики вообще приперли в тему про STM32 ? Поговорить захотелось?
Это вы залезли ляпнули зачем то, я лишь посоветовал Asmodey ему адресовано было, так как человек начинающий, а у нордиков периферия легкая.
Инженер R@D
Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Расшифруйте, кто такой "нордик"? Nordic Semiconductor? так у них одни RF кристаллы
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
[uquote="VladislavS",url="/forum/viewtopic.php?p=3901370#p3901370"]А покажите, как на православной С-шечке на контроллере STM32F4 установить на ноге PA15 ноль?[/uquote]
А вопрос новичка в игноре? Интересно же обсудить кто как и почему. Тем более, что есть варианты.
А вопрос новичка в игноре? Интересно же обсудить кто как и почему. Тем более, что есть варианты.
- Реклама
- Сообщения: 6452
- Зарегистрирован: Пт сен 13, 2013 13:11:31
И как эти ваши откровения помогли Asmodey ?Oxford писал(а):Это вы залезли ляпнули зачем то, я лишь посоветовал Asmodey ему адресовано было, так как человек начинающий, а у нордиков периферия легкая.
Основная периферия у нордиков простая, от того и кажется, что легкая. Но за простоту приходится платить. Как я уже говорил, EasyDMA не умеет брать данные из флеша и, например, вывод битмапов из флеша на экран через SPI, оборачивается вполне себе ракообразными действиями. И не только это. Так что лучше не парьте мозги непосвященным.
a5021 еще бы видео попросил и камеру. Нордики достаточно простые и гибкие. У нордиков абстракция периферии выше чем у STM32. К тому же на борту RF еще тащат. Графику нарисовать не проблема, не о тех проблемах вы думаете.
Взять тот факт что у нордиков периферия не привязана к конкретным ногам, куда хочешь туда и назначай.
Хачу TX вешаю на 13 порт, RX на 12
NRF_UARTE0->PSEL.TXD = 13;
NRF_UARTE0->PSEL.RXD = 12;
STM32 такого не могет, увы, максимум ремап через танец бубна да еще и вычитывать надо че куда можно че нельзя. В итоге сидишь подгоняешь трассировку через CubeMX.
В итоге разработка на STM32 стоит дороже и вы платите своим временем.
Идем дальше, человек париться с I2C на STM32. Я говорю братан не парься, возьми нордик там не надо думать об этом, аппаратура сама все делает при этом и DMA сама забирает/кладет готовое тебе в RAM. Там логически все программируешь и сосредоточен на коде. Пинай задачи, обрабатывай события все!
Взять тот факт что у нордиков периферия не привязана к конкретным ногам, куда хочешь туда и назначай.
Хачу 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
Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
- Сообщения: 6452
- Зарегистрирован: Пт сен 13, 2013 13:11:31
[uquote="Oxford",url="/forum/viewtopic.php?p=3901797#p3901797"]Графику нарисовать не проблема, не о тех проблемах вы думаете.[/uquote]
Угу. Еще поучите меня о правильных проблемах думать. Не надоело тут метаться в беспорядке?
Угу. Еще поучите меня о правильных проблемах думать. Не надоело тут метаться в беспорядке?
uldemir У них есть очень хорошие кортексы с RF
https://www.nordicsemi.com/-/media/Publ ... 7DCC945F26
https://www.nordicsemi.com/-/media/Publ ... 7DCC945F26
Инженер R@D
Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
- Сообщения: 6452
- Зарегистрирован: Пт сен 13, 2013 13:11:31
[uquote="VladislavS",url="/forum/viewtopic.php?p=3901792#p3901792"]А вопрос новичка в игноре? Интересно же обсудить кто как и почему. Тем более, что есть варианты.[/uquote]
А чем таким прославился этот PA15, что его нельзя взять и опустить в ноль, как все прочие пины? Смотрю в RM0368 и не вижу, в чем здесь прикол.
А чем таким прославился этот PA15, что его нельзя взять и опустить в ноль, как все прочие пины? Смотрю в RM0368 и не вижу, в чем здесь прикол.
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
В RM никакого "прикола" нет. Вопрос в том кто как его переносит на практику.
- Сообщения: 6452
- Зарегистрирован: Пт сен 13, 2013 13:11:31
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN;
GPIOA->MODER ^= GPIO_MODER_MODER15; //AF->OUT
GPIOA->BSRR = GPIO_BSRR_BR15;
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
Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
- Сообщения: 6452
- Зарегистрирован: Пт сен 13, 2013 13:11:31
[uquote="VladislavS",url="/forum/viewtopic.php?p=3901822#p3901822"]Ну, значит, что-то есть, раз никто показать не может.[/uquote]
Пока что я вижу лишь некую легкомысленность. Вы либо задавайте вопрос по существу, либо переставайте играть в кошки мышки.
Пока что я вижу лишь некую легкомысленность. Вы либо задавайте вопрос по существу, либо переставайте играть в кошки мышки.
a5021 покажи как установить PA15 в ноль код свой напиши
, что непонятного? Легкомысленность он видит
Код пиши, а не видь 
Инженер R@D
Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
- Сообщения: 6452
- Зарегистрирован: Пт сен 13, 2013 13:11:31
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Oxford, может вы начнёте? У вас практически эталонный CMSIS, в отличии от пользователей HAL. Хорошая отправная точка для обсуждения будет.
Добавлено after 48 minutes 8 seconds:
Oxford, спасибо, спросонья не заметил сообщение. Именно это я и ожидал увидеть.
Сейчас доеду до компа, посмотрим что из этого компилятор сделает. А пока злопыхателям предлагается более оптимальный с точки зрения генерируемого компилятором кода предложить.
Добавлено after 58 minutes 43 seconds:
12 байт кода. Одного меня такая "дорогая" загрузка константы GPIO_BSRR_BR15 напрягает?


Добавлено 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Спойлер
У меня так в KEIL
0x080010A6 0381 LSLS r1,r0,#14
0x080010A8 6181 STR r1,[r0,#0x18]
Там код будет зависеть еще от предыдущего кода.
Если к примеру убрать код предыдущий то будет так
0x08001094 F04F4000 MOV r0,#0x80000000
0x08001098 6188 STR r0,[r1,#0x18]
Нормально он все делает. Какой компилятор?
0x080010A6 0381 LSLS r1,r0,#14
0x080010A8 6181 STR r1,[r0,#0x18]
Там код будет зависеть еще от предыдущего кода.
Если к примеру убрать код предыдущий то будет так
0x08001094 F04F4000 MOV r0,#0x80000000
0x08001098 6188 STR r0,[r1,#0x18]
Нормально он все делает. Какой компилятор?
Инженер R@D
Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
[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 вот так написано про порты.
То есть. Мы имеем полное право сделать так
Минус два байта без всяких "как звёзды лягут".
[uquote="Oxford",url="/forum/viewtopic.php?p=3901888#p3901888"]Если к примеру убрать код предыдущий то будет так
0x08001094 F04F4000 MOV r0,#0x80000000
0x08001098 6188 STR r0,[r1,#0x18][/uquote]В среднем по больнице и у IAR, и у GCC так же.
В то же время, в RM вот так написано про порты.
Спойлер
Код: Выделить всё
*((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


