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

 
 
> STM32 конец клока SPI
RadiatoR
сообщение Sep 17 2016, 13:05
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 270
Регистрация: 8-08-15
Из: Москва
Пользователь №: 87 901



Всем доброго дня.
Завожу MRF24J40. SPI.
Аппаратного CS нету, вылезаем софтверно.

Ногу CS опускаю в начале записи, поднимаю по прерыванию RXNEIE. Все вроде бы нормально (процесс записи в регистр 0x18 значения 0x98):

Но есть проблема - как оказалось запись в чип происходит по спаду клока, пока еще выбран CS. Точнее захват может и по фронту происходит, но запись точно по спаду. И тут возникает проблема - прерывание происходит на половине последнего клока - то есть его фронт уже был, прошла четверть периода клока и прерывается. Соответственно я поднимаю CS. Но как показали опыты если его поднять до того, как клок упадет вниз запись не произведется.

Собственно вопрос - как оптимально сдвинуть CS на половину периода клока? То есть после того, как он опустится.

Спасибо.

PS
Очень интересно - проблема решилась сама собой с увеличением частоты. На скриншоте частота = 24МГц/256. поставил делитель 64 и CS сдвинулся более чем на пол периода

Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Alechek
сообщение Sep 21 2016, 07:09
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882



Стандартные библиотеки не наш метод? Уважуха! beer.gif
По использованию без библиотек для начала все можно глянуть сюда
http://we.easyelectronics.ru/STM32/primery...-bibliotek.html

А так все просто:

Для STM32F10x
Код
void DmaXfer(void const * txbuf,
             void       * rxbuf,
             int len)
{
  DMA1_Channel2->CCR = 0;
  DMA1_Channel3->CCR = 0;
  
  DMA1->IFCR = DMA_IFCR_CGIF2;
  
  DMA1_Channel2->CPAR = (uint32_t)&SPI1->DR; //DR Base
  DMA1_Channel2->CMAR = (uint32_t)rxbuf;
  DMA1_Channel2->CNDTR = len;
  
  DMA1_Channel3->CPAR = (uint32_t)&SPI1->DR; //DR Base
  DMA1_Channel3->CMAR = (uint32_t)txbuf;
  DMA1_Channel3->CNDTR = len;
  
  DMA1_Channel2->CCR = 0
                      | DMA_CCR_MSIZE_0
                      | DMA_CCR_PSIZE_0 // 16 bit
                      | DMA_CCR_MINC
                      | DMA_CCR_TCIE
                      | DMA_CCR_EN;
                        
  DMA1_Channel3->CCR = 0
                      | DMA_CCR_MSIZE_0
                      | DMA_CCR_PSIZE_0 // 16 bit
                      | DMA_CCR_MINC
                      | DMA_CCR_DIR
                      | DMA_CCR_EN;

  SPI1->CR2 |= 0
   |SPI_CR2_RXDMAEN // разрешить передачу принятых данных через DMA
   | SPI_CR2_TXDMAEN; // Разрешить принимать данные для передачи через DMA  
   ;  
  
  while (!(DMA1->ISR & (DMA_ISR_TCIF2 | 0)));
  
  return;
}
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- RadiatoR   STM32 конец клока SPI   Sep 17 2016, 13:05
- - ViKo   Поднимайте ногу CS по SPI_SR_BSY.   Sep 17 2016, 13:10
- - AlanDrakes   Лично у меня - вот такая конструкция: Код GPIOA-...   Sep 17 2016, 13:57
- - scifi   Цитата(RadiatoR @ Sep 17 2016, 16:05) Оч...   Sep 17 2016, 14:44
- - RadiatoR   2ViKo не вариант - не использую вайлы 2scifi при ...   Sep 17 2016, 18:29
|- - ViKo   Цитата(RadiatoR @ Sep 17 2016, 21:29) 2V...   Sep 18 2016, 05:59
- - jcxz   Цитата(RadiatoR @ Sep 17 2016, 19:05) Со...   Sep 18 2016, 04:41
|- - RadiatoR   Цитата(jcxz @ Sep 18 2016, 07:41) Использ...   Sep 18 2016, 08:20
|- - scifi   Цитата(RadiatoR @ Sep 18 2016, 11:20) Жд...   Sep 18 2016, 09:09
|- - ViKo   Цитата(RadiatoR @ Sep 18 2016, 11:20) Жд...   Sep 18 2016, 09:23
||- - RadiatoR   Цитата(ViKo @ Sep 18 2016, 12:23) Да, уве...   Sep 18 2016, 11:45
|- - jcxz   Цитата(RadiatoR @ Sep 18 2016, 14:20) Эт...   Sep 18 2016, 14:01
||- - RadiatoR   Цитата(jcxz @ Sep 18 2016, 17:01) Или чит...   Sep 19 2016, 10:08
||- - scifi   Цитата(RadiatoR @ Sep 19 2016, 13:08) CP...   Sep 19 2016, 10:35
||- - jcxz   Цитата(RadiatoR @ Sep 19 2016, 16:08) А ...   Sep 19 2016, 11:38
|- - RadiatoR   Прочтите внимательнее мое сообщение: Цитата(Radiat...   Sep 19 2016, 10:58
- - scifi   Вообще, конечно, плохо, что нет у STM32 нужного пр...   Sep 18 2016, 12:27
- - RadiatoR   В общем я гляну как будет себя вести ожидание BSY ...   Sep 18 2016, 13:29
- - scifi   "Не верю" (С)   Sep 19 2016, 11:23
- - RadiatoR   Что бы лишний раз не распинаться опишу - формат ра...   Sep 19 2016, 13:11
|- - scifi   Цитата(RadiatoR @ Sep 19 2016, 16:11) В ...   Sep 19 2016, 13:20
|- - Obam   Цитата(RadiatoR @ Sep 19 2016, 17:11) … ...   Sep 19 2016, 13:26
- - RadiatoR   Вот вот. Я и говорю об этом. Всмысле про то, что е...   Sep 19 2016, 14:20
|- - jcxz   Простой способ продлить CS дольше не прибегая к та...   Sep 19 2016, 18:03
|- - Шаманъ   Цитата(jcxz @ Sep 19 2016, 21:03) Простой...   Sep 20 2016, 12:23
|- - RadiatoR   Цитата(Шаманъ @ Sep 20 2016, 15:23) У мен...   Sep 20 2016, 16:58
|- - Alechek   Цитата(RadiatoR @ Sep 20 2016, 21:58) Че...   Sep 21 2016, 04:30
|- - RadiatoR   Цитата(Alechek @ Sep 21 2016, 07:30) Ну и...   Sep 21 2016, 05:02
- - RadiatoR   Приятно видеть людей, которые понимают в чем преле...   Sep 21 2016, 07:33


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

 


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


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