Добавить более 2 SPI рабов

12

Что я вижу на схеме, есть два канала для рабов - CS0 и CS1. Означает ли это, что я могу подключить только 2 чипа, как MCP3008 или что-то? Или я могу прикрепить больше рабов к этим двум прикрепленным рабам.

Имеет ли схема Raspberry поддержку или что-то общее с этой схемой подключения SPI-рабов, взятой из Википедии? Можно ли сделать так?

SPI рабов

Сергей Башаров
источник
"Можно ли сделать так?" -> Мне кажется, что это именно так, за исключением того, что Pi имеет CE0 и CE1 вместо SS1, SS2, SS3. Шинные линии SCLK, MOSI и MISO совместно используются всеми устройствами в обоих случаях.
Златовласка

Ответы:

12

Много способов.

Вы можете сортировать биты, выбранные ведомым, то есть подключать все устройства с общим MISO / MOSI / SCLK и заземлением, но с отдельным CS. Просто установите низкий уровень CS для устройства, которое вы хотите, прежде чем вызывать драйвер SPI. Драйвер SPI попытается установить CS, но не будет знать, что он не подключен.

У Pis с 40-контактным разъемом расширения есть еще одно SPI-устройство с 3-мя чипами. Моя библиотека pigpio поддерживает это устройство.

Вы можете программно поразить весь протокол.

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

И т. Д.

ИЗМЕНЕНО ДЛЯ ДОБАВЛЕНИЯ

«Надлежащий» драйвер SPI Raspberry Pi Linux в настоящее время проходит проверку, чтобы разрешить использование произвольных gpi в качестве CS.

Отредактировано ДОБАВИТЬ 2

Говорят, что текущий драйвер SPI для Linux (spi_bcm2853) поддерживает произвольный GPIO при выборе микросхемы. Смотрите / boot / overlays / README.

Джоан
источник
1
«Разрешить произвольные gpi» - хорошая идея сама по себе и то, что можно ожидать от встроенной системы. Спасибо за вклад.
Ганима
Джоан, пожалуйста, объясни, как использовать «другое устройство SPI с 3-мя чипами» с библиотекой «pigpio», или ссылку на пример кода. Это поможет ответить на вопрос. Спасибо
Алекс
См. Abyz.co.uk/rpi/pigpio/cif.html#spiOpen . GPIO 16-21 подключены к вспомогательному SPI. См. Abyz.co.uk/rpi/pigpio/index.html#Type_3 . В качестве альтернативы говорят, что текущий текущий драйвер SPI для Linux (spi_bcm2853) поддерживает произвольный GPIO при выборе микросхемы. Смотрите / boot / overlays / README.
Джоан
«У Pis с 40-контактным разъемом расширения есть еще одно SPI-устройство с 3-
1
@meh На 40-контактном разъеме расширения есть 5 чипов. Два для основного SPI и 3 для вспомогательного SPI. Вспомогательные сигналы SPI показаны в нижнем регистре на abyz.co.uk/rpi/pigpio/index.html#Type_3
joan
3

Вы правы в том, что RaspberryPi обеспечивает только два чипа на своей шине SPI (см. Здесь ). И я предполагаю, что драйверы SPI и программные решения основаны на этом факте (хотя ответ @ joan предполагает, что разные библиотеки обрабатывают его по-разному, и официальный драйвер позволит использовать произвольные выводы GPIO в качестве элементов выбора микросхем в будущем).

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

Поскольку вся идея выбора микросхем заключается в взаимном исключительном выборе только одного ведомого, вы также можете использовать несколько простых цифровых схем для уменьшения количества «потраченных» выводов GPIO (если они вам нужны и для других целей). Что-то вроде 74HC / HCT138 декодера / демультиплексора с 3 по 8 линиями можно использовать для адресации 8 подчиненных устройств через 8 микросхем выбора всего с 3 выводами GPIO.

Следует иметь в виду, что шины SCLK и MOSI являются общими для всех рабов. Таким образом, при подключении нескольких подчиненных к Pi убедитесь, что разгрузка Pi не превышает нагрузку (сопротивление и емкость входных контактов подчиненных) - хотя сегодня это мало проблем с низкой емкостью и высокое сопротивление цифровых входов.

Ганима
источник
1

Существует на самом деле очень хороший ответ на это инженером RPI, Phile, на малиновой форуме, см 28 сентября 2015 . По сути, он приводит пример наложения дерева устройств, в котором с помощью spi-bcm2835 можно использовать любые свободные GPIO в качестве выбора микросхемы.

Александр
источник