Adafruit Feather 32u4 BLE совместим с программным SPI?

Позвольте мне в предисловии сказать, что у меня нет большого опыта работы с электроникой. У меня есть Adafruit Feather 32u4, который использует аппаратный SPI для связи через Bluetooth. К сожалению, я также надеюсь использовать библиотеку SD, которая также использует аппаратный SPI. Я надеюсь заменить плату на использование программного SPI, чтобы они могли работать вместе.

В коде Bluefruit по умолчанию закомментировано следующее:

/* ...программный SPI, используя определяемые пользователем контакты SPI SCK/MOSI/MISO, а затем выбранные пользователем CS/IRQ/RST */
Adafruit_BluefruitLE_SPI ble(BLUEFRUIT_SPI_SCK, BLUEFRUIT_SPI_MISO,
                             BLUEFRUIT_SPI_MOSI, BLUEFRUIT_SPI_CS,
                             BLUEFRUIT_SPI_IRQ, BLUEFRUIT_SPI_RST);

Это наводит меня на мысль, что я мог бы использовать SW SPI, но просто раскомментировать это и закомментировать HW SPI, похоже, не работает.

Я просто не уверен, не совместимо ли это с платой, или мне нужно сделать что-то большее...?

, 👍2

Обсуждение

SPI — это автобус. вы можете подключить больше устройств, используя только другой контакт CS. некоторые модули SD создают проблемы на шине. модуль Adafruit SD в порядке, @Juraj

мой комментарий относится к аппаратному SPI. два разных SW SPI или SW SPI с hw SPI не могут работать вместе на одних и тех же контактах, @Juraj


1 ответ


2

Прочитайте руководство SparkFun, последовательный периферийный интерфейс (SPI), особенно несколько подчиненных устройств раздел:


Несколько подчиненных устройств

Существует два способа подключения нескольких ведомых устройств к шине SPI:

  1. Как правило, каждому подчиненному устройству потребуется отдельная линия SS. Чтобы поговорить с конкретным подчиненным, вы установите линию SS этого подчиненного на низкий уровень и сохраните остальные высокие (вы не хотите, чтобы два подчиненных устройства активировались одновременно время, или они оба могут попытаться поговорить по одной и той же линии MISO, что приведет к искаженные данные). Для большого количества рабов потребуется множество линий SS; если вы на выходе мало, есть чипы двоичного декодера, которые могут умножьте свои результаты SS.

  1. С другой стороны, некоторые части предпочитают быть последовательно соединены друг с другом, при этом MISO (выход) одной передается на MOSI (вход) другой. В этом случае ко всем ведомым устройствам идет одна линия SS. Как только все данные отправляются, линия SS поднимается, что приводит к тому, что все чипы активированы одновременно. Это часто используется для последовательной смены. регистры и драйверы адресных светодиодов.

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

Этот тип макета обычно используется только в ситуациях вывода, например в качестве управляющих светодиодов, когда вам не нужно получать какие-либо данные обратно. В в этих случаях вы можете оставить линию MISO ведущего устройства отключенной. Однако, если данные необходимо вернуть мастеру, вы можете сделать это путем замыкания шлейфового шлейфа (синий провод на схеме выше). Обратите внимание, что в этом случае возвращаемые данные от ведомого устройства 1 должны будут быть пройти через всех рабов, прежде чем вернуться к хозяину, так что будьте Обязательно отправьте достаточное количество команд приема, чтобы получить необходимые вам данные.

,