|
Пауза между байтами в SPI DMA, STM32F4xx |
|
|
|
 |
Ответов
|
Sep 19 2013, 19:45
|
Гуру
     
Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702

|
Попробовал. Получилось)) Правда, на STM32F303 (с новым SPI). Код void init_SPI2(void) { SPI2->CR1 = (1 << SPI_CR1_SSM) | (1 << SPI_CR1_SSI) | (0 << SPI_CR1_SPE) | (2 << SPI_CR1_BR) | (1 << SPI_CR1_MSTR);
SPI2->CR2 = (1 << SPI_CR2_SSOE) | (7 << SPI_CR2_DS) | (0 << SPI_CR2_FRF) | (1 << SPI_CR2_NSSP) // ВСТАВИТЬ ПАУЗЫ | (0 << SPI_CR2_TXDMAEN);
SPI2->CR1 = (1 << SPI_CR1_SSM) | (1 << SPI_CR1_SSI) | (1 << SPI_CR1_SPE) | (2 << SPI_CR1_BR) | (1 << SPI_CR1_MSTR); }
Передача: SPI2->CR2 = (1 << SPI_CR2_SSOE) | (7 << SPI_CR2_DS) | (0 << SPI_CR2_FRF) | (1 << SPI_CR2_NSSP) | (0 << SPI_CR2_TXDMAEN);
DMA1_Channel5->CCR = (DMA_PL_HIGH << DMA_CCR_PL) | (DMA_SIZE_BYTE << DMA_CCR_MSIZE) | (DMA_SIZE_BYTE << DMA_CCR_PSIZE) | (1 << DMA_CCR_DIR) | (1 << DMA_CCR_MINC) | (0 << DMA_CCR_EN);
DMA1_Channel5->CPAR = (DWORD)&SPI2->DR8; DMA1_Channel5->CMAR = (DWORD)&val; DMA1_Channel5->CNDTR = 8;
DMA1->IFCR = (0x0F << 16);
DMA1_Channel5->CCR = (DMA_PL_HIGH << DMA_CCR_PL) | (DMA_SIZE_BYTE << DMA_CCR_MSIZE) | (DMA_SIZE_BYTE << DMA_CCR_PSIZE) | (1 << DMA_CCR_DIR) | (1 << DMA_CCR_MINC) | (1 << DMA_CCR_EN);
SPI2->CR2 = (1 << SPI_CR2_SSOE) | (7 << SPI_CR2_DS) | (0 << SPI_CR2_FRF) | (1 << SPI_CR2_NSSP) | (1 << SPI_CR2_TXDMAEN); Частота SPI 72Мгц/8/2 = 4.5МГц. Пауза между битами 540нс.
Эскизы прикрепленных изображений
|
|
|
|
|
Sep 19 2013, 20:07
|
Знающий
   
Группа: Свой
Сообщений: 583
Регистрация: 7-06-06
Из: Таганрог
Пользователь №: 17 840

|
Цитата(adnega @ Sep 20 2013, 00:01)  Дык, NSS-ом в STM обычно софтово машут. А, я все больше по старинке (FPGA) на железку полагаюсь  Нафига лишний боян. машет nSS, ну и пусть машет. А топикпастреру, следуюший алгоритмтм, но без DMA: послал, узнал что отправилось, взвел таймер, по истечению таймера запустил на один байт и т.д.
|
|
|
|
|
Sep 19 2013, 20:25
|
Гуру
     
Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702

|
Цитата(DmitryM @ Sep 20 2013, 00:07)  А, я все больше по старинке (FPGA) на железку полагаюсь  Нафига лишний боян. )) Сравнили. В МК чем-то нужно жертвовать. Из всех зол, это меньшее. Но ТС вряд ли подойдет, т.к. семейство другое... PS. На большом отрезке любопытно наблюдать динамику в ST. Как переделали AFIO в новых процах (большое за это спасибо), в новых SPI поддерживаются посылки от 4 до 16 бит (и паузы вставлять можно), появились 32-битные таймеры и т.п. Но на мой взгляд плохо, что переделали RTC (навороченный календарь вместо счетчика секунд), плохо что вынесли GPIO из bit-band региона((
|
|
|
|
|
Sep 19 2013, 20:32
|
Знающий
   
Группа: Свой
Сообщений: 583
Регистрация: 7-06-06
Из: Таганрог
Пользователь №: 17 840

|
Цитата(adnega @ Sep 20 2013, 00:25)  в новых SPI поддерживаются посылки от 4 до 16 бит (и паузы вставлять можно) Как? Именно об этом спрашивает Rash. ЗЫ. Легко это сделал на SAM7
|
|
|
|
Сообщений в этой теме
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 Цитата(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 Rash плавая пауза между байтами думаю не проблема, глав... Sep 20 2013, 14:11 adnega Цитата(Rash @ Sep 20 2013, 18:11) плавая ... Sep 20 2013, 15:17 Golikov A. ну это понятно ДМА то надо дождаться свободной шин... Sep 20 2013, 14:43 Rash adnega, спасибо буду пробовать Sep 23 2013, 06:37
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|