Jak widzę na schemacie, istnieją dwa kanały dla slaveów - CS0 i CS1. Czy to oznacza, że mogę podłączyć tylko 2 układy scalone, takie jak MCP3008 lub coś takiego? Czy mogę dołączyć więcej niewolników do tych 2 dołączonych niewolników.
Czy schemat Raspberry ma wsparcie lub coś wspólnego z tym schematem połączeń slave SPI z Wikipedii? Czy można to tak zrobić?
Odpowiedzi:
Wiele sposobów.
Możesz w pewnym sensie wybić bit niewolnikiem, tzn. Połączyć wszystkie urządzenia ze wspólnym MISO / MOSI / SCLK i uziemieniem, ale osobnym CS. Przed wywołaniem sterownika SPI po prostu ustaw niski poziom CS dla wybranego urządzenia. Sterownik SPI spróbuje ustawić CS, ale nie będzie wiedział, że nie jest podłączony.
Pis z 40-pinowym nagłówkiem rozszerzeń ma inne urządzenie SPI z 3 układami do wyboru. Moja biblioteka pigpio obsługuje to urządzenie.
Możesz oprogramowanie bit bang cały protokół.
Możesz dodać dodatkowy sprzęt, aby przełączyć linię CS na dowolne urządzenie.
Itd itd.
EDYTOWANE, ABY DODAĆ
„Właściwy” sterownik SPI dla Raspberry Pi Linux przechodzi obecnie przegląd, aby umożliwić stosowanie dowolnych gpi jako CS.
EDYTOWANE DO DODANIA 2
Mówi się, że obecny sterownik SPI dla systemu Linux (spi_bcm2853) obsługuje dowolne GPIO podczas wybierania układów. Zobacz / boot / overlays / README.
źródło
Masz rację, że RaspberryPi zapewnia tylko dwa wybory chipów na swojej magistrali SPI (patrz tutaj ). Zakładam, że sterowniki SPI i rozwiązania programowe polegają na tym fakcie (chociaż odpowiedź @ joan sugeruje, że różne biblioteki traktują to inaczej, a oficjalny sterownik pozwoli na użycie dowolnych pinów GPIO jako wybierania układów w przyszłości).
Trzeba jednak pamiętać, że wybór układu to nic innego jak dedykowane wyjście cyfrowe Pi. Dlatego zawsze możesz mieć większą liczbę wyborów układów, jeśli używasz pinów GPIO. W takim przypadku jednak oprogramowanie będzie odpowiedzialne za ustawienie odpowiednich pinów w celu adresowania odpowiedniego urządzenia podrzędnego SPI.
Ponieważ cała idea wyboru układów polega na wzajemnym wybieraniu tylko jednego pojedynczego urządzenia podrzędnego, można ponadto użyć prostego obwodu cyfrowego, aby zmniejszyć liczbę „zmarnowanych” pinów GPIO (jeśli potrzebujesz ich również do innych celów). Coś w rodzaju 74HC / HCT138 dekoder / demultiplekser 3 do 8 linii może być wykorzystany do adresowania 8 urządzeń podrzędnych za pomocą 8 układów wyboru za pomocą zaledwie 3 pinów GPIO.
Warto pamiętać, że linie autobusowe SCLK i MOSI są wspólne dla wszystkich niewolników. Dlatego podczas podłączania wielu urządzeń podrzędnych do Pi należy upewnić się, że obciążenie wentylatora Pi nie zostanie przekroczone przez obciążenie (rezystancja i pojemność styków wejściowych urządzeń podrzędnych) - chociaż dzisiaj jest to mniejszy problem z niską pojemnością i wysoka rezystancja wejść cyfrowych.
źródło
Jest na to bardzo dobra odpowiedź inżyniera RPi, PhilE, na forum malinowym, patrz 28 września 2015 r . Zasadniczo podaje przykład nakładki Tree Device, która wykorzystuje możliwość spi-bcm2835, aby mieć dowolne wolne GPIO jako wybór chipa.
źródło