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

 
 
 
Reply to this topicStart new topic
> STM32F091 - SPI, не срабатывает RXNE
toweroff
сообщение Dec 29 2016, 15:50
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Добрый вечер

В силу разных причин мне нужно менять на ноге MOSI "0" и "1", и при этом видеть, что происходит на MISO
Соответственно, SCLK и NSS в этом не участвуют, они задействованы как GPIO

Первая грабля ударила по лбу, когда оказалось, что SPI определяет, что уже ктой-то "дернул" ногу NSS в "0" и сразу бит SPE сбрасывается и возводится MODF (fault)
Ну хорошо, выставил бит программного управления ногой NSS (бит SSM), теперь SPI engine не отключается

Поставил бит RXNEIE, пишу в регистр данных и жду, когда войду в прерывание по флагу непустой очереди RX... и могу ждать вечно, в регистре статуса RXNE не меняется

Что еще посмотреть?

Вот ведь зараза sad.gif

В общем так... SPI engine у STM32F0 тактируется от пина, а не внутри. В результате - если нет "дергания" пина (не настроен как альтернативная функция SCK) - нет и работы SPI
NXP такие штуки позволяла делать (по крайней мере с ARM7), тактируясь внутри кристалла, а что побудило пойти ST таким путем - загадка sad.gif
Go to the top of the page
 
+Quote Post
gerber
сообщение Dec 29 2016, 16:01
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 750
Регистрация: 1-11-11
Пользователь №: 68 088



Тут дело даже не в SPI, а в устройстве I/O порта у STM-ок. Input path забирается прямо с физической ноги контроллера.
В глубине души мне кажется, что это более правильный подход.


--------------------
"... часами я мог наблюдать, как люди работают." (М. Горький)
Go to the top of the page
 
+Quote Post
toweroff
сообщение Dec 29 2016, 16:21
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(gerber @ Dec 29 2016, 19:01) *
Тут дело даже не в SPI, а в устройстве I/O порта у STM-ок. Input path забирается прямо с физической ноги контроллера.
В глубине души мне кажется, что это более правильный подход.

нуу... не согласен
Функция пина - это функция ПИНА, она никак не связана с внутренней периферией.
Не настроил пин - не получил нужный выход (или вход)
Go to the top of the page
 
+Quote Post
gerber
сообщение Dec 29 2016, 17:04
Сообщение #4


Знающий
****

Группа: Участник
Сообщений: 750
Регистрация: 1-11-11
Пользователь №: 68 088



Цитата(toweroff @ Dec 29 2016, 19:21) *
нуу... не согласен
Функция пина - это функция ПИНА, она никак не связана с внутренней периферией.
Не настроил пин - не получил нужный выход (или вход)

Ну так собственно и получилось у вас - не настроил пин SCLK - не получил данные с MISO.
SPI он такой: нет клока - нет мультиков данных со входа.
И тот факт, что сдвиговый регистр защелкивает данные по клоку с реальной линии, с её индуктивно-ёмкостными свойствами, а не со своего внутреннего клока - это только плюс.


--------------------
"... часами я мог наблюдать, как люди работают." (М. Горький)
Go to the top of the page
 
+Quote Post
toweroff
сообщение Dec 29 2016, 17:17
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(gerber @ Dec 29 2016, 20:04) *
с реальной линии, с её индуктивно-ёмкостными свойствами

хмм.. возможно. Но плату переделывать sad.gif
Go to the top of the page
 
+Quote Post
gerber
сообщение Dec 29 2016, 18:53
Сообщение #6


Знающий
****

Группа: Участник
Сообщений: 750
Регистрация: 1-11-11
Пользователь №: 68 088



Цитата(toweroff @ Dec 29 2016, 20:17) *
хмм.. возможно. Но плату переделывать sad.gif

Что мешает включить SCLK, оставив реальный пин неподключенным?


--------------------
"... часами я мог наблюдать, как люди работают." (М. Горький)
Go to the top of the page
 
+Quote Post
toweroff
сообщение Dec 29 2016, 20:01
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(gerber @ Dec 29 2016, 21:53) *
Что мешает включить SCLK, оставив реальный пин неподключенным?

Цитата
Соответственно, SCLK и NSS в этом не участвуют, они задействованы как GPIO
Go to the top of the page
 
+Quote Post
gerber
сообщение Dec 29 2016, 22:16
Сообщение #8


Знающий
****

Группа: Участник
Сообщений: 750
Регистрация: 1-11-11
Пользователь №: 68 088



Может быть ... ремап?


--------------------
"... часами я мог наблюдать, как люди работают." (М. Горький)
Go to the top of the page
 
+Quote Post
toweroff
сообщение Dec 30 2016, 04:02
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(gerber @ Dec 30 2016, 01:16) *
Может быть ... ремап?

Цитата
Соответственно, SCLK и NSS в этом не участвуют, они задействованы как GPIO

Во всех инкарнациях
С одним проще - это LED, можно на пару мс и отремапить, на втором висит внешнее прерывание акселерометра
Go to the top of the page
 
+Quote Post
gerber
сообщение Dec 30 2016, 07:31
Сообщение #10


Знающий
****

Группа: Участник
Сообщений: 750
Регистрация: 1-11-11
Пользователь №: 68 088



Цитата(toweroff @ Dec 30 2016, 07:02) *
С одним проще - это LED, можно на пару мс и отремапить, на втором висит внешнее прерывание акселерометра

Нет, под ремапом я имел в виду alternate function - перенесение SPI_SCK на другой пин.
Я не знаю, какой у вас именно корпус, и какой номер SPI, но, судя по общему даташиту, к примеру, SPI1_SCK может торчать и через PA5, и через PE13, и через PB3.


--------------------
"... часами я мог наблюдать, как люди работают." (М. Горький)
Go to the top of the page
 
+Quote Post
uriy
сообщение Dec 30 2016, 08:44
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606



Цитата
а что побудило пойти ST таким путем - загадка
Откуда же разработчикам чипа было знать что вы используете SPI без SCLK?
Наверно если вы опишите что вам надо вас лучше поймут.

NSS я никогда не использовал, всегда управлял как GPIO.
SPI вы как мастер используете или слейв?
Мне кажется как мастер. Вам нужно только выдать данные или нужно и принять тоже?
Go to the top of the page
 
+Quote Post
toweroff
сообщение Dec 30 2016, 08:57
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(gerber @ Dec 30 2016, 10:31) *
Нет, под ремапом я имел в виду alternate function - перенесение SPI_SCK на другой пин.
Я не знаю, какой у вас именно корпус, и какой номер SPI, но, судя по общему даташиту, к примеру, SPI1_SCK может торчать и через PA5, и через PE13, и через PB3.

а я про что говорил?

Цитата(uriy @ Dec 30 2016, 11:44) *
Мне кажется как мастер. Вам нужно только выдать данные или нужно и принять тоже?

конечно, принять тоже. MISO и MOSI физически соединены. Пока одну дорожку от SCK оторвал
вообще интересно получается
в свойствах пина задал Open-Drain, но все равно SPI фигачит и в ту, и в другую сторону (к слову о настройках ПИНОВ, а не интерфейсов)
приходится включать/отключать SPI_CR1_RXONLY, тогда работает как надо
Go to the top of the page
 
+Quote Post
jcxz
сообщение Dec 30 2016, 13:09
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(toweroff @ Dec 30 2016, 11:57) *
конечно, принять тоже. MISO и MOSI физически соединены. Пока одну дорожку от SCK оторвал

В STM32 контроллер SPI вроде позволяет полудуплексом через одну ногу MISO работать. По-крайней мере в F4xx. Или в младших собратьях это не так?
Вы вроде вон ноги экономите (SCLK не вывели), можно было бы на MOSI вполне сэкономить.
Go to the top of the page
 
+Quote Post
toweroff
сообщение Dec 30 2016, 19:14
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(jcxz @ Dec 30 2016, 16:09) *
В STM32 контроллер SPI вроде позволяет полудуплексом через одну ногу MISO работать. По-крайней мере в F4xx. Или в младших собратьях это не так?
Вы вроде вон ноги экономите (SCLK не вывели), можно было бы на MOSI вполне сэкономить.

Да, склинило на NXP
Век живи - век учись
Но там дуплекса-то и нет, выставил "0", и жди, что свалится
Да и MOSI - это не SCK,
Go to the top of the page
 
+Quote Post

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

 


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


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