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

Кто любит RISC в жизни, заходим, не стесняемся.
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

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

Сообщение dosikus »

Alex, со всем уважением, но ты не прав...
Но придираться к человеку потому что он делает не так как вам нравится, ну перебор.
Она же даже не понимает что делает...
Последний раз редактировалось dosikus Вс авг 19, 2018 19:55:01, всего редактировалось 1 раз.
Реклама
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

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

Сообщение VladislavS »

Завидую производству, на котором uart нечем посмотреть, чёрной завистью :) Ну чему-то же их в учебных заведениях должны учить?
Реклама
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

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

Сообщение dosikus »

VladislavS, категорически за.
И это при том , что имеется достаточно информации, и есть наиболее легкий путь запустить модуль .
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

Сообщение Аlex »

VladislavS, ну почему же нечем. Она сказала, что тыкалась осциллом. Этого достаточно, чтобы оценить работоспособность.

dosikus, к слову. Лет десять назад я начал работать на одну контору. Мои знания об UART'е были не больше чем у этой девушки. А код был такой, что мне сейчас стыдно смотреть на него. Но никто мне пинка под зад не давал, а говорили - развивайся, что нужно - говори. Хотя могли вполне себе нанять более опытного.
Сейчас меня уважают и ценят. И заказы мне все оплачивают без всяких проблем, от мелочи (МК, детали, ...) до дорогого оборудования.
Так что, прав каждый, но по-своему ... .
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
afz
Опытный кот
Сообщения: 744
Зарегистрирован: Сб дек 22, 2012 08:17:42
Откуда: Караганда, Казахстан

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

Сообщение afz »

ARV писал(а):а как недавно соловьем разливался "поможем, научим..."
Вообще-то это я сказал. Но, увы, в кубиках и HAL я не копенгаген, освоение этого дела в планах пока не стоит, так, что я пас.
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)
Реклама
arkhnchul
Друг Кота
Сообщения: 3092
Зарегистрирован: Пн апр 06, 2015 11:01:53
Откуда: москва, уфа

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

Сообщение arkhnchul »

[uquote="VladislavS",url="/forum/viewtopic.php?p=3440091#p3440091"]Завидую производству, на котором uart нечем посмотреть, чёрной завистью[/uquote]а я искренне сочувствую работникам :dont_know: Ситуаций "инструмента нет, нихрена нет, но делайте" мне и в армии хватило.
Реклама
xVekx
Встал на лапы
Сообщения: 125
Зарегистрирован: Вс мар 01, 2009 20:41:19

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

Сообщение xVekx »

Здравствуйте, писал парсер intel hex формата, обратил внимание на 1 момент, отсутствует адреса 01ac - 01af , кто подскажет их значения 0x00 или (0xFF по умолчанию значения сектора после отчистки) ?
Спойлер

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

:10019000A1170108A1170108A1170108A11701085B
:0C01A000A1170108A1170108A117010810
:1001B00010B5054C237833B9044B13B10448AFF3A1

"80101a8" 161
"80101a9" 23
"80101aa" 1
"80101ab" 8
"80101b0" 16
"80101b1" 181
Аватара пользователя
afz
Опытный кот
Сообщения: 744
Зарегистрирован: Сб дек 22, 2012 08:17:42
Откуда: Караганда, Казахстан

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

Сообщение afz »

bezzabotna писал(а):К слову, модуль все равно не отвечает, если смотреть осциллографом и без всяких задержек. Скорее всего, модуль неисправен
А передачу из МК в модуль осциллограф видит? А то, может быть, что-то не сошлось в инициализации, и модуль молчит, потому, что ему не на что отвечать?

Да, обновил кубики, попробовал тот свой проект, где пытался воевать с FATFS. Увы, для SDIO не предлагают драйвер LL. (Для FATFS тоже, но это вполне объяснимо.) А так - Project->Setting, на закладке Advanced Setting, в верхней ее половине, перечислены все задействованные компоненты, для каждого предложен драйвер HAL, некоторым этот HAL можно заменить на LL.

Попробовал закопаться в тот кубик, который HAL-драйвер SDIO. Увы, похоже, обмена с SDIO без ожидания не может быть, и ожидание - только прополкой. 100%-й уверенности в этом у меня, конечно, нет, но процентов 90 - точно. То есть, для моего отложенного проекта мне не светит собрать FATFS из кубиков. Ладно, как говорят у нас на востоке, если гора не идет к Магомету, Аллах с ними обоими...

На всякий случай, вот ссылка на обмен с SD уровня CMSIS/SPL. Автор нашел в примерах какого-то старого Кейла нечто, вроде драйвера для SD-card. Я попытался найти это в новом Кейле - увы. Однако, в том проекте нужные файлы есть и новый Кейл их молча съел. В общем, вроде-бы, все работает. Осталось взять FATFS Чана и дописать в его diskio.c вызовы подпрограмм из утянутой по ссылке (sdcard.c + sdcard.h), но пока я отложил это дело.

Добавлено after 44 minutes 7 seconds:
arkhnchul писал(а):почти. Но буфер однобайтовый. Если оттуда не успели забрать предыдущий байт к моменту прихода следующего - поезд ушел.
Даже так? А на хрена тогда нужен такой драйвер "высокого" уровня? Неудивительно, что народ не любит этот HAL. Если бы я делал драйвер высокого уровня для USART'а, я бы обязательно прикрутил к нему кольцевой буфер и, при обращении за очередным байтом, выдавал его оттуда. Или сигнал ошибки, если его нет. Элементарно, функция чтения имеет тип int, получил 0-255 - очередной считанный байт, получил -1 - ошибка. А по ошибке лезь в структуру управления этим USART'ом и смотри, что это - байт не поступил, или что хуже.

Повторюсь, о HAL я не знаю, практически, ничего. Поэтому я и не отреагировал на эту ошибку - я-то подумал, что драйвер HAL действительно высокого уровня...
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)
arkhnchul
Друг Кота
Сообщения: 3092
Зарегистрирован: Пн апр 06, 2015 11:01:53
Откуда: москва, уфа

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

Сообщение arkhnchul »

[uquote="afz",url="/forum/viewtopic.php?p=3440790#p3440790"]А на хрена тогда нужен такой драйвер "высокого" уровня?[/uquote]там не все так прям плохо) HAL_UART_Receive принимает указатель на буфер; количество байт, которые в него надо запихать; таймаут, за который это надо сделать. Возвращает коды ошибок. Т.е. в принципе вполне рабочая функция. Однако что у нас деется в данном случае:
[uquote="bezzabotna",url="/forum/viewtopic.php?p=3438253#p3438253"]

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

HAL_UART_Transmit(&huart1, cmd, strlen(cmd), 0xFFFFFF);
	HAL_Delay(2000);		
	HAL_UART_Receive(&huart1, reply, 3, 0xFFFFFF);
[/uquote]
посылаем в устройство команду и ждем две секунды - за это время ответ, буде таковой возымеет место, давно пройдет, и в DR будет в лучшем случае его последний байт, а в SR - Overrun error. И только потом натравливаем функцию на несчастный huart - только затем, чтобы через четыре с половиной часа (0xFFFFFF миллисекунд) получить от нее HAL_TIMEOUT.
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

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

Сообщение dosikus »

arkhnchul, об чем и речь, уж лучше пусть борщ...
Аватара пользователя
Ярослав555
Поставщик валерьянки для Кота
Сообщения: 2081
Зарегистрирован: Пт май 31, 2013 17:14:38
Откуда: Украина, Винница

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

Сообщение Ярослав555 »

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

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

Сообщение VladislavS »

Я и так тебе скажу чё там было - оно не работало!
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

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

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

VladislavS писал(а):Я и так тебе скажу чё там было - оно не работало!
Аватара пользователя
afz
Опытный кот
Сообщения: 744
Зарегистрирован: Сб дек 22, 2012 08:17:42
Откуда: Караганда, Казахстан

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

Сообщение afz »

arkhnchul писал(а):там не все так прям плохо) HAL_UART_Receive принимает указатель на буфер; количество байт, которые в него надо запихать; таймаут, за который это надо сделать. Возвращает коды ошибок. Т.е. в принципе вполне рабочая функция.
Я бы не сказал, что она вполне рабочая. Такое годится только для общения блоками наперед заданного размера. Это во-первых. И, во-вторых, на время приема этого блока основная задача встанет колом - работать будет только то, что в прерываниях. Даже и не соображу, где такое можно применить? Ну, разве что под управлением полноформатной многозадачной ОС с вытеснением менее приоритетных потоков более приоритетным при его готовности.

В общем, непродуманная ерунда. А нужен именно драйвер с кольцевым буфером, который в прерываниях сам снимает принятые байты и складывает в этот буфер, а в основной задаче выдает их оттуда или сигналит, что новый байт не поступил. Тут вполне работают и записи неопределенной длины (с разделителем в виде CR, например), и посимвольная активация, и все, что хочешь. И, в частности, позволит основной задаче не затыкаться наглухо, если очередной байт еще не пришел.
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)
arkhnchul
Друг Кота
Сообщения: 3092
Зарегистрирован: Пн апр 06, 2015 11:01:53
Откуда: москва, уфа

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

Сообщение arkhnchul »

[uquote="afz",url="/forum/viewtopic.php?p=3441132#p3441132"]Такое годится только для общения блоками наперед заданного размера.[/uquote]кто-то мешает указать размер буфера, а не ожидаемого блока?
[uquote="afz",url="/forum/viewtopic.php?p=3441132#p3441132"]Даже и не соображу, где такое можно применить?[/uquote]в огромном множестве случаев оно и так сойдет. Вот зачастую как будто не пофигу, где сидеть и тупить - в while(1) в main-е или в ожидании приема)
[uquote="afz",url="/forum/viewtopic.php?p=3441132#p3441132"]в прерываниях сам снимает принятые байты и складывает в этот буфер, а в основной задаче выдает их оттуда или сигналит, что новый байт не поступил[/uquote]какбэ этсамое, на блокирующих методах все не заканчивается

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

    This subsection provides a set of functions allowing to manage the UART asynchronous
    and Half duplex data transfers.

    (#) There are two modes of transfer:
       (++) Blocking mode: The communication is performed in polling mode. 
            The HAL status of all data processing is returned by the same function 
            after finishing transfer.  
       (++) Non blocking mode: The communication is performed using Interrupts 
            or DMA, these APIs return the HAL status.
            The end of the data processing will be indicated through the 
            dedicated UART IRQ when using Interrupt mode or the DMA IRQ when 
            using DMA mode.
            The HAL_UART_TxCpltCallback(), HAL_UART_RxCpltCallback() user callbacks 
            will be executed respectively at the end of the transmit or receive process.
            The HAL_UART_ErrorCallback() user callback will be executed when 
            a communication error is detected.

    (#) Blocking mode APIs are:
        (++) HAL_UART_Transmit()
        (++) HAL_UART_Receive() 

    (#) Non Blocking mode APIs with Interrupt are:
        (++) HAL_UART_Transmit_IT()
        (++) HAL_UART_Receive_IT()
        (++) HAL_UART_IRQHandler()

    (#) Non Blocking mode functions with DMA are:
        (++) HAL_UART_Transmit_DMA()
        (++) HAL_UART_Receive_DMA()
        (++) HAL_UART_DMAPause()
        (++) HAL_UART_DMAResume()
        (++) HAL_UART_DMAStop()

    (#) A set of Transfer Complete Callbacks are provided in non blocking mode:
        (++) HAL_UART_TxHalfCpltCallback()
        (++) HAL_UART_TxCpltCallback()
        (++) HAL_UART_RxHalfCpltCallback()
        (++) HAL_UART_RxCpltCallback()
        (++) HAL_UART_ErrorCallback()
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

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

Сообщение dosikus »

arkhnchul, согласись что без знания работы железа потуги с калокубом выльются в бездумное тырканье и пляски с бубном.
Что мы и наблюдаем...
Аватара пользователя
Ярослав555
Поставщик валерьянки для Кота
Сообщения: 2081
Зарегистрирован: Пт май 31, 2013 17:14:38
Откуда: Украина, Винница

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

Сообщение Ярослав555 »

[uquote="arkhnchul",url="/forum/viewtopic.php?p=3441169#p3441169"][uquote="afz",url="/forum/viewtopic.php?p=3441132#p3441132"]Такое годится только для общения блоками наперед заданного размера.[/uquote]кто-то мешает указать размер буфера, а не ожидаемого блока?[/uquote]
Дело в том, что готовность установится только когда буфер заполнится. Но это пол беды. Если на юарт вешать модбас, то там к нему в пару на каждом байте запускается таймер, чтобы отловить 3,5 символа паузы, понять что пакет таки приехал и начинать его разбирать.

Во всяком случае, есть DMA, с кольцевым буфером, все как любите. +активируем прерывание самого юарта, в обработчик засовываем запуск/перезапуск таймера, и когда он протикал наших 3,5 символа - разбираем буфер. Я так понимаю, счетчик байтов DMA тоже как-то можно подцепить, так что начало следующего пакета будет известно. Все так просто, сам не ожидал.

Добавлено after 2 minutes 4 seconds:
у Вас подгорает, что все идет к тому что любой неуч потыкав мышкой сделает бОльшую часть Вашей работы, что обесценивает Ваши знания. Согласен, обидно.
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

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

Сообщение dosikus »

Счас у тебя подгорит, в новых линейках есть аппаратная поддержка модбас. Но ты продолжай грызть калокуб...
А сказки о "гениальных" натыкивателях можешь нубам втюхивать...
Аватара пользователя
Ярослав555
Поставщик валерьянки для Кота
Сообщения: 2081
Зарегистрирован: Пт май 31, 2013 17:14:38
Откуда: Украина, Винница

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

Сообщение Ярослав555 »

ого, не видел. Спасибо, ща посмотрю

Добавлено after 1 minute 43 seconds:
ссылочку можно?
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

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

Сообщение dosikus »

На RM для F0 ?
Ответить

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