2017-02-28 130 views
0

我的船上我有一個I2C器件,設置一些寄存器。內核驅動程序I2C開發

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的67年3月4日的版本。 – 7758521

回答

0

你的問題不是很清楚。但對於Linux操作系統I2C通信,請參考以下鏈接Interfacing_with_I2C_Devices

  • 在定義UMAP_DEVNAME_I2C本身請使用您的設備路徑。即,#define UMAP_DEVNAME_I2C "/dev/your_i2c_device"
  • 或者使用sprintf如果你不能編輯UMAP_DEVNAME_I2C

    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

感謝U.I要控制I2C的設備在用戶空間。你能提供關於i2c問題的更多信息嗎?我是一個新手。 – 7758521

+0

@ 7758521檢查更新的答案 – jjb

+0

是的,它的工作,thx,請參考鏈接[Interfacing_with_I2C_Devices](http://elinux.org/Interfacing_with_I2C_Devices) – 7758521