Soporte I2C Master: Clase I2C
Ejemplo lectura y escritura de una memoria tipo 24C04:
import pyb print("Test I2C with AT24C04") i2c = pyb.I2C(100000) #100Khz i2c.slave_addr(0x50) def writeByte(addr,value): data = bytearray() data.append(addr) data.append(value) i2c.write(data) def readBytes(addr,size): data = bytearray() data.append(addr) i2c.write(data) return i2c.read(size) writeByte(0x00,11) pyb.delay(10) writeByte(0x01,22) pyb.delay(10) writeByte(0x02,33) pyb.delay(10) data = readBytes(0x00,16) print("[0]:"+str(data[0])) print("[1]:"+str(data[1])) print("[2]:"+str(data[2]))
El constructor de la clase I2C recibe como argumento la velocidad (100Khz o 400Khz) expresada en Hz: Luego de crear el objeto i2c, se ejecuta el método slave_addr mediante el cual se configura la dirección del dispositivo esclavo que se utilizará al leer y escribir datos por el bus. Puede cambiarse en cualquier momento.
Se podrá leer y escribir datos mediante el método write, el cual recibe un bytearray y el método read el cual recibe como argumento la cantidad de bytes a leer y devuelve un array de bytes con los datos leídos.
En el ejemplo se escriben dos funciones, para poder escribir un byte en la memoria y luego poder leer una cierta cantidad de bytes, siempre indicando la dirección.