25. Lektion: I2CAus Attraktor WikiVersion vom 11. Dezember 2023, 15:48 Uhr von Kapest (Diskussion | Beiträge) InhaltsverzeichnisDas ProtokollDas I2C Manual kann von hier heruntergeladen werden. Der Bus
Die DatenübertragungDie Übertragung erfolgt in Dateneinheiten. Eine Dateneinheit besteht aus 8 Datenbits und einem ACK-Bit. Dabei wird zuerst das MSB (most significant bit) also Bit 7 übertragen.
I2C Objekt erzeugenWie alles in Micropython ist auch I2C als Klasse implementiert. Deshalb muß für jeden I2C Bus eine Instanz erzeugt werden.
Hardware I2CDer Raspberry Pi Pico W enthält 2 Hardware I2C Einheiten (0 und 1). Die default Einstellungen findet man folgendermassen: from machine import I2C print(I2C(0)) print(I2C(1)) I2C(0, freq=399361, scl=5, sda=4, timeout=50000) I2C(1, freq=399361, scl=7, sda=6, timeout=50000) Nun soll eine I2C Instanz erzeugt werden. Dabei können die Defaultwerte oder andere zulässige Werte benutzt werden. from machine import Pin, I2C i2c = I2C(0) # default assignment i2c = I2C(1, scl=Pin(3), sda=Pin(2), freq=400_000) Mit dem so erzeugten I2C-Objekt können wir außer einem Busscan noch nicht viel anfangen. i2c.scan() # scan for peripherals, returning a list of 7-bit addresses i2c.writeto(42, b'123') # write 3 bytes to peripheral with 7-bit address 42 i2c.readfrom(42, 4) # read 4 bytes from peripheral with 7-bit address 42 i2c.readfrom_mem(42, 8, 3) # read 3 bytes from memory of peripheral 42, # starting at memory-address 8 in the peripheral i2c.writeto_mem(42, 2, b'\x10') # write 1 byte to memory of peripheral 42 # starting at address 2 in the peripheral I2C Objekt benutzenSSD1306 Display mit I2C benutzen
Das SSD1306 IC |