I2C EEPROM Programmierung mit Aardvark und Batch Mode
Das Programmieren und Lesen von I2C-Speichergeräten ist ein häufiger Anwendungsfall für den Aardvark I2C / SPI Host-Adapter. Es gibt mehrere Möglichkeiten, dies mit dem Aardvark-Adapter zu tun, einschließlich der Verwendung des Control Centers, Flash Centers oder der Aardvark-API. Dieser Artikel konzentriert sich darauf, wie Sie die Informationen in ein EEPROM-Datenblatt übernehmen können und wie die Befehle im Batch-Modus der Steuerzentrale auszuführen sind.
Obwohl die folgenden Schritte für das I2C-EEPROM AT24C02 auf dem I2C / SPI Activity Board beschrieben wird, können ähnliche Schritte für andere Geräte verwendet werden. Das Ziel dieses Artikels besteht darin, zu demonstrieren, wie Sie mehrere Bytes an eine bestimmte Adresse schreiben können und wie Sie diese Bytes dann auslesen können.
Der Aardvark-Adapter der I2C-Master und das Atmel I2C-EEPROM AT24C02 auf dem I2C / SPI-Activity Board ist der I2C-Slave.
AT24C02 Detailed
Die Leitungen der SCL (Serial Clock Input) und der SDA (Serial Data) vom AT24C02-EEPROM entsprechend mit den SCL- und SDA-Leitungen dem Aardvark verbunden. Die AT24C02 Pins A0 - A2 (Adresseingabe), WP (Schreibschutz) und GND (Masse) sind mit Masse verbunden. Der AT24C02-VCC-Pin (Netzteil) wird an 3,3 V angeschlossen.
Das I2C-EEPROM „AT24C02“ auf der Activity-Karte hat eine hardwaremäßig konfigurierbare I2C-Zieladresse. Die Standard-I2C-Zieladresse ist 1010000b, also 0x50. Dieser Artikel verwendet die Standard-I2C-Zieladresse 0x50. Weitere Informationen finden Sie im Knowledge Base-Artikel 7-Bit-, 8-Bit- und 10-Bit-I2C-Slave-Adressierung.
Das AT24C02-EEPROM auf dem I2C/SPI-Aktivitätsboard erhält die I2C-Pull-Ups und die Stromversorgung von der Promira-Plattform. Um die I2C-Pull-Ups und die Zielleistung an das Activity-Board zu liefern, werden die Promira-Plattform und das Control Center Serial mit dem Batch-Befehl "configure" zum I2C / SPI-Modus konfiguriert (i2c ="1" spi ="1" gpio) ="0"), I2C Pull-Ups aktiviert (Pullups ="1") und Zielleistung aktiviert (tpower ="1").
Die hier verwendete Schreiboperation für den AT24C02 ist Page Write. Die Page-Write-Operation für den AT24C02 erfordert eine 7-Bit-Geräteadresse, eine Byte-Speicheradresse und zwei oder mehr Byte an Speicherdaten. Das Ausführen einer „Memory Write“ Operation mit der Promira-Plattform erfordert einen einzelnen Befehl des Adapters und des Control Centers Serial. In diesem Fall wird das Batch-Modus-Beispiel "i2c-eeprom-write" des Control Center verwendet, um 256 "i2c_write" -Befehle der Daten 0x00 - 0xFF an die Speicheradressen 0x00 bis 0xFF mit der I2C-Geräteadresse 0x50 auszuführen. Sehen Sie sich zum Beispiel die ersten und letzten i2c_write-Befehle an.
<i2c_write addr="0x50" count="2" radix="16">00 00</i2c_write>
<i2c_write addr="0x50" count="2" radix="16">FF FF</i2c_write>
Der erste Befehl enthält die Geräteadresse (addr ="0x50"), die Anzahl der Datenbytes (count ="2"), das Datenformat (radix ="16"), die Speicheradresse (0x00) und die Speicherdaten (0x00).
Während der letzte "i2c_write" -Befehl die I2C-Geräteadresse (addr ="0x50"), die Anzahl der Datenbytes (count ="2"), das Datenformat (radix ="16"), die Speicheradresse (0xFF) und die Speicherdaten enthält (0xFF).
Die hier verwendete AT240C-Leseoperation ist das sequentielle Lesen. Die sequentielle AT240C-Leseoperation führt zuerst den I2C-Schreibvorgang mit einer 7-Bit-Geräteadresse ohne Stopp aus. Dann führt die sequentielle AT240C-Leseoperation „I2C-Lesen“ mit einer 7-Bit-Geräteadresse, zwei oder mehr Bytes von Speicherdaten durch und stoppt. Das Ausführen einer Speicherleseoperation mit der Promira-Plattform erfordert zwei Befehle aus dem Batch-Modus des Adapters und des Control Center Serial. In diesem Fall wird das Batch-Modus-Beispiel "i2c-eeprom-read" des Control Center verwendet, um 256 Byte von Adresse 00 mit der I2C-Geräteadresse 0x50 zu lesen. In diesem Artikel enthält die Speicherleseoperation die folgenden zwei Batch-Modus-Befehle Aardvark-Adapter und Control Center Serial:
<i2c_write addr="0x50" count="1" radix="16" nostop="1">00</i2c_write>
<i2c_read addr="0x50" count="256"/>
Der erste Befehl ist "i2c_write" mit der I2C-Geräteadresse (addr ="0x50"), Anzahl der Datenbytes (count ="1"), Datenformat (radix ="16"), Speicheradresse (0x00), mit keinen stopps (nostop ="1"). Dieser Schreibbefehl dient zum Konfigurieren des internen Datenwortadressenzählers auf eine bestimmte Adresse (0x00).
Der zweite Befehl lautet "i2c_read" und enthält die I2C-Geräteadresse (addr ="0x50") und die Anzahl der Datenbytes (count ="256"). Dieser Lesebefehl dient zum Lesen der Daten ab Adresse 0x00.
Weitere Informationen finden Sie im AT24C02 Datenblatt.