реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> STM32F103 и захват потока данных, Справится ли?
AlexandrY
сообщение Oct 8 2010, 14:42
Сообщение #16


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.
Go to the top of the page
 
+Quote Post
Lmx2315
сообщение Apr 1 2016, 12:31
Сообщение #17


отэц
*****

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



Вопрос как у автора темы только по проще:
Нужно на 10 МГц принять 128 байт (побайтно с сопровождением сигнала WR) на порт STM32f103 и после этого на такой же скорости выдать в формате 16 бит на другой порт.
Больше ничего мк делать не должен, справится ли?

з.ы.
Планирую заводить входные данные на порт, а сигнал WR на внешнее прерывание - по его срабатыванию считывать байт с порта и писать его в массив.
Как массив заполняется - читать из массива в порт + формировать сигнал WR2 - для сопровождения данных.


--------------------
b4edbc0f854dda469460aa1aa a5ba2bd36cbe9d4bc8f92179f 8f3fec5d9da7f0
SHA-256
Go to the top of the page
 
+Quote Post
scifi
сообщение Apr 1 2016, 12:46
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(Lmx2315 @ Apr 1 2016, 15:31) *
Планирую заводить входные данные на порт, а сигнал WR на внешнее прерывание - по его срабатыванию считывать байт с порта и писать его в массив.

Не успеет. Надо, чтобы сигнал WR вызывал запрос DMA (например, через таймер), и уже DMA прочитает порт. И всё равно нет гарантии, что успеет, потому что у STM32F1 порты относительно медленные. В этом плане STM32F2 и STM32F4 гораздо лучше.
Кстати, что мешает взять МК с внешней параллельной шиной? Или же DCMI у STM32 умеет быстро захватывать параллельные данные.
Go to the top of the page
 
+Quote Post
Lmx2315
сообщение Apr 1 2016, 13:02
Сообщение #19


отэц
*****

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



Цитата(scifi @ Apr 1 2016, 16:46) *
Кстати, что мешает взять МК с внешней параллельной шиной? Или же DCMI у STM32 умеет быстро захватывать параллельные данные.

..такое дело - надо быстро решить одну задачу с помощью костылей которыми владею.
Вроде на вышеупомянутый STM32 написано что его порты могут работать на частоте до 18 МГц.
Если не успеет на 10 МГц , то примерно можно оценить теоретически на какой максимально частоте заработает?


--------------------
b4edbc0f854dda469460aa1aa a5ba2bd36cbe9d4bc8f92179f 8f3fec5d9da7f0
SHA-256
Go to the top of the page
 
+Quote Post
scifi
сообщение Apr 1 2016, 13:25
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(Lmx2315 @ Apr 1 2016, 16:02) *
Вроде на вышеупомянутый STM32 написано что его порты могут работать на частоте до 18 МГц.

Ну, если 18 МГц, то шансы есть, наверное. Кстати, а захват ограничен во времени? Если да, то я бы сделал так: заводим 8 бит и WR на 16-разрядный порт и читаем его в память непрерывно как можно быстрее. Когда посылка закончилась (надо это как-то определять, таймером что ли), разбираем содержимое памяти, выделяем там фронты WR и соответствующие данные.
Go to the top of the page
 
+Quote Post
Lmx2315
сообщение Apr 1 2016, 13:32
Сообщение #21


отэц
*****

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
gerber
сообщение Apr 1 2016, 14:38
Сообщение #22


Знающий
****

Группа: Участник
Сообщений: 750
Регистрация: 1-11-11
Пользователь №: 68 088



На STM32F103 (при FCPU=72 MHz) время между фронтом на пине и входом в EXTI-обработчик чуть меньше микросекунды (смотрел лично логическим анализатором), поэтому прокачать 10 МГц через прерывания по WR не получится.
А вот поллингом попробовать можно (как советовали выше), при запрещённых прерываниях, но вылизывать придётся каждую инструкцию цикла.


--------------------
"... часами я мог наблюдать, как люди работают." (М. Горький)
Go to the top of the page
 
+Quote Post
jcxz
сообщение Apr 1 2016, 15:21
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 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МГц.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Apr 1 2016, 15:35
Сообщение #24


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



А задать запись через DMA с порта в память по внешнему событию - WR?
Go to the top of the page
 
+Quote Post
Aleksandr Barano...
сообщение Apr 1 2016, 16:15
Сообщение #25


Частый гость
**

Группа: Участник
Сообщений: 169
Регистрация: 31-08-05
Из: New York
Пользователь №: 8 118



Цитата(jcxz @ Apr 1 2016, 11:21) *
А данный МК (STM32F103) вроде как Cortex-M0?

Cortex-M3


--------------------
ASB
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 12:13
Рейтинг@Mail.ru


Страница сгенерированна за 0.01402 секунд с 7
ELECTRONIX ©2004-2016