Перейти к содержанию
    

STM32F091 - SPI

Добрый вечер

 

В силу разных причин мне нужно менять на ноге 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 таким путем - загадка :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

В глубине души мне кажется, что это более правильный подход.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

В глубине души мне кажется, что это более правильный подход.

нуу... не согласен

Функция пина - это функция ПИНА, она никак не связана с внутренней периферией.

Не настроил пин - не получил нужный выход (или вход)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

нуу... не согласен

Функция пина - это функция ПИНА, она никак не связана с внутренней периферией.

Не настроил пин - не получил нужный выход (или вход)

Ну так собственно и получилось у вас - не настроил пин SCLK - не получил данные с MISO.

SPI он такой: нет клока - нет мультиков данных со входа.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

с реальной линии, с её индуктивно-ёмкостными свойствами

хмм.. возможно. Но плату переделывать :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

хмм.. возможно. Но плату переделывать :(

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Во всех инкарнациях

С одним проще - это LED, можно на пару мс и отремапить, на втором висит внешнее прерывание акселерометра

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

С одним проще - это LED, можно на пару мс и отремапить, на втором висит внешнее прерывание акселерометра

Нет, под ремапом я имел в виду alternate function - перенесение SPI_SCK на другой пин.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Наверно если вы опишите что вам надо вас лучше поймут.

 

NSS я никогда не использовал, всегда управлял как GPIO.

SPI вы как мастер используете или слейв?

Мне кажется как мастер. Вам нужно только выдать данные или нужно и принять тоже?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет, под ремапом я имел в виду alternate function - перенесение SPI_SCK на другой пин.

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

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

 

Мне кажется как мастер. Вам нужно только выдать данные или нужно и принять тоже?

конечно, принять тоже. MISO и MOSI физически соединены. Пока одну дорожку от SCK оторвал

вообще интересно получается

в свойствах пина задал Open-Drain, но все равно SPI фигачит и в ту, и в другую сторону (к слову о настройках ПИНОВ, а не интерфейсов)

приходится включать/отключать SPI_CR1_RXONLY, тогда работает как надо

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

конечно, принять тоже. MISO и MOSI физически соединены. Пока одну дорожку от SCK оторвал

В STM32 контроллер SPI вроде позволяет полудуплексом через одну ногу MISO работать. По-крайней мере в F4xx. Или в младших собратьях это не так?

Вы вроде вон ноги экономите (SCLK не вывели), можно было бы на MOSI вполне сэкономить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В STM32 контроллер SPI вроде позволяет полудуплексом через одну ногу MISO работать. По-крайней мере в F4xx. Или в младших собратьях это не так?

Вы вроде вон ноги экономите (SCLK не вывели), можно было бы на MOSI вполне сэкономить.

Да, склинило на NXP

Век живи - век учись

Но там дуплекса-то и нет, выставил "0", и жди, что свалится

Да и MOSI - это не SCK,

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...