J'utilise un SSD1306 OLED et j'ai une question à ce sujet.Écrire des données à SSD1306 via I2C
Lors de l'écriture de données dans son tampon via I2C, certaines bibliothèques écrivent 16 octets à chaque fois.
Par exemple:
void SSD1306::sendFramebuffer(const uint8_t *buffer) {
// Set Column Address (0x00 - 0x7F)
sendCommand(SSD1306_COLUMNADDR);
sendCommand(0x00);
sendCommand(0x7F);
// Set Page Address (0x00 - 0x07)
sendCommand(SSD1306_PAGEADDR);
sendCommand(0x00);
sendCommand(0x07);
for (uint16_t i = 0;i < SSD1306_BUFFERSIZE;) {
i2c.start();
i2c.write(0x40);
for (uint8_t j = 0;j < 16; ++j, ++i) {
i2c.write(buffer[i]);
}
i2c.stop();
}
}
Pourquoi ne pas écrire 1024 octets directement?
Ce n'est pas un problème matériel. Certaines bibliothèques (Arduino) I²C stockent simplement les données que vous leur fournissez jusqu'à la fin de la transmission. Pour éviter une utilisation excessive du tampon, il peut être judicieux d'envoyer des fragments plus petits. – JimmyB
mmmmar, Merci d'avoir accepté ma réponse. Si vous appuyez sur la flèche vers le haut pour l'afficher également, votre action facilitera la recherche de cette réponse. – TomServo