[code]from microbit import * FRAM_ID = 0x9f FRAM_WREN = 0x06 FRAM_WRITE = 0x02 FRAM_READ = 0x03 class FRAM: def __init__(self, spi, pin): self.spi = spi self.pin = pin def fram_id(self): self.pin.write_digital(0) # CS fram self.spi.write(bytearray([FRAM_ID])) chip_id = self.spi.read(4) self.pin.write_digital(1) # remove fram CS return chip_id def fram_wren(self): self.pin.write_digital(0) # CS fram self.spi.write(bytearray([FRAM_WREN])) self.pin.write_digital(1) # remove fram CS def fram_read(self, address, byte_count=1): addr = bytearray(3) addr = address.to_bytes(3, "big") self.pin.write_digital(0) # CS fram self.spi.write(bytearray([FRAM_READ])) self.spi.write(bytearray([addr[0]])) self.spi.write(bytearray([addr[1]])) self.spi.write(bytearray([addr[2]])) read_list = self.spi.read(byte_count) self.pin.write_digital(1) # remove fram CS return read_list def fram_write(self, address, value): addr = bytearray(3) addr = address.to_bytes(3, "big") self.pin.write_digital(0) # CS fram self.spi.write(bytearray([FRAM_WRITE])) self.spi.write(bytearray([addr[0]])) self.spi.write(bytearray([addr[1]])) self.spi.write(bytearray([addr[2]])) self.spi.write(bytearray([value])) self.pin.write_digital(1) # remove fram CS[/code]