Skip to content

embedded-php/ext-spi

Repository files navigation

SPI PHP Extension

The SPI PHP Extension provides an object-oriented wrapper to the spidev Linux Kernel driver that gives users the ability to write code that interacts with external hardware using the SPI protocol.

Requirements

  • PHP >= 8.0 (either NTS or ZTS version);

Note: if you are using this extension on Raspbian or Raspberry Pi OS, the user executing the script must belong to the spi group or you may run into "Permission denied" errors.

On Raspbian or Raspberry Pi OS:

PHP 8.0:

sudo apt install php8.0-cli php8.0-dev php8.0-phpdbg

PHP 8.1:

sudo apt install php8.1-cli php8.1-dev php8.1-phpdbg

Building

phpize
./configure
make
make test

SPI Modes

Mode Constant Description
00 SPI\MODE_0 Clock idle low, data valid at beginning of pulse (low to high)
01 SPI\MODE_1 Clock idle low, data valid at end of pulse (high to low)
10 SPI\MODE_2 Clock idle high, data valid at beginning of pulse (high to low)
11 SPI\MODE_3 Clock idle high, data valid at end of pulse (low to high)

Stubs

After changing any of the stubs, the main stub file must be updated by running the command below.

php stubs/update-main-stup.php

Once the stub is updated, the regular build process can be executed.

Note: The main stub file (phpspi.stub.php) is a generated file, edit the files on the stubs folder instead.

Constants

All namespace defined constants can be seen in the Constants.php stub.

Classes

Class Description
SPI\Bus Represents a SPI Bus.
SPI\Exception Base exception.

Resources

Alternatives

Other Languages

License

This library is licensed under the PHP License.