2017-02-28 1 views
0

Sur mon tableau, j'ai un périphérique I2C qui définit un certain registre.Pilote du noyau i2c Développer

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; 
} 

Comment puis-je faire cela?

Meilleures salutations

+2

Cette question est dans une revue de file d'attente. Vous devriez probablement indiquer la version du noyau. – jww

+0

Version Linux-3.4.67. – 7758521

Répondre

0

Votre question n'est pas clair beaucoup. Mais pour la communication I2C dans Linux, S'il vous plaît consulter ce lien Interfacing_with_I2C_Devices

  • S'il vous plaît utiliser votre chemin de l'appareil en lui-même définir UMAP_DEVNAME_I2C. à savoir, #define UMAP_DEVNAME_I2C "/dev/your_i2c_device"
  • Ou utilisez sprintf si vous ne pouvez pas modifier UMAP_DEVNAME_I2C-à-dire,

    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

merci U.Je veux contrôler l'appareil de i2c dans l'espace utilisateur. Pouvez-vous fournir plus d'informations sur le problème i2c. je suis un novice. – 7758521

+0

@ 7758521 vérifier la réponse mise à jour – jjb

+0

oui, cela a fonctionné, thx, se référer le lien [Interfacing_with_I2C_Devices] (http://elinux.org/Interfacing_with_I2C_Devices) – 7758521