SPI 사용 예


슬레이브로 데이터 송신

다음은 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);
?>