Jump to content

    
Apollo

Написание программы и одновременно наладка железа на STM32F091

Recommended Posts

46 minutes ago, C2000 said:

Чем вам этот код для быстрого запуска (создания тестового проекта) не нравится? В чем проблема его потом под свой стиль переделать?

Тем, что его невозможно собрать!

47 minutes ago, C2000 said:

CMSIS это библиотека ядра, как она вам поможет работать с периферией?

В ней же (от ST) декларируются все нужные мне регистры. Больше мне ничего не надо!

17 minutes ago, AlexandrY said:

И все говорит что звук он получит скверного качества, джитер в 1 и более мкс. 

Микросекунду вы на слух никак не отличите! Особенно учитывая то, что звуковые "файлы" будут с частотой дискретизации килогерц 8...

Share this post


Link to post
Share on other sites
42 minutes ago, AlexandrY said:

Вы не показали главного - осциллограммы. Без этого вашим утверждениям верить нет оснований. Нет доказательтва работы.
С другой стороны также понятно что в лучшем случае DMA  можно заставить работать абсолютно детерминировано. 
Но такой случай не интересен. Найдите худший случай. Это важнее. 
Мой вариант был для реального плейера читающего из SD карты и воспроизводящего на DAC-е, с одновременной работой DMA по USB и ADC.
Это широко распространенная простенькая конфигурация и она как раз автору и нужна. 
И все говорит что звук он получит скверного качества, джитер в 1 и более мкс.  Вполне на слух уже различимо. 
Светодиодная картинка тоже может начать дрожать.
Словом чип выбран не по теме и здесь нужна вещь посерьезней.  
 
 

Нормальный чип. Просто его нужно правильно приготовить)))

Во вторых DAC это не GPIO, все же не стоит сравнивать аналоговый выход с цифровым.

Осциллограмму могу скинуть, только ведь скажите что я и ее подделал.

P.S. Одновременная работа по DMA подразумевала что у более критичного канала приоритет выше? Или с одним приоритетом работали?

Интересует не худший (можно в burst режим перевести один из каналов о чем ранее писал), а правильный вариант

Ранее были сомнения по одновременной работе прерывания и DMA по этому их и реализовал, но согласен надо добавить еще одни канал DMA с более низким приоритетом, который будет непрерывно писать MemToMem. Позже сделаю.

 

Я прошивку выложил, если кто сомневается можете в живую сами посмотреть что к чему. Это самый честный вариант

Share this post


Link to post
Share on other sites

В "Martin T., The Insiders Guide to the STM32 ARM based Microcontroller(2008)" в главе "4.2.3 Direct Memory Access" довольно подробно расписан механизм работы DMA.

752146124_.thumb.png.3523480c33f8c3f42daaeffc6579d89a.png

Несложная арифметика дает 7..10 тактов на следующую транзакцию.

Т.е. если делать единичные DMA-запросы, то эффект можно и на 3-м такте получить.

Но если жарить по-полной, то я меньше 12 тактов не планирую, все равно работать не будет.

В теории досконально не разбирался, но на практике 12 тактов наблюдал и побороть не смог.

Кста, Проверить-то совсем не сложно: по первому сравнению таймера делаем OC таймера на вывод пина,

и запрос DMA на запись в BSRR "1", по второму каналу тоже самое, но запись "0".

Наблюдаем на трехканальном анализаторе, измеряем задержку и джитер.

Share this post


Link to post
Share on other sites

...

17 minutes ago, adnega said:

Но если жарить по-полной, то я меньше 12 тактов не планирую, все равно работать не будет.

Почему? Даже если +-6 тактов. На частоте 48 МГц.

Да и на 16 МГц (не понятно только из-за чего это ограничение) можно до 1 МГц разогнать.

Share this post


Link to post
Share on other sites
1 минуту назад, C2000 сказал:

Все уже сделано. 12 тактов это при правильно выставленном синхроимпульсе +-6. Это помешает нормальной работе?

Ничего. Работать будет. Да, будут дрожать фронты, но это не критично. Я давно об этом уже написал.

Share this post


Link to post
Share on other sites
29 minutes ago, adnega said:

В "Martin T., The Insiders Guide to the STM32 ARM based Microcontroller(2008)" в главе "4.2.3 Direct Memory Access" довольно подробно расписан механизм работы DMA.

752146124_.thumb.png.3523480c33f8c3f42daaeffc6579d89a.png

Несложная арифметика дает 7..10 тактов на следующую транзакцию.

Картинка не совсем корректна, так как запись в порт не планируется "прям подряд"))

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

Так что не будет там и 12 тактов, при правильной конфигурации каналов. Получаем 5 тактов, а это уже почти те самые +-2 о которых я говорил в начале)))

Share this post


Link to post
Share on other sites
51 минуту назад, C2000 сказал:

Картинка не совсем корректна, так как запись в порт не планируется "прям подряд"))

На частоте 48МГц интервал 0.35 мкс, это порядка 16 тактов. Не "прям подряд", но близко.

Я рекомендую F4, а еще лучше F3/G4. Там еще бодрее будет.

Картинка - это к вопросу, что DMA не мгновенный, а в некоторых случаях десятки тактов.

Share this post


Link to post
Share on other sites
3 minutes ago, adnega said:

Картинка - это к вопросу, что DMA не мгновенный, а в некоторых случаях десятки тактов.

В каких случаях?

Максимальный джиттер (доп. задержка которую нельзя заранее предсказать) 5 тактов = +-2.5, задержка самого канала DMA не в счёт она всегда одна и та же.

5 minutes ago, adnega said:

Я рекомендую F4, а еще лучше F3/G4. Там еще бодрее будет.

А лучше IMX четырёхъядерный, и Linux на него накатить. Вообще круто будет. Светодиодами управлять само то!!!!!:biggrin: 

Share this post


Link to post
Share on other sites
1 hour ago, C2000 said:

Осциллограмму могу скинуть, только ведь скажите что я и ее подделал.

Но без осцилолграмм вашим утверждениям тем более никакого доверия.
Худший случай тоже не можете назвать. 
Пока ваша позиция похожа на позу страуса. Типа достаточно засунуть голову в песок и джитера не будет. :biggrin:

Share this post


Link to post
Share on other sites
3 часа назад, C2000 сказал:

Для просветления соберите тестовый проект и всё увидите

Что тестировать? Что 2*2=4? Вы и это тоже "тестовыми проектами" проверяете?  :biggrin:

2 часа назад, C2000 сказал:

Ну и что из написанного там не позволит выдавать данные в порт частотой в мегагерц или два?

Там для таких как Вы даже диаграмму нарисовали где всё подробно разжевали. Про задержки до 18тактов и про то, что они могут быть ещё больше, если обращение идёт к APB-периферии.

И что такое "выдавать данные в порт частотой в мегагерц"? Это из лексикона домохозяек. Выражайтесь техническим языком. Я не знаю что такое "выдавать данные в порт частотой в мегагерц". Я знаю что такое джиттер. О котором и говорил.

Share this post


Link to post
Share on other sites
1 minute ago, jcxz said:

Что тестировать? Что 2*2=4? Вы и это тоже тестовыми проектами проверяете?  :biggrin:

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

Share this post


Link to post
Share on other sites
2 минуты назад, C2000 сказал:

В каких случаях?

Предлагаю этот вопрос закрыть, т.к. он всплыл от неуверенности работоспособности  связки GPIO+TIM+DMA. Связка работоспособна.

2 минуты назад, C2000 сказал:

А лучше IMX четырёхъядерный, и Linux на него накатить. Вообще круто будет. Светодиодами управлять само то!!!!!:biggrin: 

Обвязка? потребление? цена, наконец? Мы серийно используем F030 для управления светодиодными матрицами, в самых простых случаях.

Правда, сейчас (уже несколько лет) перешли на F051. Большинство транспортных табло делаем на нем.

Я на практике знаю, что из Cortex-M0 можно по максимуму выжать. Но это для крупных серий.

Я ТС рекомендую взять МК "по-толще", все на нем отладить, а при необходимости сменить МК или семейство.

Share this post


Link to post
Share on other sites
15 minutes ago, C2000 said:

Выньте голову из песка и прочитайте на один пост выше

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.