I2C Eeprom 24NNxxx ------------------ Description Physique -------------------- +----+ +----+ A0--+1 +-+ 8+--VCC A1--+2 7+--WP A2--+3 6+--SCL GND--+4 5+--SDA +-----------+ Pins A0 à A2 : Adresse - GND & VCC : Alim SCL : Serial Clock I2C - SDA : Serial Data I2C WP : Protection en écriture si 1, Ecriture libre si O ou NC. Pour rappel, les pins SCL et SDA doivent-être tirées à VCC par une résistance de 2K2 à 10K Résumé du protocole I2C ----------------------- - Le bus est géré par le "maître", c'est lui qui génère le clock. - Bus libre : SDA=1 et SCL=1 - Start : SCL = 1 et SDA = ^ (0-1) - Stop : SCL = 1 et SDA = v (1-0) - La transmission commence par l'envoi de l'adresse, suivi de 1 ou plusieurs octets. Dans les cas des Eeprom I2C, ce sera une adresse de circuit (1 octet) suivi de l'adresse mémoire (2 octets), suivi du ou des datas. - Il existe un protocole d'acusé de réception (ACK) qui fonctionne de la manière suivante : Après l'envoi du 8ème bit de l'octet, le circuit émetteur libère la ligne SDA, ce qui permet au circuit récepteur de tirer cette ligne à la masse. Le récepteur doit ensuite libérer la ligne SDA, pour que l'émmeteur continue à envoyer des données. Adressage des circuits ---------------------- | b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 | +----+----+----+----+----+----+----+----+ | 1 | 0 | 1 | 0 | A2 | A1 | A0 | RW | - Possibilité de raccorder 8 circuits simultanément sur le bus. - Adresse de 160 à 175 ($A0 à $AF) - Adresses paires (RW=0) : Ecriture - Adresses impaires (RW=1) : Lecture Adressage mémoire ----------------- L'adressage mémoire se fait sur deux octets. L'adresse mémoire désigne un octet dans la mémoire. La valeur maximale de l'adressage dépend du circuit. Une Eeprom de 16K : 2047($07FF)(%0000 0111 1111 1111) Une Eeprom de 256K : 32767($7FFF)(%0111 1111 1111 1111) Ecriture -------- L'écriture dans l'Eeprom se fait en envoyant successivement : a - Bus en START Condition. b - Octet d'adressage pair (avec Bit0 à 0) du circuit. c - Octet de poids fort de l'adresse (sur 7 bits) de la mémoire le bit7 n'étant pas pris en compte. d - Octet de poids faible de l'adresse de la mémoire. e - Octets de datas (de 1 à 64). f - Bus en STOP condition. Ce n'est qu'à ce moment que le tampon est chargé dans la mémoire. Lecture ------- La lecture de l'Eeprom se fait de la manière suivante a - Bus en START Condition. b - Octet d'adressage pair (avec Bit0 à 0) du circuit. c - Octet de poids fort de l'adresse (sur 7 bits) de la mémoire le bit7 n'étant pas pris en compte. d - Octet de poids faible de l'adresse de la mémoire. e - Bus en START Condition. f - Octet d'adressage impair (avec Bit0 à 1). g - Octets de datas (de 1 à beucoup). h - Bus en STOP condition. Les étapes a à d peuvent-être omises. La lecture se fera alors sur l'adresse indiquée par le pointeur interne de l'Eeprom. Si lors de la lecture l'adresse du dernier octet de la mémoire est atteint, alors, le pointeur interne repasse à zéro et continue. Il est donc possible de lire toute la mémoire en une seule opération. Pour arrêter la transmission des valeurs il est obligatoire de générer une condition STOP.