klen 1 10 февраля, 2013 Опубликовано 10 февраля, 2013 · Жалоба Здравствуйте. Возникла необходимость вывести битовый поток заданной длинны через лапку микросхемы stm32f4xx . длинна импульса бита 50ns(20МГц), просто заводя таймер на 50 нан и в прерывании запись в порт бита не успевает 168 / 20 = 8,9 таков таймера до следующего тика, а само прерывани не менее 12 тактов... нейспевает. какнить с помошью дма можно извернутся? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
e-serg 0 10 февраля, 2013 Опубликовано 10 февраля, 2013 · Жалоба Здравствуйте. Возникла необходимость вывести битовый поток заданной длинны через лапку микросхемы stm32f4xx . длинна импульса бита 50ns(20МГц), просто заводя таймер на 50 нан и в прерывании запись в порт бита не успевает 168 / 20 = 8,9 таков таймера до следующего тика, а само прерывани не менее 12 тактов... нейспевает. какнить с помошью дма можно извернутся? Делал вывод последовательности с помощью RAM(uint32) -> DMA -> GPIO(BSRR), процессор STM32F107 пишу 1MHz, работает. запрос DMA формирует таймер. Вашу задачу надо проверить, где-то на грани фола возможно получится. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 10 февраля, 2013 Опубликовано 10 февраля, 2013 · Жалоба Здравствуйте. Возникла необходимость вывести битовый поток заданной длинны через лапку микросхемы stm32f4xx . длинна импульса бита 50ns(20МГц), просто заводя таймер на 50 нан и в прерывании запись в порт бита не успевает 168 / 20 = 8,9 таков таймера до следующего тика, а само прерывани не менее 12 тактов... нейспевает. какнить с помошью дма можно извернутся? Можно. Я делал так: Генерировал массив отвечающий за установку/сброс битов и по таймеру через DMA производил запись в GPIOx->BSRR. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flexz 0 10 февраля, 2013 Опубликовано 10 февраля, 2013 · Жалоба Добавлю, что копирование из RAM в GPIO через DMA с триггером от таймера укладывается в 5 тактов, а если DMA без триггера, просто M2M - 4 такта. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 234 11 февраля, 2013 Опубликовано 11 февраля, 2013 · Жалоба Возникла необходимость вывести битовый поток заданной длинны через лапку микросхемы stm32f4xx . длинна импульса бита 50ns(20МГц), просто заводя таймер на 50 нан и в прерывании запись в порт бита не успевает 168 / 20 = 8,9 таков таймера до следующего тика, а само прерывани не менее 12 тактов... нейспевает. какнить с помошью дма можно извернутся?А чем SPI не канает? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
klen 1 12 февраля, 2013 Опубликовано 12 февраля, 2013 · Жалоба А чем SPI не канает? сасибо за идею. заюзал SPI2 в режиме I2S - оп причине наличия у i2S своего собственного PLL что дает возможность тонко управлять битрейтом выходного потока. раскочегарил на максимум скорости - получилось 1, MCO(мастер клок - меандр) 132МГц 2, I2S_CK - меандр 32МГц 3, собственно выталкиваемые биты со чкоростью клока сехе обычная - ОЗУ -> DMA-> SPI, выдается пачка импульсов(в моем случае это 128 бит M-последовательность ) из озушного буфера одинарной DMA транзакцией. а милисикундный период мачек таймером. в прерывании по переполнению запускается DMA. все отлично работает, никакой загрузки проца. шина и матрица видимо шевелется а остальные ресурсы остаются в наших руках :) спасибо за подсказку сам бы не допертил. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 234 13 февраля, 2013 Опубликовано 13 февраля, 2013 · Жалоба А теперь от этого таймера запускаете не прерывание, а DMA-канал, который стартует DMA-канал, передающий в I2S. И проц у вас вообще стоит - можете укладывать его спать :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
klen 1 14 февраля, 2013 Опубликовано 14 февраля, 2013 · Жалоба А теперь от этого таймера запускаете не прерывание, а DMA-канал, который стартует DMA-канал, передающий в I2S. И проц у вас вообще стоит - можете укладывать его спать :) с этого места поподробней..... запрсы DMA выполняет I2S для выборки слов из буфера. а какая связь с таймера? просьба схему по развернутее описать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться