2017-02-28 7 views
0

내 보드에 일부 레지스터를 설정하는 I2C 장치가 있습니다.커널 드라이버 i2c Develop

g_I2cDevFd = open("/dev/" UMAP_DEVNAME_I2C, O_RDWR, 0); 
if (g_I2cDevFd < 0) 
{ 
    HI_FATAL_I2C("open I2C err.\n"); 
    HI_I2C_UNLOCK(); 
    return HI_ERR_I2C_OPEN_ERR; 
} 

어떻게하면됩니까?

최고 감사합니다.

+2

이 질문은 검토 대기열에 있습니다. 커널 버전을 언급해야합니다. – jww

+0

Linux-3.4.67 버전. – 7758521

답변

0

귀하의 질문에 많은 부분이 분명하지 않습니다. 그러나 리눅스 O를의 I2C 통신을 위해,이 링크를 참조하시기 바랍니다 Interfacing_with_I2C_Devices

  • UMAP_DEVNAME_I2C 자체를 정의에 장치 경로를 사용하십시오. 즉, #define UMAP_DEVNAME_I2C "/dev/your_i2c_device"
  • 아니면 편집 UMAP_DEVNAME_I2C 즉 캔트 경우 ​​sprintf를 사용

    char buff[100] = {0}; // size you can change according to your requirement 
    
    sprintf(buff,"/dev/%s",UMAP_DEVNAME_I2C); 
    g_I2cDevFd = open(buff, O_RDWR, 0); 
    /* Error check for open here*/ 
    
    int addr = 0xFF;   // 0xFF is Invalid, Give I2C address of your device 
    if (ioctl(g_I2cDevFd, I2C_SLAVE, addr) < 0) { 
        printf("Failed to acquire bus access and/or talk to slave.\n"); 
        /* ERROR HANDLING; you can check errno to see what went wrong */ 
        exit(1); 
    } 
    
    /* Write or Read*/ 
    
+0

감사합니다. 사용자 공간에서 i2c의 장치를 제어하고 싶습니다. i2c 문제에 대한 자세한 정보를 제공 할 수 있습니까? 나는 초보자이다. – 7758521

+0

@ 7758521 업데이트 된 답변 확인 – jjb

+0

예, 작동했습니다, thx, [Interfacing_with_I2C_Devices] (http://elinux.org/Interfacing_with_I2C_Devices) – 7758521