SPI na Raspberry

Spora większość czujników obsługiwana jest przez transmisję szeregową SPI lub I2C, dlatego uznałem, że należałoby pokazać jak obsłużyć taką transmisję. Oczywiście ktoś już to zrobił i opisał, dlatego podam linki z których ja uczyłem się obsługi tych urządzeń. Najlepszą stroną jest:

https://projects.drogon.net/raspberry-pi/wiringpi/download-and-install/

Na tej stronie można pobrać kilka GIT'ów, dzięki którym łatwo skonfigurujecie transmisję szeregową i nie tylko. Opis obsługi SPI znajduje się w linku:

https://projects.drogon.net/understanding-spi-on-the-raspberry-pi/

Nasza rola ograniczy się do wpisania komendy:

gpio load spi

, która uaktywni nam transmisję SPI i stworzy pliki odpowiedzialne za komunikację (spidev0.0).

Jeśli chcemy, aby SPI było zawsze włączone przy starce systemu należy dodać 2 komendy w pliku /etc/rc.local

sudo modprobe spi_bcm2708
sudo modprobe spidev

Teraz możecie testować wasze SPI dalej.

Jeśli wszystko zostało prawidłowo włączone, to przy wywołaniu komendy "lsmod" powinny ukazać się nam aktywne moduły. Teraz trzeba przetestować transmisję. Na stronie http://armbedded.eu/node/318 i http://www.brianhensley.net/2012/07/getting-spi-working-on-raspberry-pi.html można znaleźć kod w języku C (spi_test.c), dzięki któremu przetestujemy naszą transmisję. Najprostszy sposób testowania, to zwarcie linii MOSI i MISO.

Podłączenie zaprezentowałem poniżej:

Opis transmisji SPI zaprezentowałem w tym artykule:

http://avrkwiat.nstrefa.pl/omnie/index.php?option=com_content&view=article&id=113&Itemid=133

Należy jednak pamiętać, że SPI w raspberry pi działa na napięciu 3,3V, dlatego standardowa Atmega16 odpada. Należałoby znaleźć Atmege16L, którą można zasilać 3,3V. W naszym przypadku nie musieliśmy podpinać CLK, ponieważ była to ta sama linia danych.