Easyelectronics.ru

Электроника для всех
Текущее время: 27 май 2018, 01:11

Часовой пояс: UTC + 5 часов



    • JLCPCB - Платы прототипов всего за 2$ c бесплатной доставкой (при первом заказе)
    • 10 PCBs за $2 для 2 слоев, $15 для 4 слойной, $74 для 6 слойной платы.
    • Крупнейший китайский производитель прототипных плат. 290000+ клиентов & 8000+ заказов в день!
    • LCSC - Крупнейший китайский онлайн магазин радиодеталей.

Начать новую тему Ответить на тему  [ Сообщений: 19 ] 
Автор Сообщение
 Заголовок сообщения: STM32 вывод в порт из памяти программ на макс. скорости
СообщениеДобавлено: 07 фев 2018, 18:47 
Только пришел

Зарегистрирован: 07 фев 2018, 18:04
Сообщения: 5
Откуда: Екатеринбург
Требуется написать код для микроконтроллера STM32F407 (отладочная плата STM32F4-DISCOVERY), осуществляющий циклический вывод данных из FLASH в порт микроконтроллера.

По сути должны быть:
Настройка частоты работы контроллера на 168мгц
Инициализация порта на вывод на максимальной скорости
Циклический вывод данных (30-60кб) из памяти программ в один порт (8 пинов) микроконтроллера.
Выводить надо один байт, что будет при этом на других портах не важно.
Данные желательно получить на скорости 84мгц.

Удобство подготовки массива данных не требуется, достаточно будет кода типа

while(1){
port=
port=
port=
}


Проект желательно иметь в IAR Embedded Workbench (допустима и другая среда разработки под windows), по результатам компиляции которого бинарник заливается в STM32F4-DISCOVERY

Для связи
amt@ya.ru
+79024094646 (Viber,WhatsApp)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 вывод в порт из памяти программ на макс. скорости
СообщениеДобавлено: 07 фев 2018, 23:07 
Старожил

Зарегистрирован: 10 июн 2011, 23:01
Сообщения: 2896
viewtopic.php?p=483093#p483093

без внешних элементов (например мультиплексора который 16 разрядный порт на удвоенной частоте в 8 бит выводить будет или тупо памяти)
84 МГц не получится


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 вывод в порт из памяти программ на макс. скорости
СообщениеДобавлено: 07 фев 2018, 23:57 
Старожил
Аватара пользователя

Зарегистрирован: 18 май 2013, 20:43
Сообщения: 3298
Откуда: Кемеровская область, Киселевск
В чем трудности?

_________________
RADIOWOLF.RU


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 вывод в порт из памяти программ на макс. скорости
СообщениеДобавлено: 08 фев 2018, 00:13 
Только пришел

Зарегистрирован: 07 фев 2018, 18:04
Сообщения: 5
Откуда: Екатеринбург
Предполагал, что это будет сделано без DMA, данные просто из кода программы направляются в порт.

Если получится выводить один байт за 3 такта, то это тоже для меня приемлемо, вывод за 4 такта тоже стерплю, но эксперименты будет проводить не так удобно. Если данные будут выводиться за 2 такта, то будет просто супер.

Контроллеру делать кроме вывода в порт больше ничего не надо. Массив данных не надо брать откуда либо, если это ускорит выполнение кода, все данные можно записывать прямо в коде.
на AVR это наверное бы выглядело парой на каждый выводимый байт
LDI
OUT

Если особенность портов в STM32 такая, что сразу выводится 2 байта, то это неплохо.

Трудность в том, что я не программист, и ни когда не писал код в контроллер. Заполнить готовый код нужными данными я смогу :) я аналоговый человек
Плату возьму, среду разработки поставлю, проект готовый думаю смогу открыть.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 вывод в порт из памяти программ на макс. скорости
СообщениеДобавлено: 08 фев 2018, 00:45 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 2366
Откуда: КЧР, поселок Нижний Архыз
А ничего, что нога от силы на 50МГц сможет дрыгаться? Только шустрый параллельный дешифратор спасет ситуацию!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 вывод в порт из памяти программ на макс. скорости
СообщениеДобавлено: 08 фев 2018, 00:54 
Только пришел

Зарегистрирован: 07 фев 2018, 18:04
Сообщения: 5
Откуда: Екатеринбург
У меня нет опыта и нет информации о скорости портов кроме того, что написано на сайте ST
"Up to 136 fast I/Os up to 84 MHz"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 вывод в порт из памяти программ на макс. скорости
СообщениеДобавлено: 08 фев 2018, 01:58 
Старожил
Аватара пользователя

Зарегистрирован: 18 май 2013, 20:43
Сообщения: 3298
Откуда: Кемеровская область, Киселевск
84 мГц это максимальная поддержка переключения периферией (2 такта)
Но, чтобы передавать данные требуется транзакция память-периферия, DMA эту транзакцию сделает за два этапа:
TS = TSP (peripheral access/transfer time) + TSM (memory access/transfer time)

Где
TSP is the total timing for DMA peripheral port access and transfer which is equal to:
TSP = tPA+ tPAC + tBMA + tEDT + tBS

TSM is the total timing for DMA memory port access and transfer which is equal to:
TSM = tMA+ tMAC + tBMA + tSRAM

В итоге 8 тактов, за счет FIFO имеем 4 такта.

Выводы делайте сами. Это вам не плис. Даже самая зачуханная ПЛИС вам поможет.

Есть небольшая оговорка
Если использовать чипы STM32F401/STM32F410/STM32F411/STM32F412 можно сократить до 3 тактов. При условии если нет конкуренции арбитра.

_________________
RADIOWOLF.RU


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 вывод в порт из памяти программ на макс. скорости
СообщениеДобавлено: 08 фев 2018, 04:18 
Старожил

Зарегистрирован: 10 июн 2011, 23:01
Сообщения: 2896
CYUSB3KIT-003 или UMFT600X, обе две по 50$
и гоняйте какие угодно потоки данных прямо из ПК до 16 или 32бит х 100МГц


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 вывод в порт из памяти программ на макс. скорости
СообщениеДобавлено: 08 фев 2018, 06:16 
Заглядывает иногда

Зарегистрирован: 26 сен 2015, 03:02
Сообщения: 65
Задача ТС может быть решена им самостоятельно без особых временных затрат.

Нужно взять любой пример проекта под данную плату,
найти функцию main(),
и написать там так (напр., для пинов PC0-PC7):

Код:
int main(void)
{
  RCC->AHB1ENR |= RCC_AHB1Periph_GPIOC;
  RCC->AHB1ENR;
  RCC->AHB1ENR;

  GPIOC->MODER = 0x5555;
  GPIOC->OTYPER = 0;
  GPIOC->OSPEEDR = 0xFFFF;
 
  for(;;)
  {
    GPIOC->ODR = 0xA1;
    GPIOC->ODR = 0xB2;
    GPIOC->ODR = 0xC3;
    GPIOC->ODR = 0xD4;
    // ... и так далее все 30000 строчек данных
  }
}

Если проект правильно настроен - должно получиться 3 такта на одну строчку. Если окажется больше трёх тактов или неравномерная задержка, тогда уже можно просить специалистов поправить настройки проекта.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 вывод в порт из памяти программ на макс. скорости
СообщениеДобавлено: 14 фев 2018, 23:56 
Только пришел

Зарегистрирован: 07 фев 2018, 18:04
Сообщения: 5
Откуда: Екатеринбург
[quote="IvanSh"]

Код:
int main(void)
{
}


Спасибо, код рабочий. В режиме отладки проверил, получается 3 ассемблерные команды на одну строчку кода. Но частота выдачи данных в порт получается 20МГц, с причиной не разобрался.

Oxford помог с кодом, выдающим массив через fsmc с DMA, получилось 28МГц на штатной частоте контроллера и 40МГц с разгоном


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 вывод в порт из памяти программ на макс. скорости
СообщениеДобавлено: 15 фев 2018, 13:48 
Заглядывает иногда

Зарегистрирован: 26 сен 2015, 03:02
Сообщения: 65
Igor'S писал(а):
Спасибо, код рабочий. В режиме отладки проверил, получается 3 ассемблерные команды на одну строчку кода


Нужно включить оптимизацию (С/С++ Compiler -> Optimizations -> High), тогда будет 2 команды:
Show


Это примерно три такта на вывод. Если получается больше, то нужно смотреть настройки flash памяти или переносить код в RAM (int __ramfunc main(void)), возможно совместно с изменениями настроек REMAP данных.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 вывод в порт из памяти программ на макс. скорости
СообщениеДобавлено: 15 фев 2018, 17:14 
Старожил

Зарегистрирован: 26 дек 2011, 18:08
Сообщения: 628
На stm32H7 (400 МГц) вроде штатно можно на 133 МГц выводить через интерфейсы памяти - в продаже есть NUCLEO-H743ZI для экспериментов
Fast I/Os capable of up to 133 MHz
Flexible external memory controller with up to 32-bit data bus: SRAM, PSRAM, SDRAM/LPSDR SDRAM, NOR/NAND Flash clocked up to 133 MHz in synchronous mode


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 вывод в порт из памяти программ на макс. скорости
СообщениеДобавлено: 15 фев 2018, 19:24 
Старожил

Зарегистрирован: 10 июн 2011, 23:01
Сообщения: 2896
то что на FMC изнутри приходит 133МГц, не значит что и наружу будет так же.
контроллер сдрам в бурсте возможно может на тактовой частоте данные выдавать, но думаю не долго. уж точно не 60кБ что ТСу нужны.
а у асинхронной память цикл будет как минимум 2, а то и 3 такта, так что не выйдет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 вывод в порт из памяти программ на макс. скорости
СообщениеДобавлено: 15 фев 2018, 19:39 
Старожил
Аватара пользователя

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 1707
В режиме SDRAM на макс.скорости будет выдавать до первого пересечения границы страницы или до первого события рефреша.
Опять же, повторюсь - хотите больших скоростей для мигания ногами - возьмите ПЛИС и не ипите человекам моск.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 вывод в порт из памяти программ на макс. скорости
СообщениеДобавлено: 15 фев 2018, 19:48 
Старожил

Зарегистрирован: 10 июн 2011, 23:01
Сообщения: 2896
BusMaster писал(а):
В режиме SDRAM на макс.скорости будет выдавать до первого пересечения границы страницы или до первого события рефреша.

я это и имел ввиду,
только рефреш можно и отключить, раз сдрама как такового на самом деле не подключено,
но размеры страниц контроллеру какие угодно выставить нельзя.

у nxp в lpc43 есть SGPIO, они вроде бы 100МГц должны обеспечить.
посмотрите lpclink2, он 20$ стоит, если там на выведенных ногах удастся собрать 8 бит от SGPIO, то должно получиться.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 вывод в порт из памяти программ на макс. скорости
СообщениеДобавлено: 15 фев 2018, 20:44 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 27 июл 2010, 21:24
Сообщения: 139
Откуда: СПб
BusMaster писал(а):
...возьмите ПЛИС и не ипите человекам моск.

Полностью поддерживаю. На кортексах стабильный ногодрыр в 100мгц и около того не сделать.

_________________
Для связи email: info собака qbit.su


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 вывод в порт из памяти программ на макс. скорости
СообщениеДобавлено: 16 фев 2018, 12:42 
Только пришел

Зарегистрирован: 07 фев 2018, 18:04
Сообщения: 5
Откуда: Екатеринбург
IvanSh писал(а):
Нужно включить оптимизацию (С/С++ Compiler -> Optimizations -> High), тогда будет 2 команды:


И ещё раз спасибо! :-) в проект, где кристалл разгонялся на 240МГц, удалось выводить в порт на частоте 120МГц.
Порт на такой скорости фронты валит уже прилично, опущусь на 168/84МГц

У меня задача сделать DAC за 3 копейки, для такой задачи GPIO предпочтительнее, тк в этом режиме нагрузочная способность портов намного выше чем в FSMC.
С GPIO можно сделать DAC на резисторах, с FSMC скоростной DAC на резисторах не сделать, нагрузочная способность низкая, надо ставить резисторы большого номинала, из-за паразитных емкостей не работает нормально.

_pv писал(а):
CYUSB3KIT-003 или UMFT600X
за информацию спасибо!

Про реализацию задачи на ПЛИС вроде всё очевидно, но хочется получить именно на контроллере, чтобы иметь один кристалл а не два. Джиттер от контроллера не напрягает, задача такая.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 вывод в порт из памяти программ на макс. скорости
СообщениеДобавлено: 16 фев 2018, 15:15 
Старожил

Зарегистрирован: 26 дек 2011, 18:08
Сообщения: 628
В библиотек STM32Cube есть примеры для "гирлянд" с использованием MDMA
Цитата:
The MDMA is configured using the function "MDMA_Config"
The SystemClock_Config() function is used to configure the system clock for STM32H743xx Devices :
The CPU at 400MHz
The HCLK for D1 Domain AXI and AHB3 peripherals , D2 Domain AHB1/AHB2 peripherals and D3 Domain AHB4 peripherals at 200MHz.
The APB clock dividers for D1 Domain APB3 peripherals, D2 Domain APB1 and APB2 peripherals and D3 Domain APB4 peripherals to run at 100MHz.
Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32 вывод в порт из памяти программ на макс. скорости
СообщениеДобавлено: 16 фев 2018, 16:36 
Старожил

Зарегистрирован: 10 июн 2011, 23:01
Сообщения: 2896
Igor'S писал(а):
У меня задача сделать DAC за 3 копейки, для такой задачи GPIO предпочтительнее

если он всё равно будет с ПК управляться, то там вообще-то уже есть быстрый ЦАП, даже три:
https://bellard.org/dvbt/
а из dvi/hdmi можно попробовать сигма-дельта ЦАП сделать, там правда 8b/10b кодирование мешать будет, но что-то всё равно получить можно и возможно от синхронизации будет проще избавиться чем с VGA.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 19 ] 

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB