[RPI] Использование SPI из Python на Raspberry Pi
Posted: 26-Feb-2014, 17:54
Hi.
Для включение аппаратного интерфейса SPI нужно в файле /etc/modprobe.d/raspi-blacklist.conf закомментировать строку "blacklist spi-bcm2708" и перезагрузить Pi. Для того, что бы убедиться, что SPI включен можно запустить листинг директории /dev:
Расположение сигналов SPI на разъеме GPIO:
Для проверки корректности работы SPI нужно замкнуть между собой MOSI и MISO и выполнить следующие команды:
Правильный результат выполнения должен быть таким:
Python модуль для работы с SPI можно взять здесь. Установка модуля выполняется следующим образом:
Основные функции модуля py-spidev.
•SpiDev([bus],[client]). Return a new SPI object that is (optionally) connected to the specified SPI device interface.
•open(bus, device). Connects the object to the specified SPI device. open(X,Y) will open /dev/spidev-X.Y
•xfer2([values]). Perform SPI transaction. CS will be held active between blocks.
•close(). Disconnects the object from the interface.
Пример работы с SPI из Python:
Для включение аппаратного интерфейса SPI нужно в файле /etc/modprobe.d/raspi-blacklist.conf закомментировать строку "blacklist spi-bcm2708" и перезагрузить Pi. Для того, что бы убедиться, что SPI включен можно запустить листинг директории /dev:
Расположение сигналов SPI на разъеме GPIO:
Для проверки корректности работы SPI нужно замкнуть между собой MOSI и MISO и выполнить следующие команды:
Code: Select all
$ wget https://raw2.github.com/torvalds/linux/master/Documentation/spi/spidev_test.c
$ gcc spidev_test.c
$ sudo ./a.out -D /dev/spidev0.0
Python модуль для работы с SPI можно взять здесь. Установка модуля выполняется следующим образом:
Code: Select all
$ git clone https://github.com/doceme/py-spidev
$ cd py-spidev/
$ sudo python setup.py install
•SpiDev([bus],[client]). Return a new SPI object that is (optionally) connected to the specified SPI device interface.
•open(bus, device). Connects the object to the specified SPI device. open(X,Y) will open /dev/spidev-X.Y
•xfer2([values]). Perform SPI transaction. CS will be held active between blocks.
•close(). Disconnects the object from the interface.
Пример работы с SPI из Python:
Code: Select all
nrf = spidev.SpiDev(0, 0)
nrf.xfer2([0x1, 0x8])
nrf.close()