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

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

1 minute ago, jcxz said:

посмотреть на его джиттер. 

Выводил. Лично мне не страшно, что там сотня-другая наносекунд. Кроме того, после старта все уже идет более-менее слаженно, когда таймер пинает DMA. Но это я так - баловался с параллельной шиной, у меня нет ни одного реального рабочего проекта, где понадобилось бы дрыгать ногами при помощи DMA.

 

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


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

 

1 hour ago, jcxz said:

А теперь попробуйте вывести сигнал на GPIO. И посмотреть на его джиттер. 

Однако не угадали. То что джитер есть и ежу понятно. 
Вот если б точно  назвали его, тогда другое дело.
А джитер DMA на общей шине гораздо больше чем думается.
Вот такой будет на шине 60 МГц и 180 МГц CPU при работе DMA по таймеру на DAC.
image.thumb.png.ea69b5d0026fe591880b177f39c10ffb.png

Т.е. больше 767 ns
  

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


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

7 минут назад, AlexandrY сказал:

при работе DMA по таймеру на DAC 

Потому что нет в STM32 адекватной такой задаче аппаратуры, т.е. выдача компаратором таймера сигнала загрузки ЦАП из буфера (освободившийся буфер суть запрос ПДП) и запись в компаратор следующего значения, соответствующего заданному периоду дискретизации, вычисленному посредством сумматора.

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


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

Ну нашел час времени сгенерировал в CubeMX тестовый проект для STM32F030C8T.
1. Таймер запускает DMA с частотой 2Мгц, частота шины 48 МГц
2. DMA пишет данные в порты PB8 - PB15, периодически 0-1-0 и т.д.
3. В качестве GPIO_OUT настроены только PB8 и PB9 (обусловлено топологией платы которая есть под рукой).
4. На выводе PB14 синхро/тактовый импульс с таймера
5. Параллельно постоянно выполняется прерывание по таймеру TIM1 в котором переключается вручную порт PA15 (прерывание где то с частотой 1.3МГц быстрее оно просто не успевает выполнится).

Все фронты выдерживаются чётко, ни какого дрожания в сотни наносекунд и в помине нет.

Если кому интересно и есть плата / отладка с этим контроллером файл прошивки прилагается

dma_gpio_tests.bin

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


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

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

Все фронты выдерживаются чётко, ни какого дрожания в сотни наносекунд и в помине нет.

Смотреть надо ещё уметь. :unknw:

Хотя может у вас реально новое слово техники - DMA телепортирующий данные из источника в приёмник?! Без всяких шин и за 0 тактов.

Срочно патентовать и грести бабосы лопатой!!! :biggrin:

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

5. Параллельно постоянно выполняется прерывание по таймеру TIM1 в котором переключается вручную порт PA15 (прерывание где то с частотой 1.3МГц быстрее оно просто не успевает выполнится).

Эх, похоже патент обламывается и денежки уплывают... Всего лишь новый запрос прерывания возникает до завершения текущего ISR и CPU просто не выполняет стэкинга.

А эпохальное открытие было так близко!.... :cray2:

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


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

8 minutes ago, jcxz said:

Смотреть надо ещё уметь. :unknw:

Ну Вы как я понимаю ни смотреть ни делать не умеете, можете только желчью плескаться.

И высказывания Ваши все абсолютно голословные как и в этот раз.

Возьмите и посмотрите и покажите людям как оно на самом деле)) А то "говорить" не мешки ворочать)

Ну это бывает, когда у человека мало опыта и навыков он их компенсирует излишней болтовнёй

8 minutes ago, jcxz said:

Без всяких шин и за 0 тактов.

Про 0 никто и не говорил опять же вы оговариваете без причин

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


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

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

И высказывания Ваши все абсолютно голословные как и в этот раз.

Как и Ваши тоже.  :unknw:

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

А то "говорить" не мешки ворочать)

вот-вот.. :mosking:

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


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

Аж интересно стало проверить джиттер на разных МК: у меня дома есть девборды на 051, 030, 042, 103 и 411. Есть старый код, но я его не соберу: там старая версия opencm3 используется, а я уже несколько лет как отказался от этой горе-библиотеки.

Есть у кого готовый MWE на CMSIS, чтобы за 20 минут собрать и прошить? А то если с нуля ковыряться, это минимум часа на 2 в сниппетах и даташите рыться...

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


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

Для старта CubeMX что то можно галочками настроить что то придется руками допиливать

030 какой? я выложил прошивку для STM32F030C8T

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


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

31 минуту назад, Eddy_Em сказал:

Аж интересно стало проверить джиттер на разных МК

Думаете открыть что-то новое, не описанное в AN2548 от ST?  :wink:

Адептам "мгновенного DMA" особенно внимательно читать главы 5.3 и 5.4. До просветления.  :wink:

https://www.st.com/content/ccc/resource/technical/document/application_note/47/41/32/e8/6f/42/43/bd/CD00160362.pdf/files/CD00160362.pdf/jcr:content/translations/en.CD00160362.pdf

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


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

9 minutes ago, jcxz said:

Думаете открыть что-то новое, не описанное в AN2548 от ST?

Нет, думал успеть проверить хоть на одной-двух платах, пока спать не лягу. Мозг уже отказывается вдумчиво читать код из сниппетов и переделывать его, согласно RM.

36 minutes ago, C2000 said:

CubeMX

Спасибо, такого нам не нужно! Только нормальный код, для запуска которого хватит минимального набора заголовочных файлов и gcc.

15 minutes ago, jcxz said:

Адептам "мгновенного DMA" особенно внимательно читать главы 5.3 и 5.4.

Ничего нового. Ну, подумаешь, циклов 50 будет джиттер. И что? Это актуально только при попытке гонять мегагерцы. Обычно же скорости значительно меньше. Да и как-то это не так уж общепринято — ногами посредством DMA дрыгать. Для полноценных параллельных интерфейсов есть 100-ногие микроконтроллеры с FSMC…

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


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

8 hours ago, Eddy_Em said:

Ну, подумаешь, циклов 50 будет джиттер. И что? 

Не будет. Почему все какие-то цифры с потолка берут. То 16 тактов на вход в прерывание и сохранение контекста (хотя операция ни разу не атомарная), то теперь еще 50 тактов откуда-то выдумали))).

Хватит выдумывать. Соберите же наконец-то проект и убедитесь что и на мегагерцах нет никаких проблем с выводом данных, при правильной конфигурации периферии.

8 hours ago, Eddy_Em said:

Спасибо, такого нам не нужно! Только нормальный код, для запуска которого хватит минимального набора заголовочных файлов и gcc.

 

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

 

9 hours ago, Eddy_Em said:

Есть у кого готовый MWE на CMSIS, чтобы за 20 минут собрать и прошить? 

CMSIS это библиотека ядра, как она вам поможет работать с периферией? И если Вы не отличаете ядро от периферии то за 20 минут точно ничего не соберете)))

8 hours ago, jcxz said:

Адептам "мгновенного DMA" особенно внимательно читать главы 5.3 и 5.4. До просветления.  :wink:

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

8 hours ago, Eddy_Em said:

... Это актуально только при попытке гонять мегагерцы. Обычно же скорости значительно меньше. Да и как-то это не так уж общепринято — ногами посредством DMA дрыгать.

Ранее здесь выложил проект где DMA выводит данные в GPIO на 2 МГц. Тут было высказано мнение что вход и выход из прерывания будет сильно мешать работе DMA, поэтому параллельно генерируется прерывание на частоте 1.3МГц (которое в действительности никак не влияет на работу DMA)

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


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

8 hours ago, jcxz said:

Адептам "мгновенного DMA" особенно внимательно читать главы 5.3 и 5.4. До просветления.  :wink:

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

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


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

15 minutes ago, C2000 said:

Ранее здесь выложил проект где DMA выводит данные в GPIO на 2 МГц. Тут было высказано мнение что вход и выход из прерывания будет сильно мешать работе DMA, поэтому параллельно генерируется прерывание на частоте 1.3МГц (которое в действительности никак не влияет на работу DMA)

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

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


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

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

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

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

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

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

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

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

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

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