Mit Aardvark Host Adapter große Datentransaktionen senden
Kundenfrage
Wie kann ich mit dem Aardvark I2C / SPI Host Adapter große Datentransaktionen mit mehr als 64 kByte senden?
Für ein Kommunikationsszenario wird die Aardvark Software API für Datentransaktionen verwendet. Hier ist der Aufruf: aa_i2c_write (handle, deviceAddress, AA_I "C_NO_FLAGS, numbytes, pufferin).
Wenn nun numbytes = 300 definiert wird, gibt es eine Einschränkung beim Senden von Daten aufgrund der Puffergröße.
Antwort
Bei dem Aardvark-Host-Adapter beträgt die Größe des Pufferspeichers 64 Byte. Somit beträgt die maximale Slave-Antwort ebenfalls 64 Byte. Die Transaktionen können jedoch viel größer sein.
Die Größe der I2C- und SPI-Puffer betragen jeweils 16 kByte, sie können mehrere separate Transaktionen enthalten. Diese Puffer werden nur verwendet, wenn ein Aardvark-API-Aufruf involviert ist. Diese Puffergröße ist in diesem Fall für die Verwendung geeignet, da die Gesamtbeschränkung für asynchrone Nachrichten von der internen Puffergröße des Betriebssystems abhängt. Der Aardvark-Adapter kann Transaktionen von maximal 4 kByte zuverlässig als I2C/SPI-Master oder -Slave senden und empfangen. Dies ist auf Betriebssystemprobleme und auf die Vollduplex-Eigenschaften der SPI-Signalisierung zurückzuführen.
Bei der Konfiguration des Aardvark-Adapters für Master-Schreibvorgänge beträgt die maximale Nachrichtengröße, bei der Verwendung von 7-Bit-Adressierung, 64 kByte (65535) und bei der Verwendung von 10-Bit-Adressierung 64 kByte (65534). Dies stellt die maximale Datengröße einer Transaktion dar, wenn die Datengröße größer sein sollte, müssen mehrere separate Transaktionen erfolgen.
Weitere Informationen finden Sie in dem Artikel 7-Bit-, 8-Bit- und 10-Bit-I2C-Slave-Adressierung.
Beachten Sie bitte, dass die Anzahl der Bytes, die im API-Aufruf aa_i2c_write geschrieben werden können, 65535 beträgt.