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

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Друг Кота
Аватара пользователя
Сообщения: 7383
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Сообщение uldemir »

есть: 25.5.2 SPI control register 2 (SPI_CR2)
Bit 2 SSOE: SS output enable
0: SS output is disabled in master mode and the cell can work in multimaster configuration
1: SS output is enabled in master mode and when the cell is enabled. The cell cannot work
in a multimaster environment.
NSS ни в коем случае не должен дёргаться между байтами. Иначе будет невозможно общение с SPI EEPROM - там тоже надо опустить CS, передать данные, поднять CS. Так вот, пока есть данные на передачу CS остаётся в нуле. Если делать это по опросу (и даже по прерываниям, если случится задержка) - может возникнуть пауза и CS снимется (перейдёт в лог.1), но если кормить через DMA - такой проблемы нет.
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

uldemir, нет. Как только я включаю SPI, если у меня NSS настроен аппаратно, то он сразу падает в нуль. И после окончания передачи в нуле так и остается. В мануале по поводу SSOE, кстати, так и говорится, что "SS output is enabled in master mode and when the cell is enabled" (а не "when transmission is in process", что нужно мне).
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 7383
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Сообщение uldemir »

Хмм. не ожидал такого от ST... Тогда План Б. А обязательно ли делать фронт импульса после передачи? В одной конструкции я делал динамическое отображение через сдвиговый регистр MAX6312. Там задвигал данные через SPI, а по окончании дёрнуть строб параллельной загрузки. Я изменил порядок. Сначала дёргаю строб, чтобы записалось то, что было перед этим залито, а затем заливал следующую порцию для следующего фрейма.

Всё это делалось на таймере. Один канал сравнения формировал строб записи, а другой канал создавал event, который запускал DMA, который заливал данные в SPI и SPI заливал данные в сдвиговый регистр MAX-имки. Период таймера задавал интервал с какой частотой переключались разряды. Как-то так, и это всё работало аппаратно без всяких опросов, прерываний итп.

О, посмотрел старый исходник - там еще этот таймер формировал PWM для сигнала Blank - регулировка яркости.
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

В общем, оказалось, что строгих требований к CS у MAX7219 таки нет. И данные поперли. Бьюсь сейчас с инициализацией всех пикселей (почему-то пока только нулевая строка светится).

UPD: все завелось, всем спасибо!
https://github.com/eddyem/stm32samples/ ... 219_screen
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Родился
Сообщения: 13
Зарегистрирован: Вт май 25, 2021 18:41:53

Сообщение avtoneru »

Вопрос.
А пользуется кто-либо для работы с STM32 PlatformIO?
Поддерживается работа с фреймворками:
Arduino
Cmsis
Spl
Stm32Cube
Mbed
Libopencm3
Zephyr

Мне очень "зашло"... порог вхождения - на уровне ардуино.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 7033
Зарегистрирован: Сб янв 28, 2006 22:47:24

Сообщение Asmodey »

[uquote="avtoneru",url="/forum/viewtopic.php?p=4037274#p4037274"]Поддерживается работа[/uquote]
Ага, поддерживается. Через командную строку и правку файла конфигурации? Как в каменном веке.
Кому как, а мне этого платформио хватило по самое нехочу с ESP32...
Астролябия-сама меряет, было бы что мерять!!!
Реклама
Родился
Сообщения: 13
Зарегистрирован: Вт май 25, 2021 18:41:53

Сообщение avtoneru »

Asmodey, лет 5 не писал под микроконтроллеры, когда-то (2012-2013) баловался с AVR, а несколько платок с STM32 лежали без дела, т.к. "голова была кругом" от порога вхождения. Keil - сложно, Eclipse - муторно и глючно ...

Недавно понадобилось поуправлять одним устройством через UART и логи пособирать. Купил ардуинку Uno по дороге с работы и уже на следующий день отлаживал парсинг данных с софтового UARTa ... Это был первый опыт общения с ардуино.
"В процессе" случайно увидел как человек нахваливает PlatformIO, и как он больше не вернется к ардуино IDE. В результате - проект быстро переехал в PlatformIO - нормальный, а не спартанский редактор кода для меня это было решающим.
Вспомнил про лежащие несколько лет платки с STM32. На удивление легко, практически без "танцев с бубном", перенес написанное под AVR-ардуино на STM32 ...

Отдельной песни заслуживает ода славы для ... Git - контроль версий это сила.

С командной строкой не воевал, т.к. для STM32 и AVR PlatfornIO это обычная графическая оболочка.
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

Абдурины и калокубы - тупиковый путь. И уж профессионал этой дрянью точно промышлять не станет. Да и любой уважающий себя любитель — тоже!
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Родился
Сообщения: 13
Зарегистрирован: Вт май 25, 2021 18:41:53

Сообщение avtoneru »

[uquote="Eddy_Em",url="/forum/viewtopic.php?p=4037397#p4037397"]Абдурины и калокубы - тупиковый путь. И уж профессионал этой дрянью точно промышлять не станет. Да и любой уважающий себя любитель — тоже![/uquote]
Это распространённая точка зрения. Но не догма.
Та же ардуино IDE позволяет написать то, что душе угодно. Но есть одно НО. Перед тем, как писать под ардуино, бегло посмотрел на её код, погуглил и узнал какие ресурсы используются средой, а что можно использовать самому ...
Аналогично перекопал STM32duino, и ничего страшного в ней не вижу.
Сейчас пытаюсь освоить freeRTOS, и даже получается. А раньше даже примеры с freeRTOS запускать было мучением.
Дружественная к пользователю IDE - это важно. Мне так думается.

А кто-то не приемлет отсутствие возможности потрошить make файл...
Друг Кота
Аватара пользователя
Сообщения: 7033
Зарегистрирован: Сб янв 28, 2006 22:47:24

Сообщение Asmodey »

[uquote="avtoneru",url="/forum/viewtopic.php?p=4037389#p4037389"]для STM32 и AVR PlatfornIO это обычная графическая оболочка.[/uquote]
Надо будет посмотреть. Может я чего-то упустил и, возможно, для STM он заметно отличается от того, что было с ESP.

Но, все же обратите внимание на IAR for ARM. Среда немного похожа на эклипс, но без танцев с бубнами.
Астролябия-сама меряет, было бы что мерять!!!
Родился
Сообщения: 13
Зарегистрирован: Вт май 25, 2021 18:41:53

Сообщение avtoneru »

[uquote="Asmodey",url="/forum/viewtopic.php?p=4037430#p4037430"][uquote="avtoneru",url="/forum/viewtopic.php?p=4037389#p4037389"]для STM32 и AVR PlatfornIO это обычная графическая оболочка.[/uquote]
Надо будет посмотреть. Может я чего-то упустил и, возможно, для STM он заметно отличается от того, что было с ESP.

Но, все же обратите внимание на IAR for ARM. Среда немного похожа на эклипс, но без танцев с бубнами.[/uquote]

Сейчас - не знаю. Но в каком виде был IAR for ARM лет 5 назад, тогда с Keil было на порядок проще. А под Eclipse вечно что-то глючило.
PlatformIO плюс STM32duino - имеет порог вхождения в кодинг для STM32 на уровне обычного ардуино, плюс обалденный редактор кода Visual Code... в два клика смотрится всё, что угодно, отладка по SWD - работает как часы, тут же можно и дизассемблер глянуть, посмотреть чего там ...

Если душа не лежит ко всяким ардуино - кубам, в PlatformIO можно "по ждежайски" писать под STM32 вообще без фреймворков, только CMSIS.
Друг Кота
Аватара пользователя
Сообщения: 7033
Зарегистрирован: Сб янв 28, 2006 22:47:24

Сообщение Asmodey »

Да видел я этот VSC. По моему скромному мнению IAR, Keil, MPLAB, авр студия и Code Blocks значительно удобнее в кодинге и отладке. И возможностей больше. Но, повторюсь, возможно все так плохо обстоит только с платформио и vsc для ESP. Поставлю вот, попробую с STM из под них побаловаться.
Астролябия-сама меряет, было бы что мерять!!!
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Сообщение COKPOWEHEU »

[uquote="avtoneru",url="/forum/viewtopic.php?p=4037428#p4037428"]Это распространённая точка зрения. Но не догма.[/uquote]
Тут буквально пару дней назад на Хабре пытались выжать из Кубовой реализации USB-CDC максимум скорости. Не превозмогли. А потом нашли две нормальные реализации, которые просто работают.
Asmodey писал(а):Через командную строку и правку файла конфигурации? Как в каменном веке.
У вас с хронологией проблемы. В каменном веке еще не умели писать, картиночками и жестами обходились. Удобный текстовый интерфейс придумали гораздо позже. Так что каменный век это именно графический интерфейс, а командная строка - начало железного века.
Родился
Сообщения: 13
Зарегистрирован: Вт май 25, 2021 18:41:53

Сообщение avtoneru »

COKPOWEHEU, есть человек тыкающий - тот что мышкой или пальцем по экрану тыкает, а код или копипастит, или набирает одним пальцем - тоже тыкает...
Когда человек начинает писать сам - он постепенно превращается в человека пишущего, и осознает, что неудобно руки отрывать от клавиатуры, что бы совершить действие "тык"..., начинает постепенно использовать горячие клавиши и ценить те моменты, когда в IDE ему удобно.

Но человеку тыкающему это объяснить сложно, он будет продолжать тыкать.

А по поводу Куба, Ардуино, и подобному ...
Есть моменты, когда это может быть удобно. Никто и не обещал, что это будет самый быстрый, безошибочный и оптимальный результат.
Ардуино для кого предназначалась - для школьников, познакомить их с азами программирования. С этой задачей справляется "на ура", да ещё и с возможностью изучить С++ (применение которого в МК довольно спорно, т.к. тратятся, и так скудные, ресурсы МК).
А вот Куб ... там можно почерпнуть примеры инициализации периферии и тактирования, т.к. нынче это становится нетривиальной задачей из-за сложности внутреннего устройства STM32.
Можно ещё посетовать, что люди мало читают даташитов и апноутов ... когда начнут превращаться в людей пишущих - сами начнут читать. Принуждать их к этому бесполезно.
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

avtoneru, если хочется тупо иметь кнопку "сделать зашибись", не вникая в последствия и не имея никакого желания в дальнейшем код развивать и поддерживать, то калокубы-абдурины - как раз то, что надо!
Но это - тупиковый путь. Абдуринщики обычно так и не учатся ничему. Они лишь умеют копипастить и мышкой по галочкам тыкать.

Если же человек хочет именно НАУЧИТЬСЯ, то ему ни в коем случае даже длинной палкой нельзя тыкать все эти абдурины-калокубы и прочую мерзость.

Тот, кто не умеет в голой консоли собрать простейший проектик и прошить МК, вряд ли имеет какое-то будущее!
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Родился
Сообщения: 13
Зарегистрирован: Вт май 25, 2021 18:41:53

Сообщение avtoneru »

[uquote="Eddy_Em",url="/forum/viewtopic.php?p=4037585#p4037585"]avtoneruТот, кто не умеет в голой консоли собрать простейший проектик и прошить МК, вряд ли имеет какое-то будущее![/uquote]

Бред полный. Тут же не профи собрались, которые пиписьками меряются. Для чего школьнику, или любителю для разового проекта осваивать консоль? Ему нужен полный контроль за всеми действиями компилятора/линкера и супер-оптимальный, супер-надежный код?
Да им просто надо, чтоб "заработало" и счастья будет выше крыши.
Друг Кота
Аватара пользователя
Сообщения: 7033
Зарегистрирован: Сб янв 28, 2006 22:47:24

Сообщение Asmodey »

[uquote="avtoneru",url="/forum/viewtopic.php?p=4037575#p4037575"]А вот Куб ... там можно почерпнуть примеры инициализации периферии и тактирования[/uquote]
Я пытался, но там глаза можно сломать выискивая нужное портянках кода. Даташиты и интернет-форумы (спасибо участникам форума Радиокот :) ) оказались информативнее. К тому же жаль тратить время на изучение самого куба (без чего вряд ли получится подсмотреть примеры), если в последствии не собираешься им пользоваться.
Астролябия-сама меряет, было бы что мерять!!!
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Сообщение COKPOWEHEU »

[uquote="avtoneru",url="/forum/viewtopic.php?p=4037575#p4037575"]А вот Куб ... там можно почерпнуть примеры инициализации периферии и тактирования, т.к. нынче это становится нетривиальной задачей из-за сложности внутреннего устройства STM32.[/uquote]
Это не помогает, сам пробовал. Перенести инициализацию из Куба в нормальный проект очень трудно, проще с нуля написать.
avtoneru писал(а):Ардуино для кого предназначалась - для школьников, познакомить их с азами программирования.
Скорее, для не-программистов, чтобы смогли быстро тяп-ляп сделать примитиивную автоматизацию и заниматься разведением ежей дальше.
Eddy_Em писал(а):Но это - тупиковый путь. Абдуринщики обычно так и не учатся ничему. Они лишь умеют копипастить и мышкой по галочкам тыкать.
Не согласен. Просто она позволяет рукожопам заниматься электроникой хоть как-то. Те, кто хотел заниматься ей нормально, просто из Ардуины вырастают и не попадают в вашу статистику. А те, кто попадает, и так бы ничему не научились.
Eddy_Em писал(а):Если же человек хочет именно НАУЧИТЬСЯ, то ему ни в коем случае даже длинной палкой нельзя тыкать все эти абдурины-калокубы и прочую мерзость.
Ну отчего же. Можно - чтобы посмотреть насколько оно мерзость, обжечься и самим так не делать.
Eddy_Em писал(а):Тот, кто не умеет в голой консоли собрать простейший проектик и прошить МК, вряд ли имеет какое-то будущее!
Снова излишне резкое утверждение. Все с чего-то начинали, некоторые даже с Бейсика. Все же владение взрослыми средствами сборки предполагает наличие некоторого опыта и знаний. Вы же не будете заставлять ребенка лепить куличика по ГОСТу. Детскому уровню развития детские "инструменты".
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18790
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Eddy_Em писал(а):Тот, кто не умеет в голой консоли собрать простейший проектик и прошить МК, вряд ли имеет какое-то будущее!
за то время, сколько этот тезис существует, доля использующих этот метод неуклонно стремится к нулю, в то время как количество "тыкателей мышкой" растет, как на дрожжах.

реальность расставляет все по местам: выживает не умнейший, а наиболее приспособленный.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Родился
Сообщения: 13
Зарегистрирован: Вт май 25, 2021 18:41:53

Сообщение avtoneru »

Можно умничать сколько угодно. Но вот реальный пример.
Надо написать потокобезопасный (freeRTOS) код, использующий таймер, GPIO и DMA. Код должен, с минимальными изменениями, работать на F0 F1 F4 семействах.

В итоге из выбора между HAL LL CMSIS, склоняюсь к выбору LL драйверов. Если будет продолжаться дефицит - придется вообще переходить с STM32 на что-то китайское, с адекватной ценой и "в наличии".
Ответить

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