bus I2C soucis de lecture
Affichage des résultats 1 à 4 sur 4

bus I2C soucis de lecture



Mode arborescent

  1. #4
    invited2746380

    Re : bus I2C soucis de lecture

    je travail sur un backfin maitre et mon circuit de capture video esclave, concernant les pull up ou down je pense en fait quils sont sur mon circuit blackfin, puisqu il a ete concu pour ca (i2c).
    je vous envoi le code correspondant à la lecture puis ecriture:

    int i2c_write_register(char * device, unsigned char client, unsigned char reg, unsigned short value)
    {
    int addr = I2C_SLAVE_ADDR;
    char msg_data[32];
    struct i2c_msg msg = { addr, 0, 0, msg_data };
    struct i2c_rdwr_ioctl_data rdwr = { &msg, 1 };

    int fd,i;

    if ( (fd = open( device, O_RDWR ) ) < 0 ) {
    fprintf(stderr, "Error: could not open %s\n", device);
    exit( 1 );
    }

    if ( ioctl( fd, I2C_SLAVE, addr ) < 0 ) {
    fprintf(stderr, "Error: could not bind address %x \n", addr );
    }

    msg.len = 3;
    msg.flags = 0;
    msg_data[0] = reg;
    msg_data[2] = (0xFF & value);
    msg_data[1] = (value >> 8);
    msg.addr = client;

    if ( ioctl( fd, I2C_RDWR, &rdwr ) < 0 ) {
    fprintf(stderr, "Error: could not write \n");
    }

    close( fd );
    return 0;
    }

    int i2c_read_register(char * device, unsigned char client, unsigned char reg)
    {
    int addr = I2C_SLAVE_ADDR;
    char msg_data[32];
    //char msg_data[24];
    struct i2c_msg msg = { addr, 0, 0, msg_data };

    struct i2c_rdwr_ioctl_data rdwr = { &msg, 1 };

    int fd,i;

    if ( (fd = open( device, O_RDWR ) ) < 0 ) {
    fprintf(stderr, "Error: could not open %s\n", device);
    exit( 1 );
    }

    if ( ioctl( fd, I2C_SLAVE, addr ) < 0 ) {
    fprintf(stderr, "Error: could not bind address %x \n", addr );
    }
    // msg_data[2]= reg;
    msg_data[0]= reg;
    msg.addr = client;
    msg.len = 1;
    msg.flags = 0;

    if ( ioctl( fd, I2C_RDWR, &rdwr ) < 0 ) {
    fprintf(stderr, "Error: could not write \n");
    };

    msg.len = 2;
    // msg_data[0]=0;
    // msg_data[1]=0;
    msg.flags = I2C_M_RD ;

    if ( ioctl( fd, I2C_RDWR, &rdwr ) < 0 ) {
    fprintf(stderr, "Error: could not read back\n");
    close( fd );
    return -1;
    }

    close( fd );
    return (((unsigned char)msg_data[0])<<8 | ((unsigned char)msg_data[1]) );
    //return (((unsigned char)msg_data[0])<<8 | ((unsigned char)msg_data[1]) );



    la distance de mon bus est tres courte je pense pas que rajouter des res de pull up down soit necessaire, j vais quand meme m assurer qu elles soient presente sur le blackfin..

    merci pour vos reponses....

  2. A voir en vidéo sur Futura

Discussions similaires

  1. Espionner le bus I2C
    Par invite9ad09538 dans le forum Électronique
    Réponses: 12
    Dernier message: 20/05/2011, 17h48
  2. bus I2C
    Par inviteedcf41c6 dans le forum Électronique
    Réponses: 2
    Dernier message: 29/06/2008, 23h28
  3. Electronique : bus I2C
    Par invite6e39a71f dans le forum TPE / TIPE et autres travaux
    Réponses: 0
    Dernier message: 10/10/2007, 10h37
  4. Bus I2C
    Par invitead790ea1 dans le forum Électronique
    Réponses: 15
    Dernier message: 15/04/2007, 10h58
  5. Bus I2c
    Par invite66afc259 dans le forum Électronique
    Réponses: 6
    Dernier message: 30/10/2005, 13h53
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...