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

 
 
> STM32F4 продолжает подкидывать сюрпрайзы, SPI2 не ловит младший бит в байте
Dr.Alex
сообщение Feb 16 2015, 18:22
Сообщение #1


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

Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863



SPI2 настроен мастером, режим приём-передача (одновременно).
В большинстве случаев на приёме младший бит в байте оказывается нулём, хотя изредка читается правильно.

Ещё используются SPI4 и SPI6, передача на всех трёх без вопросов, приём на 4-ом тоже без проблем, 2-й вот почему-то глючит.

Мнения?
Go to the top of the page
 
+Quote Post
8 страниц V  < 1 2 3 4 > »   
Start new topic
Ответов (15 - 29)
ViKo
сообщение Feb 17 2015, 10:06
Сообщение #16


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

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



Цитата(Dr.Alex @ Feb 17 2015, 11:33) *
Ваще-то речь о приёме. Или вы имеете в виду, что поскоку приём это тоже передача (:-)) то вся эта фигня с проверкой BSY или TXE и здесь может нагадить?
Но ведь используется последняя либа от производителя....

Да... Вот так надо делать rolleyes.gif (на имя ANAS не обращайте внимания, это SPI)
Код
  ANSYN_ON();                // \__
  ANAS->DR = (uint8_t)(data >> 8);    // послать биты 15 - 8
  while (!(ANAS->SR & SPI_SR_TXE));    // ждать освобождение буфера
  ANAS->DR = (uint8_t)(data);        // послать биты 7 - 0
  while (!(ANAS->SR & SPI_SR_TXE));    // ждать освобождение буфера
  // while (!(ANAS->SR & SPI_SR_RXNE));    // ждать конец передачи - нельзя!
  while (ANAS->SR & SPI_SR_BSY);    // ждать освобождение приемопередатчика
  ANSYN_OFF();                //            __/
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Feb 17 2015, 10:31
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



младший бит принимается последним.
Разные SPI по разному формируют завершающий клок и чип селект, добавив данные которые с линии могут пропасть когда им угодно, так что последний бит особенно уязвим.

Потому надо действительно поглядеть осцилограмму сигнала, и проверить все задержки между клоком, чипселектом и изменением данных..
Go to the top of the page
 
+Quote Post
Porty
сообщение Feb 17 2015, 10:46
Сообщение #18


Местный
***

Группа: Свой
Сообщений: 246
Регистрация: 28-05-08
Из: г. Ижевск
Пользователь №: 37 893



Цитата(Dr.Alex @ Feb 17 2015, 12:19) *
Тогда будут ВСЕ биты нестабильны.

нет, сейчас почти вся цифра очень быстрая и фронты крутые, и редко когда клоки и данные стык в стык меняются. обычно одно относительно другого на 1-10нс сдвинуто ... но иногда с прогревом например сдвигается в обратную сторону - вот тут и вылазят глюки.
На моей практике всегда было иначе - что мегабайты успешно проходили и только пара бит проскакивала левых.

Поэтому советую проверить так - подключить 1к в разрыв клокам или данным, но не вместе - если глюков больше стало то скорее всего полярность клоков.
А так же затронуть пальцем - если повлияли наводки то наводится ложный клок - надо делать клоки круче или ставить фильтры на ложные клоки.
Go to the top of the page
 
+Quote Post
Dr.Alex
сообщение Feb 17 2015, 11:05
Сообщение #19


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

Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863



Посмотрел как в либе сделано, там конечно 130 строк кода на убогую процедуру передачи :-)))
но вроде бы действительно проверяется сначала TXE, а перед выключением ещё и BSY, то есть всё нормально.

Кому хочецо осцыллограмму, получайте.

Что мы тут видим:: вторым байтом идёт 0х85, но в DR в итоге принимается 0x84.
Напоминаю, это вообще-то приём.

Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 17 2015, 11:23
Сообщение #20


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

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



Может, неправильно задана частота периферийных шин микроконтроллера?
Go to the top of the page
 
+Quote Post
Dr.Alex
сообщение Feb 17 2015, 11:45
Сообщение #21


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

Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863



Цитата(ViKo @ Feb 17 2015, 15:23) *
Может, неправильно задана частота периферийных шин микроконтроллера?

А чё там может быть?
SYSCLK 84
HCLK 84
APB1 42
APB2 84

Ещё пример. Первый байт принимается как 0х83!! Второй как 0х4Е!! :-о

Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 17 2015, 11:58
Сообщение #22


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

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



А если порту, что такты выдает, добавить тока (частоты работы)? Или уменьшить? rolleyes.gif
Go to the top of the page
 
+Quote Post
Lerk
сообщение Feb 17 2015, 12:31
Сообщение #23


Местный
***

Группа: Свой
Сообщений: 339
Регистрация: 5-05-11
Пользователь №: 64 797



Почему у вас одна осциллограмма с 1мкс/квадрат, а другая 10мкс/квадрат? Это один и тот же SPI? И неплохо бы видеть еще и SS.

Ну и на первой осциллограмме у вас что-то странное с уровнями на линии данных.

Сообщение отредактировал Lerk - Feb 17 2015, 12:33
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 17 2015, 12:38
Сообщение #24


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

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



И, это... Peak Detect у вас включен в осциллографе? А BW Limit выключен? А с подключенным пробником лучше не становится? sm.gif
Go to the top of the page
 
+Quote Post
Dr.Alex
сообщение Feb 17 2015, 12:54
Сообщение #25


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

Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863



Цитата(ViKo @ Feb 17 2015, 15:58) *
А если порту, что такты выдает, добавить тока (частоты работы)? Или уменьшить? rolleyes.gif

В смысле скорость нарастания? Специально поставлена на минимум, чтобы звона и шума не было. Для эксперимента ставил на максимум - существенно ничего не меняется.

Цитата(Lerk @ Feb 17 2015, 16:31) *
Почему у вас одна осциллограмма с 1мкс/квадрат, а другая 10мкс/квадрат? Это один и тот же SPI? И неплохо бы видеть еще и SS.
Ну и на первой осциллограмме у вас что-то странное с уровнями на линии данных.

Потому что на разных скоростях пробовал. С НСС всё нормально.
Что не так с уровнями? Просто земля, куда щуп прицеплен, немного плавает.

Цитата(ViKo @ Feb 17 2015, 16:38) *
И, это... Peak Detect у вас включен в осциллографе? А BW Limit выключен? А с подключенным пробником лучше не становится? sm.gif

Никаких фокусов и полтергейста нет. Вот гладенькие фронты, если чё.

Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 17 2015, 12:56
Сообщение #26


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

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



Цитата(Dr.Alex @ Feb 17 2015, 15:54) *
Никаких фокусов и полтергейста нет. Вот гладенькие фронты, если чё.

Меньше 2V? А что так ма
Go to the top of the page
 
+Quote Post
Dr.Alex
сообщение Feb 17 2015, 13:00
Сообщение #27


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

Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863



Цитата(ViKo @ Feb 17 2015, 16:56) *
Меньше 2V? А что так ма


Куда же больше?? В конце 21-ого века живём, как-никак. Питание 1.8.
Go to the top of the page
 
+Quote Post
Lerk
сообщение Feb 17 2015, 13:00
Сообщение #28


Местный
***

Группа: Свой
Сообщений: 339
Регистрация: 5-05-11
Пользователь №: 64 797



Цитата(Dr.Alex @ Feb 17 2015, 15:54) *
Что не так с уровнями? Просто земля, куда щуп прицеплен, немного плавает.

у вас линия данных до начала передачи имеет землю - 0, а во время и после передачи - 0.2В. Не то чтобы сильно большая разница, и может даже не касается темы обсуждения, но в цифровых схемах такого просто так не бывает, и видимо, дизайном не предусмотрено, а значит должна быть найдена и устранена причина плавающего нуля на линии данных. имхо)

2ViKo, f4 же работает и на 1.8В
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 17 2015, 13:04
Сообщение #29


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

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



Цитата(Dr.Alex @ Feb 17 2015, 16:00) *
Куда же больше?? В конце 21-ого века живём, как-никак. Питание 1.8.

Понятно. Там для разного питания разную латентность Flash нужно задать. Надо думать, у вас все правильно задано?
Go to the top of the page
 
+Quote Post
Dr.Alex
сообщение Feb 17 2015, 13:08
Сообщение #30


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

Группа: Свой
Сообщений: 1 386
Регистрация: 5-04-05
Из: моська, RF
Пользователь №: 3 863



Цитата(ViKo @ Feb 17 2015, 17:04) *
Понятно. Там для разного питания разную латентность Flash нужно задать. Надо думать, у вас все правильно задано?


Стоит 5-ая. Это ещё с запасом. Только я вот думаю, она от частоты зависит (а частота ещё от напряжения ядра), а не от напряжения IO.
Go to the top of the page
 
+Quote Post

8 страниц V  < 1 2 3 4 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 15:02
Рейтинг@Mail.ru


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