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

 
 
> Пауза между байтами в SPI DMA, STM32F4xx
Rash
сообщение Sep 19 2013, 07:25
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 639
Регистрация: 5-09-05
Пользователь №: 8 231



Приветствую.
Может кто нибудь подсказать возможно ли сделать паузу между байтами в SPI при использовании DMA, STM32F4xx? например совместно с каким либо таймером. А то многие медленные мс требуют паузы между байтами несколько сотен нсек и для работы с ними по DMA приходится понижать частоту до 1-2 МГц, хотя сами они держат до 8 МГц при побайтовом вычитывании. Мк STM32F4xx.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Rash
сообщение Sep 20 2013, 14:11
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 639
Регистрация: 5-09-05
Пользователь №: 8 231



плавая пауза между байтами думаю не проблема, главное что бы минимальная пауза была регулируемая в понятных приделах
Go to the top of the page
 
+Quote Post
adnega
сообщение Sep 20 2013, 15:17
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(Rash @ Sep 20 2013, 18:11) *
плавая пауза между байтами думаю не проблема, главное что бы минимальная пауза была регулируемая в понятных приделах

Тогда вот:
CODE

//-----------------------------------------------------------------------------
// void __inline init_SPI2(void)
//-----------------------------------------------------------------------------
void __inline init_SPI2(void)
{
SPI2->CR1 =
(0 << SPI_CR1_SPE)
| (0 << SPI_CR1_DFF)
| (1 << SPI_CR1_SSM)
| (1 << SPI_CR1_SSI)
| (1 << SPI_CR1_MSTR)
| (2 << SPI_CR1_BR);

SPI2->CR2 =
(0 << SPI_CR2_RXNEIE)
| (0 << SPI_CR2_TXDMAEN)
| (1 << SPI_CR2_SSOE);

SPI2->CR1 =
(1 << SPI_CR1_SPE)
| (0 << SPI_CR1_DFF)
| (1 << SPI_CR1_SSM)
| (1 << SPI_CR1_SSI)
| (1 << SPI_CR1_MSTR)
| (2 << SPI_CR1_BR);
}

//-----------------------------------------------------------------------------
// void __inline init_TIMER3(void)
//-----------------------------------------------------------------------------
void __inline init_TIMER3(void)
{
TIM3->PSC = 0;
TIM3->CR1 = 0;
TIM3->ARR = 147 - 1; // ПЕРИОД СЛЕДОВАНИЯ ТУТ
TIM3->CCR1 = 10; // для отладки "желтый фронт"
TIM3->CCR4 = 1;
TIM3->CCMR1 = (OC_MODE_PWM1 << TIM_CCMR1_OC1M);
TIM3->CCER = (1 << TIM_CCER_CC1E) | (1 << TIM_CCER_CC4E);
TIM3->SMCR = 0;
TIM3->DIER =
(0 << TIM_DIER_CC1IE)
| (0 << TIM_DIER_CC4DE)
| (0 << TIM_DIER_UIE);
}

Еще нужно разрешить прерывание для DMA1_Stream3.

void DMA1_Stream3_IRQHandler(void) __attribute__((interrupt("IRQ")));
void DMA1_Stream3_IRQHandler(void)
{
if(DMA1->LISR & (1 << 27))
{
TIM3->CR1 = 0;
GPIOB->BSRRL = (1 << 12); // NSS=1
DMA1->LIFCR = (1 << 27);
}
}

Запускаем так:

TIM3->CR1 = 0;
TIM3->CNT = 0;

TIM3->DIER =
(0 << TIM_DIER_CC1IE)
| (0 << TIM_DIER_CC4DE)
| (0 << TIM_DIER_UIE);

SPI2->CR2 =
(0 << SPI_CR2_RXNEIE)
| (0 << SPI_CR2_TXDMAEN)
| (0 << SPI_CR2_RXDMAEN)
| (1 << SPI_CR2_SSOE);

DMA1->LIFCR = 0x0F7D0000;

DMA1_Stream2->CR =
(2 << DMA_SCR_PL)
| (5 << DMA_SCR_CHSEL)
| (1 << DMA_SCR_MINC)
| (1 << DMA_SCR_DIR)
| (0 << DMA_SCR_EN);
DMA1_Stream2->PAR = (DWORD)&SPI2->DR;
DMA1_Stream2->M0AR = (DWORD)&spi_tx[0];
DMA1_Stream2->NDTR = SPI_DATA_SIZE;
DMA1_Stream2->CR =
(2 << DMA_SCR_PL)
| (5 << DMA_SCR_CHSEL)
| (1 << DMA_SCR_MINC)
| (1 << DMA_SCR_DIR)
| (1 << DMA_SCR_EN);

DMA1_Stream3->CR =
(3 << DMA_SCR_PL)
| (0 << DMA_SCR_CHSEL)
| (1 << DMA_SCR_MINC)
| (0 << DMA_SCR_DIR)
| (0 << DMA_SCR_EN)
| (1 << DMA_SCR_TCIE);
DMA1_Stream3->PAR = (DWORD)&SPI2->DR;
DMA1_Stream3->M0AR = (DWORD)&spi_rx[0];
DMA1_Stream3->NDTR = SPI_DATA_SIZE;
DMA1_Stream3->CR =
(3 << DMA_SCR_PL)
| (0 << DMA_SCR_CHSEL)
| (1 << DMA_SCR_MINC)
| (0 << DMA_SCR_DIR)
| (1 << DMA_SCR_EN)
| (1 << DMA_SCR_TCIE);

GPIOB->BSRRH = (1 << 12);

SPI2->CR2 =
(0 << SPI_CR2_RXNEIE)
| (0 << SPI_CR2_TXDMAEN)
| (1 << SPI_CR2_RXDMAEN)
| (1 << SPI_CR2_SSOE);

TIM3->DIER =
(0 << TIM_DIER_CC1IE)
| (1 << TIM_DIER_CC4DE)
| (0 << TIM_DIER_UIE);

TIM3->CR1 = (1 << TIM_CR1_CEN);
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Rash   Пауза между байтами в SPI DMA, STM32F4xx   Sep 19 2013, 07:25
- - scifi   Таймеры вполне способны генерировать запросы DMA с...   Sep 19 2013, 07:34
- - Rash   а примера случаем нет такого для настройки?   Sep 19 2013, 08:05
- - adnega   Цитата(Rash @ Sep 19 2013, 11:25) А то мн...   Sep 19 2013, 08:15
|- - DmitryM   Цитата(adnega @ Sep 19 2013, 12:15) Это к...   Sep 19 2013, 13:30
|- - adnega   Цитата(DmitryM @ Sep 19 2013, 17:30) напр...   Sep 19 2013, 13:48
|- - DmitryM   Цитата(adnega @ Sep 19 2013, 17:48) Если ...   Sep 19 2013, 13:55
- - Rash   одна из микр это CMX618 имено эти 200 нсек и нужно...   Sep 19 2013, 13:36
|- - megajohn   Цитата(Rash @ Sep 19 2013, 17:36) Или ест...   Sep 19 2013, 13:53
- - Rash   это зависимости на какой частоте запустить SPI. Пр...   Sep 19 2013, 13:52
|- - adnega   Цитата(Rash @ Sep 19 2013, 17:52) это зав...   Sep 19 2013, 14:22
|- - DmitryM   Цитата(adnega @ Sep 19 2013, 18:22) Повто...   Sep 19 2013, 14:36
- - Rash   adnega, Задержка байтами в SPI нужна конечно меньш...   Sep 19 2013, 14:42
|- - DmitryM   Цитата(Rash @ Sep 19 2013, 18:42) А тепер...   Sep 19 2013, 14:45
|- - adnega   Цитата(Rash @ Sep 19 2013, 18:42) А тепер...   Sep 19 2013, 15:08
- - adnega   Попробовал. Получилось)) Правда, на STM32F303 (с н...   Sep 19 2013, 19:45
|- - DmitryM   Цитата(adnega @ Sep 19 2013, 23:45) Попро...   Sep 19 2013, 20:00
|- - adnega   Цитата(DmitryM @ Sep 20 2013, 00:00) Это ...   Sep 19 2013, 20:01
|- - DmitryM   Цитата(adnega @ Sep 20 2013, 00:01) Дык, ...   Sep 19 2013, 20:07
|- - adnega   Цитата(DmitryM @ Sep 20 2013, 00:07) А, я...   Sep 19 2013, 20:25
|- - DmitryM   Цитата(adnega @ Sep 20 2013, 00:25) в нов...   Sep 19 2013, 20:32
|- - adnega   Цитата(DmitryM @ Sep 20 2013, 00:32) Как?...   Sep 19 2013, 20:58
|- - DmitryM   Цитата(adnega @ Sep 20 2013, 00:58) Дык, ...   Sep 19 2013, 21:03
|- - adnega   Цитата(DmitryM @ Sep 20 2013, 01:03) Опят...   Sep 19 2013, 22:30
|- - DmitryM   Цитата(adnega @ Sep 20 2013, 02:30) В так...   Sep 20 2013, 06:24
|- - HHIMERA   Вы хоть понимаете о чём идёт речь???   Sep 20 2013, 06:54
- - Rash   NSS и так программный, ибо в STM аппаратный он вро...   Sep 20 2013, 06:59
|- - HHIMERA   Цитата(Rash @ Sep 20 2013, 09:59) Вот есл...   Sep 20 2013, 07:34
||- - DmitryM   Цитата(HHIMERA @ Sep 20 2013, 11:34) Ещё ...   Sep 20 2013, 07:41
||- - HHIMERA   Цитата(DmitryM @ Sep 20 2013, 10:41) DMA ...   Sep 20 2013, 07:51
||- - DmitryM   Цитата(HHIMERA @ Sep 20 2013, 11:51) Ысчо...   Sep 20 2013, 08:54
|- - scifi   Цитата(Rash @ Sep 20 2013, 10:59) Вот есл...   Sep 20 2013, 07:53
- - Rash   не разобрался я как через таймер DMA запускать. По...   Sep 20 2013, 08:13
|- - scifi   Цитата(Rash @ Sep 20 2013, 12:13) не разо...   Sep 20 2013, 08:16
|- - adnega   Цитата(Rash @ Sep 20 2013, 12:13) не разо...   Sep 20 2013, 08:34
|- - scifi   Цитата(adnega @ Sep 20 2013, 12:34) Настр...   Sep 20 2013, 08:46
|- - adnega   Цитата(scifi @ Sep 20 2013, 12:46) Ну да,...   Sep 20 2013, 08:51
|- - scifi   Цитата(adnega @ Sep 20 2013, 12:51) Все х...   Sep 20 2013, 08:55
|- - HHIMERA   Цитата(adnega @ Sep 20 2013, 11:51) Все х...   Sep 20 2013, 09:04
|- - DmitryM   Цитата(HHIMERA @ Sep 20 2013, 13:04) а мн...   Sep 20 2013, 09:15
- - Rash   * частота CPU = 168МГц * Номер - SPI2, SPI3 * ча...   Sep 20 2013, 08:45
- - Rash   ЦитатаНужна только передача, как я понял? нужна и ...   Sep 20 2013, 08:54
|- - adnega   Цитата(Rash @ Sep 20 2013, 12:54) нужна и...   Sep 20 2013, 09:05
- - Rash   Цитата(adnega @ Sep 20 2013, 12:05) Всего...   Sep 20 2013, 09:10
- - Golikov A.   ДМА посылающий 1 байт не тоже самое что самому пол...   Sep 20 2013, 09:46
|- - adnega   Цитата(Golikov A. @ Sep 20 2013, 13:46) А...   Sep 20 2013, 10:12
|- - DmitryM   Цитата(Golikov A. @ Sep 20 2013, 13:46) ...   Sep 20 2013, 11:29
- - adnega   Ну собственно работа SPI с TIM и DMA. Обращаю вним...   Sep 20 2013, 13:48
- - Golikov A.   ну это понятно ДМА то надо дождаться свободной шин...   Sep 20 2013, 14:43
- - Rash   adnega, спасибо буду пробовать   Sep 23 2013, 06:37


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

 


RSS Текстовая версия Сейчас: 11th August 2025 - 21:50
Рейтинг@Mail.ru


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