Использование SPI в режиме рабов

Стивестронг
Вт 02 февраля 2016 г. 13:22
Всем привет,
Я просто хотел узнать, протестировал ли кто -то уже SPI в режиме рабов, и я заинтересован в фрагменте подержанного кода, если таковой имеется.
В настоящее время я работаю над проектом, который включает в себя передачу данных между двумя Maple Minis по SPI в 16 -битном режиме, один - Master, другой - Slave, также включающий доступ DMA от SPI RX к RAM.
Я попытался реализовать некоторые основные функции для настройки SPI в режиме рабов, аналогично процедурам мастер -инициализации SPI, но, похоже, не работает.
Я вижу часы, данные и NSS, правильно выходящие из Мастера, но трубка DMA на подчиненном устройстве вообще не уволена, я не знаю, получает ли SPI данные или нет.
Любой рабочий пример может мне очень помочь.
Спасибо.
Стив

Mrburnette
Вт 02 февраля 2016 г. 13:43
@Стив,

В Форум в прошлом году о SPI Select, Но я не мог найти ничего о SPI Slave-Mode на нашем форуме. Я нашел эту статью на старом форуме Leaflabs:

Краткое содержание .... До того, как я проверяю, где кажется, что SPI Maple in Slave Mode просто не обращает внимания на строку Slave Select. Мой анализатор логики Selae показывает хорошие четкие данные, идущие в клен на всех правильных булавках. Для тестирования я использую Arduino 2009 в качестве мастера SPI для генерации данных и замедляю их, пытаясь найти то, что идет не так.
Луча

Rogerclark
Вт, 02 февраля 2016 г., 8:36 вечера
Суммировать материал NSS.

Реализация STMS внутри STM32 того, что делает NSS, очень странная.
Он не работает так, как большинство людей ожидают, что линия Slave Select будет работать с точки зрения управления внешними устройствами SPI.
На собственном форуме STMS много сообщений об этом, в основном жаловавшись, это не работает.

Итак, для SPI Master мы отказались от использования аппаратного выбора подчиненного подчинения (NSS).


Также. Как Рэй уже сказал... Я не помню, чтобы кто -то пытался выполнить функциональность SPI подчинкой раньше, с STM32 Libmaple Core I.e Что мы используем.

Стивестронг
Вт, 02 февраля 2016 г., 21:18
Хорошо, кажется, я как бы пионер, верно?
Надеюсь, я смогу в одиночку, просто это займет некоторое время.

Стивестронг
Ср. 03 февраля 2016 г., 10:25
Удалось уволить DMA Spi Rx.
DMA-Access должен был быть включен до того, как будет включена периферия SPI, что не совместимо с фактическим "spi_reconfigure ()"...
Пока что только 0xffffs сохранился, но я все еще работаю над этим.

Rogerclark
Ср. 03 февраля 2016 г., 19:41
Спасибо за обновление

Стивестронг
Пт, 05 февраля 2016 г. 13:50
ОБНОВЛЯТЬ
Похоже, проблема была где -то еще, а не в связи с данными SPI, которая работает, как и ожидалось!
SPI -раб, кажется, работает в 16 -битном режиме данных.
Придется подумать о наиболее удобном изменении, чтобы зарегистрироваться в репо, мое фактическое быстрое решение может не понравиться всем :)

Rogerclark
Пт. 05 февраля 2016 г., 8:05 вечера
Спасибо, Стив

Если у вас нет времени, чтобы написать красивое чистое решение...

Даже ваше прототипное решение может быть полезным для любого, кто нуждается в этом.

Это не нужно входить в репо, фрагмент кода здесь был бы лучше, чем ничего

Спасибо

Роджер

Стивестронг
Пт. 05 февраля 2016 г., 11:01 вечера
Дело в том, что мне пришлось написать новые функции для настройки рабов в SPI.c, хотя настройки прямых регистрации могли быть использованы в файле ino.
В любом случае, я хотел, чтобы это было чисто в формате совместимого с репо.
На следующей неделе я буду в отпуске, с завтрашнего дня, продолжится, когда я вернусь.
Ваше здоровье,
Стив

Rogerclark
Сб 06 февраля 2016 г. 1:14
Спасибо, Стив

Я ценю настроение. Я часто пишу вещи, которые я рад использовать для собственного тестирования, но не буду публиковать, поскольку это не аккуратное или оптимизированное ;-)

Ваше здоровье

Роджер

Werecatf
Ср 27 апреля 2016 г. 10:39
Я просто думал, есть ли здесь какие-нибудь примеры о том, как использовать STM32F1 в качестве SPI-Slave, Stevestestong еще не очистил свой код? Я хотел бы посмотреть, как это делается.

Стивестронг
Чт 5 мая 2016 г., 19:24
Хорошо, вот они, мастер и пример раба.

Гевард
Ср 22 июня 2016 г., 7:55 утра
Спасибо, что поделились кодами.
Я получил ошибку о SPI.Begintransactionslave, требование компилятора не является членом «класса Spiclass».
Вы используете стандартную библиотеку STM32Duino SPI?

Стивестронг
Ср 22 июня 2016 г. 8:19
Вы используете стандартную библиотеку STM32Duino SPI? Да, но я думаю, что я не проверил свои локальные изменения.
Я должен отправить пиар в Роджере.

Rogerclark
Пн 21 ноября 2016 г., 3:22 утра
Я думаю, что SPI изменений PR все еще может быть рассмотрено, мне нужно будет посмотреть.

Из того, что я помню, SPI и USB были в одном PR, и я вручную объединил изменения USB, но я не могу вспомнить, изменил ли я SPI или нет.

Мне нужно проверить

Стивестронг
Пн 21 ноября 2016 г., 9:37 утра
Примеры должны работать с использованием мой репо, который содержит эти функции.
Я думаю, что эти изменения уже инициируются в PR, связанном с другой темой из -за моей некомпетентности, чтобы правильно обрабатывать PR на GitHub : oops:

синфинатический
Пн, 3 июля 2017 г. 3:25 утра
Любой шанс объединить эти изменения в Mainline GIT Repo?

Стивестронг
Вт, 04 июля 2017 г., 18:23
Изменения сейчас в главной отделке репо -главной ветви.

синфинатический
Ср. 5 июля 2017 г. 1:37
Спасибо!

Maplecoos ​​и U8G2Lib