toweroff 0 29 декабря, 2016 Опубликовано 29 декабря, 2016 · Жалоба Добрый вечер В силу разных причин мне нужно менять на ноге 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 таким путем - загадка :( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gerber 7 29 декабря, 2016 Опубликовано 29 декабря, 2016 · Жалоба Тут дело даже не в SPI, а в устройстве I/O порта у STM-ок. Input path забирается прямо с физической ноги контроллера. В глубине души мне кажется, что это более правильный подход. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
toweroff 0 29 декабря, 2016 Опубликовано 29 декабря, 2016 · Жалоба Тут дело даже не в SPI, а в устройстве I/O порта у STM-ок. Input path забирается прямо с физической ноги контроллера. В глубине души мне кажется, что это более правильный подход. нуу... не согласен Функция пина - это функция ПИНА, она никак не связана с внутренней периферией. Не настроил пин - не получил нужный выход (или вход) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gerber 7 29 декабря, 2016 Опубликовано 29 декабря, 2016 · Жалоба нуу... не согласен Функция пина - это функция ПИНА, она никак не связана с внутренней периферией. Не настроил пин - не получил нужный выход (или вход) Ну так собственно и получилось у вас - не настроил пин SCLK - не получил данные с MISO. SPI он такой: нет клока - нет мультиков данных со входа. И тот факт, что сдвиговый регистр защелкивает данные по клоку с реальной линии, с её индуктивно-ёмкостными свойствами, а не со своего внутреннего клока - это только плюс. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
toweroff 0 29 декабря, 2016 Опубликовано 29 декабря, 2016 · Жалоба с реальной линии, с её индуктивно-ёмкостными свойствами хмм.. возможно. Но плату переделывать :( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gerber 7 29 декабря, 2016 Опубликовано 29 декабря, 2016 · Жалоба хмм.. возможно. Но плату переделывать :( Что мешает включить SCLK, оставив реальный пин неподключенным? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
toweroff 0 29 декабря, 2016 Опубликовано 29 декабря, 2016 · Жалоба Что мешает включить SCLK, оставив реальный пин неподключенным? Соответственно, SCLK и NSS в этом не участвуют, они задействованы как GPIO Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gerber 7 29 декабря, 2016 Опубликовано 29 декабря, 2016 · Жалоба Может быть ... ремап? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
toweroff 0 30 декабря, 2016 Опубликовано 30 декабря, 2016 · Жалоба Может быть ... ремап? Соответственно, SCLK и NSS в этом не участвуют, они задействованы как GPIO Во всех инкарнациях С одним проще - это LED, можно на пару мс и отремапить, на втором висит внешнее прерывание акселерометра Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gerber 7 30 декабря, 2016 Опубликовано 30 декабря, 2016 · Жалоба С одним проще - это LED, можно на пару мс и отремапить, на втором висит внешнее прерывание акселерометра Нет, под ремапом я имел в виду alternate function - перенесение SPI_SCK на другой пин. Я не знаю, какой у вас именно корпус, и какой номер SPI, но, судя по общему даташиту, к примеру, SPI1_SCK может торчать и через PA5, и через PE13, и через PB3. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
uriy 4 30 декабря, 2016 Опубликовано 30 декабря, 2016 · Жалоба а что побудило пойти ST таким путем - загадкаОткуда же разработчикам чипа было знать что вы используете SPI без SCLK? Наверно если вы опишите что вам надо вас лучше поймут. NSS я никогда не использовал, всегда управлял как GPIO. SPI вы как мастер используете или слейв? Мне кажется как мастер. Вам нужно только выдать данные или нужно и принять тоже? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
toweroff 0 30 декабря, 2016 Опубликовано 30 декабря, 2016 · Жалоба Нет, под ремапом я имел в виду alternate function - перенесение SPI_SCK на другой пин. Я не знаю, какой у вас именно корпус, и какой номер SPI, но, судя по общему даташиту, к примеру, SPI1_SCK может торчать и через PA5, и через PE13, и через PB3. а я про что говорил? Мне кажется как мастер. Вам нужно только выдать данные или нужно и принять тоже? конечно, принять тоже. MISO и MOSI физически соединены. Пока одну дорожку от SCK оторвал вообще интересно получается в свойствах пина задал Open-Drain, но все равно SPI фигачит и в ту, и в другую сторону (к слову о настройках ПИНОВ, а не интерфейсов) приходится включать/отключать SPI_CR1_RXONLY, тогда работает как надо Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 172 30 декабря, 2016 Опубликовано 30 декабря, 2016 · Жалоба конечно, принять тоже. MISO и MOSI физически соединены. Пока одну дорожку от SCK оторвал В STM32 контроллер SPI вроде позволяет полудуплексом через одну ногу MISO работать. По-крайней мере в F4xx. Или в младших собратьях это не так? Вы вроде вон ноги экономите (SCLK не вывели), можно было бы на MOSI вполне сэкономить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
toweroff 0 30 декабря, 2016 Опубликовано 30 декабря, 2016 · Жалоба В STM32 контроллер SPI вроде позволяет полудуплексом через одну ногу MISO работать. По-крайней мере в F4xx. Или в младших собратьях это не так? Вы вроде вон ноги экономите (SCLK не вывели), можно было бы на MOSI вполне сэкономить. Да, склинило на NXP Век живи - век учись Но там дуплекса-то и нет, выставил "0", и жди, что свалится Да и MOSI - это не SCK, Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться