Перейти к содержанию
    

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

46 minutes ago, C2000 said:

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

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

47 minutes ago, C2000 said:

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

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

17 minutes ago, AlexandrY said:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

42 minutes ago, AlexandrY said:

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

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

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

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

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

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

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В "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".

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...

17 minutes ago, adnega said:

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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 о которых я говорил в начале)))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 minutes ago, adnega said:

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

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

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

5 minutes ago, adnega said:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, C2000 said:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 minute ago, AlexandrY said:

Худший случай тоже не можете назвать. 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 minute ago, jcxz said:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

15 minutes ago, C2000 said:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...