다음은 PHPoC가 SPI 슬레이브로 데이터를 송신하는 일반적인 예 입니다.
<?php
$wbuf = 0xA2; // 송신할 데이터
$rbuf = "";
$pid = pid_open("/mmap/spi0"); // SPI 열기
pid_ioctl($pid, "set mode 3"); // 모드 설정: 3
pid_ioctl($pid, "set lsb 0"); // 데이터 전송 순서 설정: MSB > LSB
pid_write($pid, $wbuf, 1); // 버퍼에 1바이트 넣기: 0xA2
pid_ioctl($pid, "req start"); // 전송 요청
while(pid_ioctl($pid, "get txlen")) // 송신 데이터 확인
;
pid_read($pid, $rbuf, 1); // 버퍼의 1바이트 데이터 읽기
pid_close($pid);
?>
위 예에서 마지막 줄에서 pid_read함수로 1바이트를 읽은 이유는 SPI의 데이터 송신과 수신이 항상 동시에 이루어지는 특징 때문입니다.
다음은 PHPoC가 SPI 슬레이브로부터 데이터를 수신하는 일반적인 예 입니다.
<?php
$wbuf = 0x00; // 송신 할 데이터
$rbuf = "";
$pid = pid_open("/mmap/spi0"); // SPI 열기
pid_ioctl($pid, "set mode 3"); // 모드 설정: 3
pid_ioctl($pid, "set lsb 0"); // 데이터 전송 순서 설정: MSB > LSB
pid_write($pid, $wbuf, 1); // 버퍼에 1바이트 넣기: 0x00
pid_ioctl($pid, "req start"); // 전송 요청
while(pid_ioctl($pid, "get txlen")) // 송신 데이터 확인
;
pid_read($pid, $rbuf, 1); // 버퍼의 1바이트 데이터 읽기
pid_close($pid);
?>