|
|
  |
STM32F091 - SPI, не срабатывает RXNE |
|
|
|
Dec 29 2016, 15:50
|

Гуру
     
Группа: Свой
Сообщений: 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 не меняется Что еще посмотреть? Вот ведь зараза  В общем так... SPI engine у STM32F0 тактируется от пина, а не внутри. В результате - если нет "дергания" пина (не настроен как альтернативная функция SCK) - нет и работы SPI NXP такие штуки позволяла делать (по крайней мере с ARM7), тактируясь внутри кристалла, а что побудило пойти ST таким путем - загадка
|
|
|
|
|
Dec 29 2016, 17:04
|
Знающий
   
Группа: Участник
Сообщений: 750
Регистрация: 1-11-11
Пользователь №: 68 088

|
Цитата(toweroff @ Dec 29 2016, 19:21)  нуу... не согласен Функция пина - это функция ПИНА, она никак не связана с внутренней периферией. Не настроил пин - не получил нужный выход (или вход) Ну так собственно и получилось у вас - не настроил пин SCLK - не получил данные с MISO. SPI он такой: нет клока - нет мультиков данных со входа. И тот факт, что сдвиговый регистр защелкивает данные по клоку с реальной линии, с её индуктивно-ёмкостными свойствами, а не со своего внутреннего клока - это только плюс.
--------------------
"... часами я мог наблюдать, как люди работают." (М. Горький)
|
|
|
|
|
Dec 29 2016, 18:53
|
Знающий
   
Группа: Участник
Сообщений: 750
Регистрация: 1-11-11
Пользователь №: 68 088

|
Цитата(toweroff @ Dec 29 2016, 20:17)  хмм.. возможно. Но плату переделывать  Что мешает включить SCLK, оставив реальный пин неподключенным?
--------------------
"... часами я мог наблюдать, как люди работают." (М. Горький)
|
|
|
|
|
Dec 30 2016, 04:02
|

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

|
Цитата(gerber @ Dec 30 2016, 01:16)  Может быть ... ремап? Цитата Соответственно, SCLK и NSS в этом не участвуют, они задействованы как GPIO Во всех инкарнациях С одним проще - это LED, можно на пару мс и отремапить, на втором висит внешнее прерывание акселерометра
|
|
|
|
|
Dec 30 2016, 07:31
|
Знающий
   
Группа: Участник
Сообщений: 750
Регистрация: 1-11-11
Пользователь №: 68 088

|
Цитата(toweroff @ Dec 30 2016, 07:02)  С одним проще - это LED, можно на пару мс и отремапить, на втором висит внешнее прерывание акселерометра Нет, под ремапом я имел в виду alternate function - перенесение SPI_SCK на другой пин. Я не знаю, какой у вас именно корпус, и какой номер SPI, но, судя по общему даташиту, к примеру, SPI1_SCK может торчать и через PA5, и через PE13, и через PB3.
--------------------
"... часами я мог наблюдать, как люди работают." (М. Горький)
|
|
|
|
|
Dec 30 2016, 08:44
|

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

|
Цитата а что побудило пойти ST таким путем - загадка Откуда же разработчикам чипа было знать что вы используете SPI без SCLK? Наверно если вы опишите что вам надо вас лучше поймут. NSS я никогда не использовал, всегда управлял как GPIO. SPI вы как мастер используете или слейв? Мне кажется как мастер. Вам нужно только выдать данные или нужно и принять тоже?
|
|
|
|
|
Dec 30 2016, 08:57
|

Гуру
     
Группа: Свой
Сообщений: 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, тогда работает как надо
|
|
|
|
|
Dec 30 2016, 19:14
|

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

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