I2C 사용 예


슬레이브로 데이터 쓰기

다음은 PHPoC가 I2C 슬레이브로 데이터를 쓰는 일반적인 예 입니다.

쓰기 요청 예

<?php
$wbuf = 0x7A;   
$pid = pid_open("/mmap/i2c0");      // I2C 열기
pid_ioctl($pid, "set mode fm");     // 고속모드 설정
pid_ioctl($pid, "set saddr ee");    // 슬레이브 디바이스 주소 설정: 0xEE
pid_write($pid, $wbuf, 1);          // 버퍼에 1바이트 넣기: 0x7A
pid_ioctl($pid, "req write");       // 쓰기 요청
while(pid_ioctl($pid, "get txlen")) // 송신 데이터 확인
    ;
pid_close($pid);
?>

쓰기 요청 대기 및 수행 예

<?php
$pid = pid_open("/mmap/i2c0");          // I2C 열기
pid_ioctl($pid, "set mode fm");         // 고속모드 설정
pid_ioctl($pid, "set saddr ee");        // 슬레이브 디바이스 주소 설정: 0xEE
pid_ioctl($pid, "req write wait");      // 쓰기 요청 및 종료 대기
pid_write($pid, 0x7A, 1);               // 1바이트 송신: 0x7A
pid_write($pid, 0x8A, 1);               // 1바이트 송신: 0x8A
pid_write($pid, 0x9A, 1);               // 1바이트 송신: 0x9A
while(pid_ioctl($pid, "get txlen"))     // 송신 데이터 확인
    ;
pid_ioctl($pid, "req stop");            // 쓰기 종료 요청
pid_close($pid);
?>

슬레이브로부터 데이터 읽기

다음은 PHPoC가 I2C 슬레이브의 데이터를 읽는 일반적인 예 입니다.

읽기 요청 예

<?php
$rbuf = ""; 
$pid = pid_open("/mmap/i2c0");          // I2C 열기
pid_ioctl($pid, "set mode fm");         // 고속모드 설정
pid_ioctl($pid, "set saddr ee");        // 슬레이브 디바이스 주소 설정: 0xEE
pid_ioctl($pid, "req read 2");          // 2바이트 읽기 요청
while(pid_ioctl($pid, "get rxlen") < 2) // 수신 데이터 확인
    ;
pid_read($pid, $rbuf);                  // 버퍼의 데이터 읽기
pid_close($pid);
?>