|
STM32F103 и захват потока данных, Справится ли? |
|
|
|
Oct 7 2010, 07:01
|
Участник

Группа: Участник
Сообщений: 30
Регистрация: 11-02-08
Пользователь №: 34 931

|
Добрый день, народ.
Подскажите, пожалуйста кто знает. Планируем сделать устройство, которое должно хватать поток данных со скоростью хотя бы 10 МБайт в секунду по байту. Можно ли будет притормозить поток - пока не известно. В общем на это рассчитывать не хочется, как крайний вариант разве что.
Хватать, конечно, не постоянно - информация дозируется. Объем файла данных порядка мегабайта-двух. Сваливать ее предварительно планировалось в SDRAM - у нее есть burst-режим. Но иногда нужно будет подготавливать новые строки и банки для приема данных.
Причем придется еще производить достаточно сложные вычисления, поэтому ее 72 МГц и 32 разряда вполне пригодятся. Поэтому брать что-либо простое ( типа АТМеги или АТхМеги ) трудно.
Так вот вопрос в том, сможет ли STM32F103 ( или что-то подобное ) управлять хотя бы записью во внешнюю память со скоростью порядка 10 МГерц или выше? Причем модели в 100-выводном корпусе имеют блок работы со внешней памятью, но разве что статической или флешь-памятью. Можно ли будет использовать их времянку ( циклы чтения/записи ) для управления записью в SDRAM?
У АТхМеги есть поддержка SDRAM, но там разве что 4-хбитная шина данных... Что не радует...
С АРМами пока мало связывался, но ( по косвенным данным ) с портами они работают медленно и эмулировать протокол быстро не получится...
Заранее спасибо.
|
|
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 24)
|
Oct 7 2010, 08:36
|

embedder
  
Группа: Свой
Сообщений: 264
Регистрация: 11-05-05
Из: Казань
Пользователь №: 4 911

|
Цитата(KKV2003 @ Oct 7 2010, 11:01)  Так вот вопрос в том, сможет ли STM32F103 ( или что-то подобное ) управлять хотя бы записью во внешнюю память со скоростью порядка 10 МГерц или выше? Причем модели в 100-выводном корпусе имеют блок работы со внешней памятью, но разве что статической или флешь-памятью. Можно ли будет использовать их времянку ( циклы чтения/записи ) для управления записью в SDRAM?
У АТхМеги есть поддержка SDRAM, но там разве что 4-хбитная шина данных... Что не радует...
С АРМами пока мало связывался, но ( по косвенным данным ) с портами они работают медленно и эмулировать протокол быстро не получится...
Заранее спасибо. Возьмите контроллер с SDRAM контроллером, например Luminary Micro LM39B96 или какой другой. STM32F103 рулит только статикой.
--------------------
Мечты стареют куда быстрее мечтателей… Стивен Кинг. "Ловец снов"
|
|
|
|
|
Oct 7 2010, 09:03
|
Участник

Группа: Участник
Сообщений: 30
Регистрация: 11-02-08
Пользователь №: 34 931

|
Поток - просто байты по клоку. Причем клок еще нужно сделать ( но тормозить выдачу не желательно ). Нашел еще AT91SAM7SE серию с SDRAM-контроллером, хотя у нее порядка 50 МГц тактовая частота... Но SDRAM контроллер вполне адекватный ( до 32 разрядов, куда их приладить?  ). LM39B96 сейчас погляжу.
|
|
|
|
|
Oct 7 2010, 09:12
|
Гуру
     
Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295

|
Цитата(KKV2003 @ Oct 7 2010, 12:03)  Поток - просто байты по клоку. Причем клок еще нужно сделать ( но тормозить выдачу не желательно ). Нашел еще AT91SAM7SE серию с SDRAM-контроллером, хотя у нее порядка 50 МГц тактовая частота... Но SDRAM контроллер вполне адекватный ( до 32 разрядов, куда их приладить?  ). LM39B96 сейчас погляжу. Так это простое сэмплирование 8-разрядной шины 10млн. раз в секунду ? И клока в этой шине нет, а вы просто должны брать отсчеты через равные промежутки времени ? Думаю, что на ARM такое не сделать - слишком быстро. Наверное, придется FPGA ставить. Хотя я могу и ошибаться ...
|
|
|
|
|
Oct 7 2010, 10:23
|
Участник

Группа: Участник
Сообщений: 30
Регистрация: 11-02-08
Пользователь №: 34 931

|
Выдача производится по клоку, который надо еще сделать. Но желательно выдавать его равномерно, без пауз. Хотя я надеюсь, что небольшие паузы сделать можно будет... Для добавления команд памяти.
Texas порадовал контроллерами, может будем заказывать образцы и отладку.
Про Самсунга тоже гляну, но ( по-моему ) там потребуется внешняя память ( чего сильно не хотелось бы добавлять )...
|
|
|
|
|
Oct 7 2010, 17:30
|

embedder
  
Группа: Свой
Сообщений: 264
Регистрация: 11-05-05
Из: Казань
Пользователь №: 4 911

|
Цитата(KKV2003 @ Oct 7 2010, 14:23)  Texas порадовал контроллерами, может будем заказывать образцы и отладку.
Про Самсунга тоже гляну, но ( по-моему ) там потребуется внешняя память ( чего сильно не хотелось бы добавлять )... C Texas'ами (Luminary) осторожнее, там в errata скрыта "камасутра".
--------------------
Мечты стареют куда быстрее мечтателей… Стивен Кинг. "Ловец снов"
|
|
|
|
|
Oct 8 2010, 02:02
|
Участник

Группа: Участник
Сообщений: 30
Регистрация: 11-02-08
Пользователь №: 34 931

|
FPGA и ARM9 - это весьма тяжелая артиллерия. Не хотелось бы ее применять для наших "воробьев". Тяжело будет ( и по деньгам, и по времени, и по потреблению ).
Народ захватывает поток в 8 МГц на какой-то АТМеге16-й и ничего...
|
|
|
|
|
Oct 8 2010, 04:37
|

embedder
  
Группа: Свой
Сообщений: 264
Регистрация: 11-05-05
Из: Казань
Пользователь №: 4 911

|
Цитата(KKV2003 @ Oct 8 2010, 06:02)  Народ захватывает поток в 8 МГц на какой-то АТМеге16-й и ничего... Вы бы подробнее описали что нужно сделать и какой поток, иначе не вижу смысла что-то тут обсуждать
--------------------
Мечты стареют куда быстрее мечтателей… Стивен Кинг. "Ловец снов"
|
|
|
|
|
Oct 8 2010, 05:53
|
Профессионал
    
Группа: Участник
Сообщений: 1 264
Регистрация: 17-06-08
Из: бандустан
Пользователь №: 38 347

|
Цитата Народ захватывает поток в 8 МГц на какой-то АТМеге16-й и ничего... никакой "поток" с такой скоростью мега не захватит, придется писать во внутреннюю память (всего 1К), и никакую обработку сделать не получится - проц будет занят на 100%. Цитата Так вот вопрос в том, сможет ли STM32F103 ( или что-то подобное ) управлять хотя бы записью во внешнюю память со скоростью порядка 10 МГерц или выше? у STM32 есть модуль FSMC с DMA, но без поддержки SDRAM. Но получить одновременно чтение/запись 10МБ/сек вряд ли получится.
Сообщение отредактировал ukpyr - Oct 8 2010, 05:54
|
|
|
|
|
Oct 8 2010, 14:34
|
Участник

Группа: Участник
Сообщений: 30
Регистрация: 11-02-08
Пользователь №: 34 931

|
Согласен, поверить трудно. Но сделано. Смотрим, удивляемся: http://electronix.ru/forum/lofiversion/index.php/t49195.htmlПричем из Меги выжаты все соки, но она справляется. Проект весьма удивительный. За 2 такта выдается новый 17-значный адрес... Отсюда и пошло желание реально использовать возможности контроллеров. А их явно больше чем используется в большинстве задач... Входной поток данных валится из выходного буфера микросхемы ( аналогично стеку ) по синхросигналу, который надо давать. Но задерживать синхросигналы не желательно - по ним идет не только выдача байт, но и другие задачи работают... Необходимо использовать минимум корпусов и денег. Плата - предположительно мезанинного типа в небольшом корпусе... Цитата(zksystem @ Oct 8 2010, 00:30)  C Texas'ами (Luminary) осторожнее, там в errata скрыта "камасутра". Да, камасутра у них богатая... Даже не знаю. Искать С3-кристаллы придется...
|
|
|
|
|
Oct 8 2010, 14:42
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(KKV2003 @ Oct 8 2010, 17:34)  Согласен, поверить трудно. Но сделано. Смотрим, удивляемся: http://electronix.ru/forum/lofiversion/index.php/t49195.htmlПричем из Меги выжаты все соки, но она справляется. Проект весьма удивительный. За 2 такта выдается новый 17-значный адрес... Отсюда и пошло желание реально использовать возможности контроллеров. А их явно больше чем используется в большинстве задач... Тема избитая и не новая конечно. Нынче актуально не как взять данные с камеры, а как удобно их доставить потребителю. Тогда посоветовал бы такой проект посмотреть: http://www.alylab.eu/OpenProjects/ARMDomin...bCam/WebCam.htmЗа STR912 не агитирую, но в ST сделала такой же проект и на STM32.
|
|
|
|
|
Apr 1 2016, 13:02
|

отэц
    
Группа: Свой
Сообщений: 1 729
Регистрация: 18-09-05
Из: Москва
Пользователь №: 8 684

|
Цитата(scifi @ Apr 1 2016, 16:46)  Кстати, что мешает взять МК с внешней параллельной шиной? Или же DCMI у STM32 умеет быстро захватывать параллельные данные. ..такое дело - надо быстро решить одну задачу с помощью костылей которыми владею. Вроде на вышеупомянутый STM32 написано что его порты могут работать на частоте до 18 МГц. Если не успеет на 10 МГц , то примерно можно оценить теоретически на какой максимально частоте заработает?
--------------------
b4edbc0f854dda469460aa1aa a5ba2bd36cbe9d4bc8f92179f 8f3fec5d9da7f0 SHA-256
|
|
|
|
|
Apr 1 2016, 13:25
|
Гуру
     
Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136

|
Цитата(Lmx2315 @ Apr 1 2016, 16:02)  Вроде на вышеупомянутый STM32 написано что его порты могут работать на частоте до 18 МГц. Ну, если 18 МГц, то шансы есть, наверное. Кстати, а захват ограничен во времени? Если да, то я бы сделал так: заводим 8 бит и WR на 16-разрядный порт и читаем его в память непрерывно как можно быстрее. Когда посылка закончилась (надо это как-то определять, таймером что ли), разбираем содержимое памяти, выделяем там фронты WR и соответствующие данные.
|
|
|
|
|
Apr 1 2016, 13:32
|

отэц
    
Группа: Свой
Сообщений: 1 729
Регистрация: 18-09-05
Из: Москва
Пользователь №: 8 684

|
Цитата(scifi @ Apr 1 2016, 17:25)  Ну, если 18 МГц, то шансы есть, наверное. Кстати, а захват ограничен во времени? Если да, то я бы сделал так: заводим 8 бит и WR на 16-разрядный порт и читаем его в память непрерывно как можно быстрее. Когда посылка закончилась (надо это как-то определять, таймером что ли), разбираем содержимое памяти, выделяем там фронты WR и соответствующие данные. ..как-то сложно это, сделать то можно конечно, только всё не пойму - почему по EXTI нельзя ловить WR и считывать порт в массив? Я вообще думал что все проблемы будут по трате тактов на вход - выход в прерывание.
--------------------
b4edbc0f854dda469460aa1aa a5ba2bd36cbe9d4bc8f92179f 8f3fec5d9da7f0 SHA-256
|
|
|
|
|
Apr 1 2016, 15:21
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(gerber @ Apr 1 2016, 20:38)  А вот поллингом попробовать можно (как советовали выше), при запрещённых прерываниях, но вылизывать придётся каждую инструкцию цикла. Даже поллингом и то сомнительно. Если, как писали, макс. частота GPIO у него 18МГц, то учтите что для ввода одного байта, нужно сделать минимум три чтения GPIO: одно обнаруживает активное состояние WR, второе - читает данные, третье - обнаруживает неактивное состояние WR. И того - как минимум 3 чтения GPIO на один байт данных, а значит шина должна позволять читать GPIO с частотой >=30МГц - уже не пролазим. А ещё надо учесть все комады переходов и сохранений и пр. А данный МК (STM32F103) вроде как Cortex-M0? Так в M0 ещё и инструкции перехода очень многотактовые. Можно конечно завести сигнал WR на один порт вместе с данными - так будет немного меньше чтений. Но всё равно не хватит, имхо. Если же ещё можно изменить протокол передачи - стробировать данные не каким-то уровнем сигнала WR, а фактом его изменения, тогда можно обойтись только одним чтением порта на один байт данных. Т.е. читаем 9-битный порт состоящий из данных+WR, если WR изменился - сохраняем мл.байт содержащий байт данных. В этом случае есть шанс уложиться по скорости. Особенно если ещё объединять каждые 4 чтения порта в одно выходное 32-битное значение и его уже писать в память. Очень аккуратно надо отнестись к команде условного перехода в конце цикла, может даже вообще отказаться от цикла - 128 байт - это немного - развернуть в линейный код да ещё расположить в ОЗУ. Да писать в память по 32 бита - вот тогда есть все шансы уложиться даже на STM32F103. Ещё вариант - групповое стробирование. Т.е. выдаётся только один пульс WR в начале всего пакета, по нему делается синхронизация и дальше весь пакет читается просто чтениями порта данных с соответствующими задержками между чтениями. Делал когда-то такое для интерфейса между LPC1768 с CY7C68013A - работало стабильно - так удалось добиться максимальной скорости передачи по USB. А с прерываниями - никаких шансов. 100МГц Cortex-M3 захлёбывается при частотах прерываний уже около 1МГц.
|
|
|
|
|
Apr 1 2016, 16:15
|
Частый гость
 
Группа: Участник
Сообщений: 169
Регистрация: 31-08-05
Из: New York
Пользователь №: 8 118

|
Цитата(jcxz @ Apr 1 2016, 11:21)  А данный МК (STM32F103) вроде как Cortex-M0? Cortex-M3
--------------------
ASB
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|