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

 
 
> Использование DMA для SPI в STM32F10x, Переполнение - прием не успевает?
KnightIgor
сообщение Sep 13 2013, 11:52
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725



Может кто сталкивался.

SPI передает и принимает с использованием DMA.
Очевидно, что для приема надо передавать хоть что-то (суть SPI), что я делаю с помощью двух каналов DMA:
- каналы приема (RX) и передачи (TX) взводятся, при этом в оба загружаются, естественно, одинаковые счетчики.
- толкается DMA TX.
- ожидается завершение DMA RX.

Так вот, иногда (не воспроизводимо и спорадически) из цикла ожидания можно и не выйти, а если прервать, то наблюдается следующее состояние:
- канал TX выплюнул всё (его счетчик 0).
- канал RX еще ждет, т.к. его счетчик равен 1,
- в SPI установлен бит переполнения по приему.

Из этого я делаю вывод, что приемный DMA в какой-то момент не успел выбрать байт из RX, а очередная передача успела напихать ему следующий байт. Я предполагал такую ситуацию, почему и повысил приоритет приемного канала (в экспериментах - даже до максимально возможного) относительно передающего, но спорадически зависание-таки имеет место.

Частота процессора: от 24 до 48MHz (переключаю выше, когда подсоединяется USB), частота SPI1 12MHz или 24MHz соответственно. SPI работает с SPI flash, которая может от 25MHz и выше.

Есть идеи?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- - _Pasha   А на <12MHZ работает?   Sep 13 2013, 13:29
- - prottoss   А на какой частоте работает ДМА выясняли?   Sep 13 2013, 14:48
|- - KnightIgor   Цитата(prottoss @ Sep 13 2013, 15:48) А н...   Sep 13 2013, 21:57
|- - _Pasha   Цитата(KnightIgor @ Sep 14 2013, 00:57) Д...   Sep 14 2013, 04:16
|- - adnega   Цитата(_Pasha @ Sep 14 2013, 08:16) Ага, ...   Sep 14 2013, 11:17
|- - alexdos   Цитата(adnega @ Sep 14 2013, 14:17) Делал...   Sep 15 2013, 09:31
- - adnega   Цитата(KnightIgor @ Sep 13 2013, 15:52) Е...   Sep 13 2013, 15:20
- - nx6310   Я для приема по spi через dma просто перевожу spi ...   Sep 14 2013, 05:46
|- - KnightIgor   Цитата(nx6310 @ Sep 14 2013, 06:46) Я для...   Sep 15 2013, 08:57
- - nx6310   Я останавливаю прием в прерывании от dma. Код RCC-...   Sep 15 2013, 10:40
|- - KnightIgor   Цитата(nx6310 @ Sep 15 2013, 11:40) Я ост...   Sep 15 2013, 10:49
- - adnega   Цитата(KnightIgor @ Sep 15 2013, 12:57) М...   Sep 15 2013, 13:01
- - nx6310   В моем случае глюков не замечалось. обшаюсь через ...   Sep 15 2013, 14:20
- - Golikov A.   а при 16 битной посылке байты местами поменяются.....   Sep 15 2013, 16:55
|- - SavageForest   Цитата(Golikov A. @ Sep 15 2013, 20:55) а...   Oct 25 2013, 06:12
- - SavageForest   обычно, в таких случаях, делают 2 буфера приёма ра...   Oct 22 2013, 07:39


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

 


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


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