Device Driver
2011.01.04 13:42

I2C 디바이스 드라이버 응용 / TCN75

조회 수 37704 추천 수 0 댓글 2
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form

예제 (TCN75)

I2C 인터페이스인 TCN75 칩의 온도를 가져오기 위한 응용이다.

...
#define I2C_ADDR_TCN75 0x4f  // 하드웨어 설계에 따라 달라진다.
...

void tcn75_init(void)
{
    int fd;

    fd = open("/dev/i2c-0", O_RDWR); // mknod /dev/i2c-0 c 89 0
    if(fd < 0) {
        fprintf(stderr, "can't open /dev/i2c-0\n");
        exit(2);
    }

    ioctl(fd, I2C_SLAVE, I2C_ADDR_TCN75);

    unsigned char cmd, read_data[2];
    int read_value;
    cmd = 0x00; // TEMP
    write(fd, &cmd, 1); // Pointer Byte
    close(fd);
}

float tcn75_get_temperature(void)
{
    int fd;

    fd = open("/dev/i2c-0", O_RDWR);
    if(fd < 0) {
        fprintf(stderr, "can't open /dev/i2c-0\n");
        exit(2);
    }

    ioctl(fd, I2C_SLAVE, I2C_ADDR_TCN75);

    unsigned char read_data[2];
    int read_value;
    float temperature;
    read(fd, read_data, 2);
    read_value = (read_data[0]<<8) | read_data[1];
    read_value >>= 7;
    if(read_value > 256) read_value = read_value - 512;
    temperature = read_value / 2.0;
    close(fd);
    return temperature;
}


int main(int argc, char** argv)
{
    tcn75_init();
    while(1) {
        printf("temp = %f\n", tcn75_get_temperature());
        sleep(1);
    }
    return 0;
}
TAG •
  • ?
    BReNTT 2013.06.05 18:51
    공유해주신 소스 덕분에 1시간 걸릴 일 5분만에 처리했습니다.
    고맙습니다~!!
  • ?
    비트겐스 2013.07.17 17:38
    댓글을 이제야 봤네요.
    아~ 다행이네요 도움이 되셨다니요..

List of Articles
번호 카테고리 제목 글쓴이 날짜 조회 수
152 Network 로컬 네트워크에서 MAC 주소 알아보기 비트겐스 2011.02.18 29260
» Device Driver I2C 디바이스 드라이버 응용 / TCN75 2 비트겐스 2011.01.04 37704
150 Cpp Memory Areas and Using malloc() 비트겐스 2010.10.18 21524
149 Cpp unix timestamp to date & time string in c 비트겐스 2010.10.01 31387
148 Cpp CCITT CRC-16 2 비트겐스 2010.08.31 45872
Board Pagination Prev 1 ... 4 5 6 7 8 9 10 11 12 13 ... 39 Next
/ 39