[Raspi] I2C 통신
I2C (I square C)
2개의 라인만 사용하여 많은 디바이스를 제어할 수 있는 양방향 직렬버스 방식
– SCL : Serial Clock Line
– SDA : Serial Data Line

SDA(High > Low) & SLC 신호 High 일 때 START
SDA(Low > High) & SCL 신호 High 일 때 STOP


※ 기본 함수 설명
1. 1비트 전송
write_quick(addr): read 비트 또는 write 비트를 송신
2. read 함수
read_byte(addr)
– 레지스터 지정 없이 1바이트 읽어오기
read_byte_data(addr, cmd)
– 지정한 레지스터에서 1바이트 읽어오기
read_word_data(addr, cmd)
– 지정한 레지스터에서 16비트(문자 데이터) 읽어오기
read_block_data(addr, cmd)
– 지정한 레지스터에서 최대 32바이트의 블록데이터 읽어오기
3. write 함수
* read함수와 동일 / 전송하는 함수
4. I2C 접근 함수 (i2c_block_data)
데이터의 크기 제한 없이 송수신이 가능하다.
read_i2c_block_data(addr, cmd)
– 지정한 레지스터에서 크기제한이 없는 하나의 블록데이터 읽어오기
write_i2c_block_data(addr, cmd, vals[])
– 지정한 레지스테에서 크기제한이 없는 하나의 블록데이터 송신하기