글 수 90
2008.12.11 16:54:21 (*.138.143.22)
62543
1. 보드에서 i2c 드라이버의 Major, minor 번호를 찾습니다.
cat /proc/devices
2. nodefile 을 만듭니다.
mknod /dev/i2c-0 c Major minor
3. 프로그램을 작성합니다.
fd = open( "/dev/i2c-0", O_RDWR ); // 만들어진 노드파일을 엽니다.
4. 접근할 디바이스의 슬레이브주소를 설정합니다.
ioctl( fd, I2C_SLAVE, ADDR_MY_DEV );
5. write 할때
unsigned char buf[32];
buf[0] = 0x10; // 접근할 디바이스의 레지스터 주소
buf[1] = 0xaa; // 0x10 번지에 쓸 데이타
buf[2] = 0xbb; // 0x11 번지에 쓸 데이타
rtn = write( fd, buf, 3 ); // reg_addr + data + data 버퍼의 유효개수는 3개이다.
rtn 값으로 성공했는지 확인한다.
6. read 할때
unsigned char buf[32];
buf[0] = 0x10; // 접근할 디바이스의 레지스터 주소
rtn = write( fd, buf, 1 ); // 접근할 레지스터의 주소를 설정한다.
rtn 값으로 성공했는지 확인한다.
rtn = read( fd, buf, 2 ); // 2개의 데이타를 읽어온다.
rtn 값으로 성공했는지 확인한다.
cat /proc/devices
2. nodefile 을 만듭니다.
mknod /dev/i2c-0 c Major minor
3. 프로그램을 작성합니다.
fd = open( "/dev/i2c-0", O_RDWR ); // 만들어진 노드파일을 엽니다.
4. 접근할 디바이스의 슬레이브주소를 설정합니다.
ioctl( fd, I2C_SLAVE, ADDR_MY_DEV );
5. write 할때
unsigned char buf[32];
buf[0] = 0x10; // 접근할 디바이스의 레지스터 주소
buf[1] = 0xaa; // 0x10 번지에 쓸 데이타
buf[2] = 0xbb; // 0x11 번지에 쓸 데이타
rtn = write( fd, buf, 3 ); // reg_addr + data + data 버퍼의 유효개수는 3개이다.
rtn 값으로 성공했는지 확인한다.
6. read 할때
unsigned char buf[32];
buf[0] = 0x10; // 접근할 디바이스의 레지스터 주소
rtn = write( fd, buf, 1 ); // 접근할 레지스터의 주소를 설정한다.
rtn 값으로 성공했는지 확인한다.
rtn = read( fd, buf, 2 ); // 2개의 데이타를 읽어온다.
rtn 값으로 성공했는지 확인한다.