2017-02-28 5 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

この質問はレビューキューにある場合sprintfを使用しています。おそらくカーネルのバージョンを述べるべきです。 – jww

+0

Linux-3.4.67バージョン。 – 7758521

答えて

0

あなたの質問はあまり明確ではありません。しかし、LinuxのOSでのI2C通信のために、Interfacing_with_I2C_Devices

  • このリンクを参照してくださいUMAP_DEVNAME_I2C自体の定義では、あなたのデバイスパスを使用してください。すなわち、#define UMAP_DEVNAME_I2C "/dev/your_i2c_device"
  • それともカント編集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.私はユーザー空間でi2cのデバイスを制御したいと思います。 i2cの問題に関する詳細情報を提供できますか?私は初心者です。 – 7758521

+0

@ 7758521更新された回答を確認してください – jjb

+0

ええ、それは働いて、thx、[Interfacing_with_I2C_Devices](http://elinux.org/Interfacing_with_I2C_Devices) – 7758521