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

 
 
8 страниц V  « < 4 5 6 7 8 >  
Reply to this topicStart new topic
> STM32F4 продолжает подкидывать сюрпрайзы, SPI2 не ловит младший бит в байте
Golikov A.
сообщение Feb 18 2015, 16:59
Сообщение #76


Гуру
******

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



в F3 там еще после сдвигового регистра FIFO стоит, тут тоже может быть. И в этом фифо может быть какая-то беда...

А что будет если послать 4 байта, а потом 4 раза считать. в F3 фифо32 бита обещали...

и еще как-то надо исключить проблемы одного конкретного экземпляра
Go to the top of the page
 
+Quote Post
blackfin
сообщение Feb 18 2015, 17:01
Сообщение #77


Гуру
******

Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261



Цитата(ViKo @ Feb 18 2015, 19:46) *
Не могу такого представить. Там же сдвиговый регистр. Ни один бит не задерживается, все передвигаются, и не по кольцу. Значит, в сдвиговом регистре все биты верные, а при переносе в DR младший бит задерживается в неком промежуточном регистре?.

Я могу представить.. Слейв неверно определяет границы байта. Скорей всего сигнал "слейв селект" не синхронизирован с клоком и данными.. biggrin.gif
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 18 2015, 17:05
Сообщение #78


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

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



Но, тем не менее, исправно выдает в шину правильные бит за битом?
Go to the top of the page
 
+Quote Post
Dr.Alex
сообщение Feb 18 2015, 17:15
Сообщение #79


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

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



Цитата(blackfin @ Feb 18 2015, 21:01) *
Я могу представить.. Слейв неверно определяет границы байта. Скорей всего сигнал "слейв селект" не синхронизирован с клоком и данными.. biggrin.gif

Это шутко?

Цитата(ViKo @ Feb 18 2015, 21:05) *
Но, тем не менее, исправно выдает в шину правильные бит за битом?

С передачей проблем не замечено.
Go to the top of the page
 
+Quote Post
blackfin
сообщение Feb 18 2015, 17:22
Сообщение #80


Гуру
******

Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261



Цитата(Dr.Alex @ Feb 16 2015, 21:22) *
Ещё используются SPI4 и SPI6, передача на всех трёх без вопросов, приём на 4-ом тоже без проблем, 2-й вот почему-то глючит.

Цитата(ViKo @ Feb 18 2015, 20:05) *
Но, тем не менее, исправно выдает в шину правильные бит за битом?

Ну, может, не слейв, а FSM мастера SPI2. Либо из-за неверного сброса FSM, либо из-за того, что где-то нарушается времянка setup для первого клока, FSM пропускает первый бит и все последующие байты принимает со сдвигом на один бит. Возможно битый МК. Хорошо бы проверить на другой такой же плате.
Go to the top of the page
 
+Quote Post
Dr.Alex
сообщение Feb 18 2015, 17:28
Сообщение #81


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

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



Цитата(blackfin @ Feb 18 2015, 21:22) *
Ну, может, не слейв, а FSM мастера SPI2. Либо из-за неверного сброса FSM, либо из-за того, что где-то нарушается времянка setup

Паффторяю:: никакого слэйва вооообще нет и никогда не было. Не существует в природе. В принципе.
А сигнал на лапе MISO появляется случайно, за счёт возмущений в хаотичном движении электронов в проводе.
Если этот сигнал нарушает протокол SPI и какие-то сетап-холды, это должно быть видно из осциллограммы.
А если на осциллограмме всё ОК (как оно и есть), то поблагодарим послушные электроны и займёмсо делом.
Go to the top of the page
 
+Quote Post
blackfin
сообщение Feb 18 2015, 17:32
Сообщение #82


Гуру
******

Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261



Цитата(Dr.Alex @ Feb 18 2015, 20:28) *
А если на осциллограмме всё ОК (как оно и есть), то поблагодарим послушные электроны и займёмсо делом.

Есть вторая такая же плата, на которой можно было бы проверить обнаруженный эффект?
Go to the top of the page
 
+Quote Post
Dr.Alex
сообщение Feb 18 2015, 17:35
Сообщение #83


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

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



Цитата(blackfin @ Feb 18 2015, 21:32) *
Есть вторая такая же плата, на которой можно было бы проверить обнаруженный эффект?


Есть. Как только я налетел на проблему (ещё не понятую на тот момент), то видел её и на второй плате. Однако вся дальнейшая работа шла с одной платой.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 18 2015, 17:57
Сообщение #84


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

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



В сообщении №19 младший бит не берется из предыдущего байта.
Go to the top of the page
 
+Quote Post
blackfin
сообщение Feb 18 2015, 18:10
Сообщение #85


Гуру
******

Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261



Цитата(Dr.Alex @ Feb 18 2015, 20:35) *
Есть. Как только я налетел на проблему (ещё не понятую на тот момент), то видел её и на второй плате. Однако вся дальнейшая работа шла с одной платой.

Тогда присоединяюсь к мнению Porty из поста #18. Нужно попробовать задержать клок и данные друг относительно друга на несколько нс.
Еще хорошо бы сравнить длины проводников клока и данных с длинами проводников в тех портах, которые работают без ошибок, например, с SPI4.
То есть, если на SPI4 клок короче данных, то и на SPI2 данные нужно задержать. Для этого можно повесить на линию небольшую емкость.
Go to the top of the page
 
+Quote Post
Dr.Alex
сообщение Feb 18 2015, 18:16
Сообщение #86


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

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



Цитата(ViKo @ Feb 18 2015, 21:57) *
В сообщении №19 младший бит не берется из предыдущего байта.

Не может быть. В то время я просто не очень смотрел на предыдущий байт, поскоку ещё не понял в чём дело. При этом сам этот первый байт менялся. То есть, именно в тот раз наверняка действительно принялось 0x85, хотя я написал что якобы 0x84.


Цитата(blackfin @ Feb 18 2015, 22:10) *
Нужно попробовать задержать клок и данные друг относительно друга на несколько нс.
Еще хорошо бы сравнить длины проводников клока и данных с длинами проводников в тех портах, которые работают без ошибок, например, с SPI4.

Хосспади, ну какие наносекунды, когда там и так сдвиг на полтакта..
Все "участники рынка" выставляют данные по отрицательному фронту, а фиксируют по положительному.
Go to the top of the page
 
+Quote Post
blackfin
сообщение Feb 18 2015, 18:27
Сообщение #87


Гуру
******

Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261



Цитата(Dr.Alex @ Feb 18 2015, 21:16) *
Хосспади, ну какие наносекунды, когда там и так сдвиг на полтакта..
Все "участники рынка" выставляют данные по отрицательному фронту, а фиксируют по положительному.

Ну, сравнить-то длины проводников не трудно? SPI4 vs SPI2. А то, все ж уже заинтригованы.. biggrin.gif
Go to the top of the page
 
+Quote Post
Dr.Alex
сообщение Feb 18 2015, 18:32
Сообщение #88


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

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



Цитата(blackfin @ Feb 18 2015, 22:27) *
Ну, сравнить-то длины проводников не трудно? SPI4 vs SPI2. А то, все ж уже заинтригованы.. biggrin.gif


Не трудно, но вредно. Опять пойдёт трындёж о не имеющих отношения к делу сущностях.
Как вы не поймёте, что конечный итог всех этих измерений это осциллограмма.
А длины там 4 см максимум по качественной 6-слой плате....
Go to the top of the page
 
+Quote Post
blackfin
сообщение Feb 18 2015, 18:34
Сообщение #89


Гуру
******

Группа: Свой
Сообщений: 3 106
Регистрация: 18-04-05
Пользователь №: 4 261



Цитата(Dr.Alex @ Feb 18 2015, 21:32) *
А длины там 4 см максимум по качественной 6-слой плате....

OK. Нет вопросов..
Go to the top of the page
 
+Quote Post
ViKo
сообщение Feb 18 2015, 19:26
Сообщение #90


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

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



Код
  size--;
  SPI2->DR = *pTx++;
  while (size--) {
    while (!(SPI2->SR & SPI_SR_TXE));
    SPI2->DR = *pTx++;
    while (!(SPI2->SR & SPI_SR_RXNE));
    *pRx++ = SPI2->DR;
  }
  while (!(SPI2->SR & SPI_SR_RXNE));
  *pRx++ = SPI2->DR;
  while (SPI2->SR & SPI_SR_BSY);
Go to the top of the page
 
+Quote Post

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

 


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


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