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

Кто любит RISC в жизни, заходим, не стесняемся.
pokk
Вымогатель припоя
Сообщения: 574
Зарегистрирован: Вт ноя 02, 2010 17:46:37

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

Сообщение pokk »

Решил чуть по подробнее разобраться с DMA+USART точнее по каким флагам все это завершается.
Пока не понятно, какие флаги состояния сбрасываются, при считывании USART_SR ?
Дело в том что бы дождаться физической завершения передачи, надо:
0) Сбросить флаг USART_SR_TC (считыванием USART_SR )
1) Дождаться самой передачи смотрел DMA_ISR_HTIF2 или DMA_ISR_TCIF2
2) и после этих флагов уже ожидать завершения по USART_SR_TC

В даташите пишут:
"Bit 6TC: Transmission complete
This bit is set by hardware ifthe transmission of a frame containing data is complete and if
TXE is set. An interrupt is generated if TCIE=1in the USART_CR1 register. It is cleared by a
software sequence (a read from the USART_SR register followed by a write to the
USART_DR register). The TC bit can also be cleared by writing a '0' to it. This clearing
sequence is recommended only for multibuffer communication
.
0: Transmission is not complete
1: Transmission is complete"


По пробовал изменить нулевой пункт на

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

	USART3->SR=USART_SR_TC;
Не увидел что он сбрасывается, т.е передача завершается сразу после DMA_ISR_TCIF2, т.е физически ешё 2 байта передаются
Реклама
Аватара пользователя
Myp3ik
Мучитель микросхем
Сообщения: 450
Зарегистрирован: Вс янв 09, 2011 23:05:37
Откуда: СССР

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

Сообщение Myp3ik »

А зачем Вам флаги USART если передачей управляет DMA ? USART сам говорит DMA когда ему подавать следующий байт, а DMA сообщит Вам когда отправит все байты в USART.
Иван Сусанин - первый полупроводник :solder:
Реклама
pokk
Вымогатель припоя
Сообщения: 574
Зарегистрирован: Вт ноя 02, 2010 17:46:37

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

Сообщение pokk »

Ну вообще для RS485, ну и так для понимания
Аватара пользователя
Myp3ik
Мучитель микросхем
Сообщения: 450
Зарегистрирован: Вс янв 09, 2011 23:05:37
Откуда: СССР

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

Сообщение Myp3ik »

Кстати, у новых МК есть аппаратный выход для дерганья RE/DE.

Может пригодится
Спойлер http://www.st.com/content/ccc/resource ... 49778.pdf
Иван Сусанин - первый полупроводник :solder:
Реклама
Эиком - электронные компоненты и радиодетали
pokk
Вымогатель припоя
Сообщения: 574
Зарегистрирован: Вт ноя 02, 2010 17:46:37

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

Сообщение pokk »

Как узнать когда USART+DMA закончила принимать данные ? В случае переменной длины ответного пакета (СТАРТ,ДАННЫЕ[],СТОП)
Я так понял что флаг DMA_ISR_TCIF3 выставиться, только тогда когда CNDTR==0
т.е изначально надо знать длину ответного пакета, что бы её занести в CNDTR

PS: процессор STM32F103
Реклама
Аватара пользователя
Myp3ik
Мучитель микросхем
Сообщения: 450
Зарегистрирован: Вс янв 09, 2011 23:05:37
Откуда: СССР

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

Сообщение Myp3ik »

Можно принять заголовок пакета по прерываниям, в нем указать количество данных, а потом запустить дма и ,желательно, таймер таймаута. Если не дождались всех данных указанных в заголовке, отключаем дма, включаем прерывания, ждем следующий заголовок.
Иван Сусанин - первый полупроводник :solder:
Реклама
pvit
Нашел транзистор. Понюхал.
Сообщения: 191
Зарегистрирован: Вт июн 05, 2018 00:18:01

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

Сообщение pvit »

[uquote="Myp3ik",url="/forum/viewtopic.php?p=3396002#p3396002"]Можно принять заголовок пакета по прерываниям[/uquote]
А в чем смысл изменять способ приема для заголовка (не по dma)?
Аватара пользователя
Myp3ik
Мучитель микросхем
Сообщения: 450
Зарегистрирован: Вс янв 09, 2011 23:05:37
Откуда: СССР

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

Сообщение Myp3ik »

Чтобы убедиться,что это наш пакет и узнать его длину, затем записать счетчик дма, запутить дма, принять данные.
Если у Вас пакеты разной длины, как Вы организуете приём с помощью дма ?
Иван Сусанин - первый полупроводник :solder:
pvit
Нашел транзистор. Понюхал.
Сообщения: 191
Зарегистрирован: Вт июн 05, 2018 00:18:01

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

Сообщение pvit »

Заголовки тоже разной длины? Мне просто не понятен смысл инженерного решения.

- Если можно заголовки принимать по прерыванию, зачем хвост принимать по DMA (ведь производительности и так хватает)
- Если заголовок фиксированной длины, почему бы его тоже не принимать по DMA.

С моей точки зрения, есть задача, где надо принимать данные переменной длины. Она сводится к задаче приема 2 чанков известной длины. Менять способ приема байтов для этого не требуется. Либо вы в неявном виде решали какую-то еще задачу, которую не озвучили. Поэтому я спросил, зачем вы так сделали.
Аватара пользователя
Myp3ik
Мучитель микросхем
Сообщения: 450
Зарегистрирован: Вс янв 09, 2011 23:05:37
Откуда: СССР

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

Сообщение Myp3ik »

Согласен. Для простой связи двух устройств по UART не нужно ничего выдумывать.
Иван Сусанин - первый полупроводник :solder:
pvit
Нашел транзистор. Понюхал.
Сообщения: 191
Зарегистрирован: Вт июн 05, 2018 00:18:01

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

Сообщение pvit »

Я бы предложил найти по вкусу библиотеку FSM, и научиться расписывать состояния конечного автомата, включая отработку таймаутов. И не пытаться заниматься блочной обработкой, пока с побайтовой не станет получаться идеально (делать через обычные прерывания и не лезть в дма).
pokk
Вымогатель припоя
Сообщения: 574
Зарегистрирован: Вт ноя 02, 2010 17:46:37

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

Сообщение pokk »

pvit, все так и сделал, с прерываниями мне не нравиться, что оно может дергать другие процессы 50-60 раз. В последнее время FSM, начал юзать через адрес функции, а не через swith case, так что в последнем варианте наворотил аж 4 события на каждую команду (передача,прием, передача ок, таймаут)
PS: При помощи DMA сократилось несколько состояний, хотя возможно предыдущий вариант на case был не оптимально написан.
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

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

Сообщение СКАЗОЧНИК »

Добрый день знатоки!

Расскажите мне пожалуйста, неужели нельзя сделать какую-нибудь методичку по СТМ32 для идиотов? Ну, для меня т.е.
Как вы умудрились разобраться с ними?
Читал мануал на русском языке по ним. Да, все красиво расписано и даже почти понятно. Читал у Ди-Халта, читал на каком-то сайте Программирование АРМ, смотрел Ютуб...
Однако, создать первый же проект в Кейле вызывает столько трудностей, что я два дня разбирался что и где и сколько скачать и установить, чтобы можно было МК выбрать тот, что у меня.
А у меня STM32А103C8T6 на платке китайской.
Как подключить к нему 4мя проводками СТ-ЛинкV2 вроде разобрался. Но надо ли ставить какие драйвера на сам СТ-Линк не знаю.
От компа зашитая в платку демо-программа тупо мигает светодиодиком.
Потом читал всяческие сайты про ассемблер к СТМ32. И про организацию памяти. Так и не сумев откомпилировать предложенные наборы строк в проекте.
А организация памяти - это вообще отдельная песня! Какие-то от нуля. В десятичных мне говорят, что у него 64 кБайта памяти. А отображают ее в ШЕСТНАДЦАТЕРИЧНЫХ!
Еще и с какими-то дикими нулями... типа 0х200000000
Что это за цифра такая?
почему у нее огромное значение такое? Неужели мне надо переводить все в десятичные?
Я вычитал где-то что у этих МК памяти органзовано (или адресного пространства) до 4 Гбайт.
И как же в этих цифрах ориентироваться теперь?
А вот это вообще меня в ступор загоняет и в уныние. 0хDFFFFFFF.
И почему у него так дико регистры названы? типа: RTE_USART_TX_PORT_ID_DEF GPIO. Как можно это запомнить? Зачем было столько аббревиатур через нижнее подчеркивание перечислять?

Кто-нибудь может популярно и доходчиво объяснить "почему у машины колеса крутятся"? А то я такими темпами быстрее брошу всю эту лабуду.
В видеороликах на Ютубе одно бешенство. Там все сводится к тому, чтобы установить тупой загрузчик от Ардуино и пользоваться АрдуиноИДЕ. Меня это не устраивает.
И всякие ХАЛ и СПЛ пока в сторонку. И всякие визарды-конструкторы тоже.
Хочу разобраться в самой сути этих МК.

З.Ы. Хорошо усвоил зато, что регистры не такие сложные у них, ну по описанию. Все чем-то похоже на АВР. Ставь себе нолики и единички по даташиту и будет работать так, как там и написано. И очень хорошо усвоил, что вся перефирия у него отключена по умолчанию. И чтобы что-то запустить, то это надо разрешать в регистрах.
Понял, что у него ФАПЧ (ПЛЛ) есть, который умножит частоту моего кварца, чтобы работало АЛУ быстрее.
Понял, что у него есть ДМА, которая позволяет без использования АЛУ выкидывать массивы данных быстренько в порты, причем, пока одно выкидывает, другое само подготавливается. Можно клевенько управлять кучей светодиодов типа ВС2812 например.
Ну и другие интересные штучки.
Станислав
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

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

Сообщение Reflector »

[uquote="СКАЗОЧНИК",url="/forum/viewtopic.php?p=3397914#p3397914"]И как же в этих цифрах ориентироваться теперь?[/uquote]
Никак, пиши как все нормальные люди на C/C++ и с этими цифрами практически никогда не будешь пересекаться.
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

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

Сообщение Мурик »

СКАЗОЧНИК писал(а):Однако, создать первый же проект в Кейле вызывает столько трудностей, что я два дня разбирался что и где и сколько скачать и установить, чтобы можно было МК выбрать тот, что у меня.
Кейл это не единственная IDE. :)
Есть другие. :) http://purebasic.mybb.ru/viewtopic.php?id=575
https://habr.com/post/191624/

IDE. https://www.embitz.org/
СКАЗОЧНИК писал(а):Но надо ли ставить какие драйвера на сам СТ-Линк не знаю.
Установите STM32 ST-LINK Utility в дистрибутиве которой есть в т. ч. драйвер для ST-Link.
СКАЗОЧНИК писал(а):А организация памяти - это вообще отдельная песня!
Она линейная с адресным пространством 4ГБ.
СКАЗОЧНИК писал(а):В десятичных мне говорят, что у него 64 кБайта памяти.
В STM32F103C8T6 128 кб флеша, только производитель об этом умалчивает.
СКАЗОЧНИК писал(а):Еще и с какими-то дикими нулями... типа 0х200000000
Это адрес начала ОЗУ. Это вам знать не нужно. Компилятор сам поместит переменные по требуемым адресам.
СКАЗОЧНИК писал(а):И всякие ХАЛ и СПЛ пока в сторонку.
Хал может быть, а SPL вполне годная библиотека для начала. Она устроена просто и можно смотреть ее функции чтобы лучше понять как работать с той или иной периферией МК.
СКАЗОЧНИК писал(а):Хочу разобраться в самой сути этих МК.
https://radiokot.ru/forum/viewtopic.php ... 4#p3365804
СКАЗОЧНИК писал(а):Понял, что у него есть ДМА, которая позволяет без использования АЛУ выкидывать массивы данных быстренько в порты, причем, пока одно выкидывает, другое само подготавливается. Можно клевенько управлять кучей светодиодов типа ВС2812 например.
Или сделать динамическую индикацию. http://www.cyberforum.ru/blogs/204791/blog5170.html
pvit
Нашел транзистор. Понюхал.
Сообщения: 191
Зарегистрирован: Вт июн 05, 2018 00:18:01

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

Сообщение pvit »

[uquote="СКАЗОЧНИК",url="/forum/viewtopic.php?p=3397914#p3397914"]Потом читал всяческие сайты про ассемблер к СТМ32. И про организацию памяти.[/uquote]
В детстве, когда дури было много, я из интереса взялся нарисовать шифратор AES на ассемблере, под StrongARM. Было интересно, что получится по сравнению с C. В итоге обнаружил у себя 2 пропущенные оптимизации и 2 ошибки. Больше подобной фигней с ассемблером не страдал. Чего и вам желаю.
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

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

Сообщение СКАЗОЧНИК »

Ладно-ладно. Пусть не ассемблер.
однако же где-то было написано, что вся программа может быть на Си. Но обработчики прерывания на ассемблере.. Типа, что АРМ Кортекс-М3 не понимает по другому. Ну, я так понял из прочитанного.
Просто нарвался на сайт типа радиохлама, где про СТМ так уроки подаваются на ассемблере. ))))

Добавлено after 6 minutes 23 seconds:
О!! Тупо стереть флеш с этой платы у меня получилось.

Добавлено after 2 minutes 20 seconds:
Больше не мигает светодиодом... Похоже, что это говорит, что драйвер на СТ-Линк у меня уже установлен совместно с Кейлом.

Кстати, не хочу рассматривать другую среду разработки. Эта бесплатна для вполне себе большого кода. И вроде как официальна нормальная.
А если не хватит, то мы ее крякнем.
Станислав
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

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

Сообщение Мурик »

СКАЗОЧНИК писал(а):однако же где-то было написано, что вся программа может быть на Си. Но обработчики прерывания на ассемблере.. Типа, что АРМ Кортекс-М3 не понимает по другому.
Там сказки рассказывали. :))) Проект может быть полностью на C или C++ включая стартап. А может быть на бейсике или паскале, кому как больше нравится. :)
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

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

Сообщение СКАЗОЧНИК »

Есть какая-нибудь школа, методичка, сказка для детей, как работать с этими СТМ32? Так, чтобы занимательно, понятно. Но в то же время не по ардуиновски. Чтобы все же самому можно было туже библиотечку к 1602 ручками сочинить, а не готовую только использовать.
Станислав
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

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

Сообщение Мурик »

СКАЗОЧНИК писал(а):Кстати, не хочу рассматривать другую среду разработки.
Вот это зря. Для STM32 есть около десятка IDE и каждая со своими особенностями. Стоит попробовать некоторые из них и выбрать наиболее удобную. :)
СКАЗОЧНИК писал(а):Есть какая-нибудь школа, методичка, сказка для детей, как работать с этими СТМ32?
Есть статьи в интернете. :)
СКАЗОЧНИК писал(а):Чтобы все же самому можно было туже библиотечку к 1602 ручками сочинить
Для этого достаточно научится работать с портом в/в МК и знать как работать с 1602.
Ответить

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