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

 
 
> stm32f407 SPI обнаружил косяк
SasaVitebsk
сообщение Nov 16 2012, 10:45
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



При инициализации с делителем на 64 (с другими не проверял). SPI3 (с другими не проверял). stm407 на 168МГц (с другими не проверял).
После записи в регистр DR необходимо выждать задержку до проверки флага BSY в регистре SR. Иначе байт может потерятся (затерется следующим).
То есть флаг занятости выскакивает с задержкой. Причём задержка приличная, успеваю выйти и войти в процедуру.
После установки задержки всё устаканилось.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
AHTOXA
сообщение Dec 19 2012, 17:36
Сообщение #2


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(sidy @ Dec 19 2012, 21:35) *
Привожу кусок кода:

Хорошо, давайте разбираться по порядку. Где у вас п.1 ("Прочесть DR.") ?

Цитата(cyb @ Dec 19 2012, 23:02) *
Ок, спасибо. Я правильно понимаю, что момент когда отпускать CS нужно смотреть по флагу BSY?

Да, он именно для этого и предназначен.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
sidy
сообщение Dec 20 2012, 04:08
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 280
Регистрация: 2-11-08
Пользователь №: 41 333



Цитата(AHTOXA @ Dec 19 2012, 21:36) *
Хорошо, давайте разбираться по порядку. Где у вас п.1 ("Прочесть DR.") ?


Добавил чтение DR, но это ничего не изменило:
Код
Recycler=SPI3->DR;
SPI3->DR=TransmitBuffer[0];
Tx_Data=1;


Обработчик:
Код
void SPI3_IRQHandler (void){
  if(Rx_Data>=6) {                     //Если все передали
    CS_SET1;
    return;
  }
  if(SPI3->SR&SPI_SR_RXNE){
    ReceiveBuffer[Rx_Data++]=SPI3->DR;             //Очищаем RXNE чтением DR
    SPI3->DR=TransmitBuffer[Tx_Data++];            //Передаем следующий байт
  }
}

Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Dec 20 2012, 04:28
Сообщение #4


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



А чему равно Rx_Data?
Как настроен SPI, какие прерывания разрешены?
Почему вы проверяете if(Rx_Data>=6) вне ветки if(SPI3->SR&SPI_SR_RXNE)?


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
sidy
сообщение Dec 20 2012, 04:51
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 280
Регистрация: 2-11-08
Пользователь №: 41 333



Цитата(AHTOXA @ Dec 20 2012, 08:28) *
А чему равно Rx_Data?
Как настроен SPI, какие прерывания разрешены?
Почему вы проверяете if(Rx_Data>=6) вне ветки if(SPI3->SR&SPI_SR_RXNE)?

Первоначально Rx_Data=0;
Привожу конфигурацию SPI3, прерывания разрешены только по приему.
Код
//********************************************************************************
*********    
//*Конфигурация SPI3
//********************************************************************************
*********
RCC->APB1ENR|=RCC_APB1ENR_SPI3EN;                            //Тактирование SPI3
SPI3->CR1|=SPI_CR1_BR_2
            |SPI_CR1_BR_1
            |SPI_CR1_BR_0                    //Скорость Fpclk/256 84 МГц/256=328,125 кГц
            |SPI_CR1_LSBFIRST                //LSB передается вперед
            |SPI_CR1_SSM                    //NSS управляется програмно
            |SPI_CR1_SSI;                    //NSS=1
SPI3->CR2|=SPI_CR2_SSOE;                    //NSS в качестве выхода                    
/*CPOL=0 (clock polarity) CK to 0 when idle; CPHA=0 (clock phase)
the first clock transition is the first data capture edge
DFF=0 (data frame format) 8-bit data format*/
SPI3->CR2|=SPI_CR2_RXNEIE;                    //Прерывания по окончанию приема и передачи
                        
SPI3->CR1|=SPI_CR1_MSTR;                    //SPI3 режим мастера    
    
NVIC_SetPriority(SPI3_IRQn, 3);                //Прерывание SPI3 третье по приоритету        
NVIC_EnableIRQ(SPI3_IRQn);                    //Разрешаем прерывания SPI3
    
SPI3->CR1|=SPI_CR1_SPE;                    //Разрешаем работу SPI3
CS_SET0;                                    //CS=0
Recycler=SPI3->DR;                            //Прочесть DR
SPI3->DR=MASTER_Buffer_Tx[0];                //Первый байт в буфер передачи
Tx_Data=1;
}

void SPI3_IRQHandler (void){
if(SPI3->SR&SPI_SR_RXNE){
   SLAVE_Buffer_Rx[Rx_Data++]=SPI3->DR;        //Очищаем RXNE чтением DR
   if(Rx_Data==6){
     CS_SET1;
     return;
   }
SPI3->DR=MASTER_Buffer_Tx[Tx_Data++];        //Следующий байт в буфер передачи
}
}


Сообщение отредактировал sidy - Dec 20 2012, 04:52
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- SasaVitebsk   stm32f407 SPI обнаружил косяк   Nov 16 2012, 10:45
- - VslavX   Цитата(SasaVitebsk @ Nov 16 2012, 12:45) ...   Nov 16 2012, 11:00
- - skripach   Попробуйте проверять TXE, а не BSY. BSY это навер...   Nov 16 2012, 11:07
- - SasaVitebsk   Я конечно понимаю, но ЦитатаBit 7 BSY: Busy flag 0...   Nov 16 2012, 13:44
- - Flexz   наверное не просто так в RM написано ЦитатаNote: D...   Nov 16 2012, 15:14
|- - KnightIgor   Цитата(Flexz @ Nov 16 2012, 17:14) наверн...   Nov 16 2012, 22:37
|- - VslavX   Цитата(KnightIgor @ Nov 17 2012, 00:37) П...   Nov 16 2012, 23:22
|- - HHIMERA   Цитата(KnightIgor @ Nov 17 2012, 02:37) П...   Nov 16 2012, 23:23
||- - SasaVitebsk   Цитата(HHIMERA @ Nov 17 2012, 03:23) Да в...   Nov 17 2012, 14:55
|- - AHTOXA   Цитата(KnightIgor @ Nov 17 2012, 04:37) Э...   Nov 19 2012, 15:47
||- - SasaVitebsk   Цитата(AHTOXA @ Nov 19 2012, 18:47) Вот т...   Nov 20 2012, 20:27
||- - ViKo   Цитата(AHTOXA @ Nov 19 2012, 18:47) Кстат...   Jan 9 2013, 14:22
||- - HHIMERA   Цитата(ViKo @ Jan 9 2013, 17:22) Пробую п...   Jan 9 2013, 15:36
|||- - ViKo   Цитата(HHIMERA @ Jan 9 2013, 18:36) Это з...   Jan 9 2013, 17:28
|||- - HHIMERA   Цитата(ViKo @ Jan 9 2013, 21:28) Я провер...   Jan 9 2013, 18:19
|||- - ViKo   Цитата(HHIMERA @ Jan 9 2013, 21:19) Пусть...   Jan 9 2013, 18:23
|||- - HHIMERA   Ещё раз... не то же самое!!! Когда нар...   Jan 9 2013, 18:39
|||- - ViKo   Цитата(HHIMERA @ Jan 9 2013, 21:39) Ещё р...   Jan 9 2013, 19:09
|||- - HHIMERA   Цитата(ViKo @ Jan 9 2013, 23:09) Покажите...   Jan 9 2013, 19:33
||- - AHTOXA   Цитата(ViKo @ Jan 9 2013, 20:22) Насчет R...   Jan 9 2013, 19:18
||- - ViKo   Цитата(AHTOXA @ Jan 9 2013, 22:18) Что зн...   Jan 9 2013, 19:47
||- - HHIMERA   Цитата(ViKo @ Jan 9 2013, 23:36) а програ...   Jan 9 2013, 19:48
|||- - ViKo   Цитата(HHIMERA @ Jan 9 2013, 22:48) А пра...   Jan 9 2013, 19:55
|||- - HHIMERA   Цитата(ViKo @ Jan 9 2013, 23:55) Ржу-нима...   Jan 9 2013, 20:03
||||- - ViKo   Цитата(HHIMERA @ Jan 9 2013, 23:03) Продо...   Jan 9 2013, 20:05
|||- - HHIMERA   Цитата(ViKo @ Jan 9 2013, 23:55) Вы по пр...   Jan 9 2013, 20:07
||- - AHTOXA   Цитата(ViKo @ Jan 10 2013, 01:47) по карт...   Jan 9 2013, 20:30
||- - ViKo   Цитата(AHTOXA @ Jan 9 2013, 23:30) ... а ...   Jan 9 2013, 20:53
||- - HHIMERA   Что вы референс не читали... RXNE говорит только о...   Jan 9 2013, 21:00
|||- - ViKo   Цитата(HHIMERA @ Jan 10 2013, 00:00) Что ...   Jan 9 2013, 21:02
|||- - Tahoe   Цитата(ViKo @ Jan 10 2013, 01:02) Да ну? ...   Jan 9 2013, 21:15
|||- - HHIMERA   Цитата(ViKo @ Jan 10 2013, 00:02) Да ну? ...   Jan 9 2013, 21:15
||- - HHIMERA   Цитата(ViKo @ Jan 9 2013, 23:53) И я прош...   Jan 9 2013, 21:06
|||- - ViKo   Цитата(HHIMERA @ Jan 10 2013, 00:06) О дё...   Jan 9 2013, 21:13
|||- - ViKo   Цитата(HHIMERA @ Jan 10 2013, 00:06) whil...   Jan 9 2013, 21:20
||- - AHTOXA   Цитата(ViKo @ Jan 10 2013, 02:53) Не надо...   Jan 9 2013, 21:18
||- - Tahoe   Цитата(AHTOXA @ Jan 10 2013, 01:18) Я лич...   Jan 9 2013, 21:22
||- - ViKo   Цитата(AHTOXA @ Jan 10 2013, 00:18) Я лич...   Jan 9 2013, 21:48
||- - HHIMERA   Цитата(ViKo @ Jan 10 2013, 00:38) Фантази...   Jan 9 2013, 21:51
||- - Tahoe   Цитата(ViKo @ Jan 10 2013, 01:48) О том, ...   Jan 9 2013, 22:00
|- - sidy   Цитата(KnightIgor @ Nov 17 2012, 02:37) 1...   Dec 18 2012, 13:47
||- - Danis   Цитата(sidy @ Dec 18 2012, 17:47) Не полу...   Dec 18 2012, 17:04
|- - sidy   Цитата(KnightIgor @ Nov 17 2012, 02:37) 1...   Dec 19 2012, 09:25
|- - AHTOXA   Цитата(sidy @ Dec 19 2012, 15:25) И еще о...   Dec 19 2012, 09:36
|- - sidy   Цитата(AHTOXA @ Dec 19 2012, 13:36) Скоре...   Dec 19 2012, 15:35
- - HHIMERA   Цитата(SasaVitebsk @ Nov 16 2012, 13:45) ...   Nov 16 2012, 18:34
|- - SasaVitebsk   Цитата(HHIMERA @ Nov 16 2012, 22:34) ника...   Nov 16 2012, 19:09
- - cyb   Похоже у меня подобная проблема на STM32F103VE. По...   Dec 19 2012, 13:58
|- - AHTOXA   Цитата(cyb @ Dec 19 2012, 19:58) Похоже у...   Dec 19 2012, 14:22
|- - cyb   Цитата(AHTOXA @ Dec 19 2012, 16:22) У вас...   Dec 19 2012, 17:02
- - sidy   Посмотрел я сейчас осциллограммы и кажется (если я...   Dec 20 2012, 06:41
- - AHTOXA   Цитата(sidy @ Dec 20 2012, 10:51) Кодvoid...   Dec 20 2012, 07:16
- - cyb   ЦитатаКак я понял для поднятия CS нужно ждать когд...   Dec 20 2012, 09:22
- - sidy   Спасибо за разъяснения. Задам еще вопрос здесь по ...   Dec 21 2012, 12:08
|- - AHTOXA   Похоже, MISO сконфигурирован как выход.   Dec 21 2012, 15:32
- - ViKo   Подправил код для чтения идентификатора SPI Flash ...   Jan 11 2013, 07:55
|- - AHTOXA   Я тут проделал несколько опытов, чтобы разобраться...   Jan 11 2013, 16:01
|- - HHIMERA   "Песец... серебристый."(С) Цитата(AH...   Jan 11 2013, 16:41
||- - AHTOXA   Цитата(HHIMERA @ Jan 11 2013, 22:41) Note...   Jan 11 2013, 17:04
|- - ViKo   Цитата(AHTOXA @ Jan 11 2013, 19:01) Перво...   Jan 11 2013, 17:24
||- - AHTOXA   Цитата(ViKo @ Jan 11 2013, 23:24) Разверт...   Jan 11 2013, 18:27
||- - ViKo   Цитата(AHTOXA @ Jan 11 2013, 21:27) Этой ...   Jan 11 2013, 18:50
|- - Tahoe   Цитата(AHTOXA @ Jan 11 2013, 20:01) Перво...   Jan 11 2013, 19:14
|- - ViKo   Цитата(Tahoe @ Jan 11 2013, 22:14) Сейчас...   Jan 11 2013, 19:20
- - Tahoe   На форуме ST были разборки с SPI_NSS и флагами, го...   Jan 11 2013, 19:24
|- - HHIMERA   Не секрет, что все эти флаги не обязательны... Что...   Jan 11 2013, 19:53
- - AHTOXA   Цитата(Tahoe @ Jan 12 2013, 01:14) Наскол...   Jan 11 2013, 20:30
|- - Огурцов   Можно я тут со своими аналогичными глупостями влез...   Jan 12 2013, 01:12
||- - AHTOXA   Цитата(Огурцов @ Jan 12 2013, 07:12) Вот ...   Jan 12 2013, 05:34
||- - Огурцов   Не проверял. По-любому проверки флага готовности о...   Jan 12 2013, 07:37
|- - ViKo   Цитата(AHTOXA @ Jan 11 2013, 23:30) Вот в...   Jan 12 2013, 07:40
||- - Огурцов   А что с атмелом не так ? у мег такой ерунды не был...   Jan 12 2013, 07:43
|- - ViKo   Цитата(AHTOXA @ Jan 11 2013, 23:30) Кстат...   Jan 12 2013, 08:13
|- - AHTOXA   Цитата(ViKo @ Jan 12 2013, 13:40) Пусть б...   Jan 12 2013, 09:01
|- - ViKo   Цитата(AHTOXA @ Jan 12 2013, 12:01) Как в...   Jan 12 2013, 09:35
- - Tahoe   ЦитатаI've never used slave mode without DMA b...   Jan 13 2013, 15:44
|- - AHTOXA   Цитата(Tahoe @ Jan 13 2013, 21:44) Цитата...   Jan 13 2013, 16:15
|- - Tahoe   Цитата(AHTOXA @ Jan 13 2013, 20:15) Судя ...   Jan 13 2013, 22:43
|- - AHTOXA   Понятно, что этот код работает. Но точно так же он...   Jan 14 2013, 05:28
- - Tahoe   Речь про "сакральный смысл" флага BSY. Н...   Jan 14 2013, 06:56
|- - AHTOXA   Так как раз его вариант и не раскрывает "сакр...   Jan 14 2013, 07:36
|- - ViKo   Цитата(Tahoe @ Jan 14 2013, 09:56) Речь п...   Jan 14 2013, 08:30
|- - Tahoe   Цитата(ViKo @ Jan 14 2013, 12:30) Смысл B...   Jan 14 2013, 09:05
|- - ViKo   Цитата(Tahoe @ Jan 14 2013, 12:05) Так во...   Jan 15 2013, 12:57
|- - HHIMERA   Приведённый вами код, как частный случай, ни о чём...   Jan 15 2013, 13:41
|- - AHTOXA   Цитата(ViKo @ Jan 15 2013, 18:57) Коль уж...   Jan 15 2013, 13:57
|- - HHIMERA   Цитата(AHTOXA @ Jan 15 2013, 16:57) С дру...   Jan 15 2013, 14:17
|- - ViKo   Цитата(AHTOXA @ Jan 15 2013, 16:57) С дру...   Jan 15 2013, 16:18
|- - AHTOXA   Цитата(ViKo @ Jan 15 2013, 22:18) Может в...   Jan 15 2013, 16:46
- - ViKo   Докладываю. Посылаю в длинный последовательный рег...   Mar 12 2013, 18:14
- - ViKo   И еще. Для переключения полярности синхроимпульсов...   Mar 13 2013, 04:38
- - ASDFG123   Как правильно написать функцию отправки 16 бит по ...   Mar 13 2016, 12:47
- - Alechek   Подниму тут тему. Странно, что обсуждают только ST...   Jun 22 2018, 08:36


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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 16:21
Рейтинг@Mail.ru


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