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

 
 
> 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
Ответов
Tahoe
сообщение Jan 14 2013, 06:56
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 459
Регистрация: 30-03-06
Из: Москва
Пользователь №: 15 600



Речь про "сакральный смысл" флага BSY. На днях, как будет время, проверю его вариант.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jan 14 2013, 08:30
Сообщение #3


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(Tahoe @ Jan 14 2013, 09:56) *
Речь про "сакральный смысл" флага BSY. На днях, как будет время, проверю его вариант.

Смысл BSY - показать, что автомат последовательной пересылки работает. Смысл его использовать... нет, не вижу. sm.gif
Потому что флаги, показывающие, что буферы передачи и приема не свободны, логичнее использовать в программе.

Возможно, для I2S найдется смысл его использовать.
Go to the top of the page
 
+Quote Post
Tahoe
сообщение Jan 14 2013, 09:05
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 459
Регистрация: 30-03-06
Из: Москва
Пользователь №: 15 600



Цитата(ViKo @ Jan 14 2013, 12:30) *
Смысл BSY - показать, что автомат последовательной пересылки работает. Смысл его использовать... нет, не вижу. sm.gif
Потому что флаги, показывающие, что буферы передачи и приема не свободны, логичнее использовать в программе.

Так вот как раз для управления SS, интересует именно состояние автомата, а не буферов. wink.gif
Другой вопрос, что BSY, который как раз и должен показывать состояние автомата, работает как-то не так.

Собственно, чего гадать-то, когда есть мануал:
Цитата(Handling data transmission and reception)
For some configurations, the BSY flag can be used during the last data transfer to wait until the completion of the transfer.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jan 15 2013, 12:57
Сообщение #5


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(Tahoe @ Jan 14 2013, 12:05) *
Так вот как раз для управления SS, интересует именно состояние автомата, а не буферов. wink.gif
Другой вопрос, что BSY, который как раз и должен показывать состояние автомата, работает как-то не так.

Я проделал примерно те же эксперименты, что показывал АНТОХА, только на живом SPI устройстве M25PE40, MCU STM32F207. Код следующий. Конец Chip Select перенес до последнего чтения из DR. Первая закомментированная строка (проверка TXE) никогда не используется, осталась от прошлого. А использовалась проверка RXNE или проверка BSY. Скорость тоже выбиралась из двух вариантов: самая медленная (60 MHz / 256) и максимально допустимая (60 MHz / 4 = 15 MHz).
Код
uint32_t SFMID_read(void) {
  SMSS_ON();
  uint32_t id = 0;
  SPI1->DR = SFM_RDID;            // послать команду "RDID"
  while (!(SPI1->SR & SPI_SR_TXE));    // ждать освобождение передатчика
  SPI1->DR = SFM_DUMMY;            // послать пустой байт
  while (!(SPI1->SR & SPI_SR_RXNE));    // ждать байт в приемнике
  id = SPI1->DR;                // High Impedance
  while (!(SPI1->SR & SPI_SR_TXE));    // ждать освобождение передатчика
  SPI1->DR = SFM_DUMMY;            // послать пустой байт
  while (!(SPI1->SR & SPI_SR_RXNE));    // ждать байт в приемнике
  id = SPI1->DR << 16;                // Manufacturer
  while (!(SPI1->SR & SPI_SR_TXE));    // ждать освобождение передатчика
  SPI1->DR = SFM_DUMMY;            // послать пустой байт
  while (!(SPI1->SR & SPI_SR_RXNE));    // ждать байт в приемнике  
  id |= SPI1->DR << 8;                // Memory type
  // while (!(SPI1->SR & SPI_SR_TXE));    // ждать освобождение передатчика  
  // while (!(SPI1->SR & SPI_SR_RXNE));    // ждать байт в приемнике
  while (SPI1->SR & SPI_SR_BSY);    // ждать, если SPI занят
  SMSS_OFF();
  id |= SPI1->DR;                // Memory capacity
  // while (SPI1->SR & SPI_SR_BSY);    // ждать, если SPI занят
//  SMSS_OFF();
  // Test = id;
  return id;
}

Выводы у меня следующие.
Во всех 4-х случаях работоспособность сохраняется, идентификатор памяти читается правильно. Даже если тактовый сигнал продолжается после окончания сигнала выбора в случае малой скорости.
Проверки флагов RXNE и BSY совпадают по времени с точностью, с какой мог видеть осциллограмму.
На первой картинке - малая скорость, проверка RXNE. На второй картинке - большая скорость, проверка BSY. Есть и остальные варианты.
Прикрепленное изображение
Прикрепленное изображение

Коль уж такое окончание выбора нормально работает, то конец выбора после чтения никаких проблем не создаст.
Упрямцы могут продолжать твердить свое, но уже без моего участия.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Jan 15 2013, 13:57
Сообщение #6


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

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



Цитата(ViKo @ Jan 15 2013, 18:57) *
Коль уж такое окончание выбора нормально работает, то конец выбора после чтения никаких проблем не создаст.

Здесь необходимо одно существенное уточнение: работает с конкретным экземпляром конкретной микросхемы памяти. Что совершенно не означает, что это будет работать всегда и со всеми микросхемами.
С другой стороны, имеющийся у меня негативный опыт неопровержимо доказывает, что с таким подходом могут быть проблемы.
Цитата(ViKo @ Jan 15 2013, 18:57) *
Упрямцы могут продолжать твердить свое, но уже без моего участия.

Ну наконец-то вы перестанете смущать неокрепшие умы начинающих читателей.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jan 15 2013, 16:18
Сообщение #7


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(AHTOXA @ Jan 15 2013, 16:57) *
С другой стороны, имеющийся у меня негативный опыт неопровержимо доказывает, что с таким подходом могут быть проблемы.

Надо, все-таки, добавить ремарку. Может ваш негативный опыт обусловлен кривизной даташита? Помните про количество тактов 15 или 16?
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
- - AHTOXA   Цитата(sidy @ Dec 19 2012, 21:35) Привожу...   Dec 19 2012, 17:36
|- - sidy   Цитата(AHTOXA @ Dec 19 2012, 21:36) Хорош...   Dec 20 2012, 04:08
|- - AHTOXA   А чему равно Rx_Data? Как настроен SPI, какие прер...   Dec 20 2012, 04:28
|- - sidy   Цитата(AHTOXA @ Dec 20 2012, 08:28) А чем...   Dec 20 2012, 04:51
- - 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
|- - AHTOXA   Так как раз его вариант и не раскрывает "сакр...   Jan 14 2013, 07:36
|- - HHIMERA   Приведённый вами код, как частный случай, ни о чём...   Jan 15 2013, 13:41
|- - HHIMERA   Цитата(AHTOXA @ Jan 15 2013, 16:57) С дру...   Jan 15 2013, 14:17
|- - 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 Текстовая версия Сейчас: 23rd July 2025 - 21:20
Рейтинг@Mail.ru


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