mirror of
https://github.com/UberGuidoZ/Flipper.git
synced 2025-01-10 15:50:15 +00:00
49 lines
1.7 KiB
JavaScript
49 lines
1.7 KiB
JavaScript
|
// Connect an 24C32N EEPROM to the I2C bus of the board. SDA=pin 15, SCL=pin 16, VCC=pin 9, GND=pin 8.
|
||
|
let i2c = require("i2c");
|
||
|
|
||
|
function i2c_find_first_device() {
|
||
|
let addr = -1;
|
||
|
for (let try_addr = 0; try_addr !== 0xff; try_addr++) {
|
||
|
if (i2c.isDeviceReady(try_addr, 5)) {
|
||
|
addr = try_addr;
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
return addr;
|
||
|
}
|
||
|
|
||
|
let addr = i2c_find_first_device();
|
||
|
if (addr === -1) {
|
||
|
print("I2C device not found");
|
||
|
print("Please connect a 24C32N EEPROM I2C device to the Flipper Zero.");
|
||
|
print("SDA=pin 15, SCL=pin 16, VCC=pin 9, GND=pin 8.");
|
||
|
} else {
|
||
|
print("I2C device found at address: " + to_hex_string(addr));
|
||
|
delay(1000);
|
||
|
|
||
|
// first two bytes are the start address (0x0000)
|
||
|
// the remaining bytes are the data to store.
|
||
|
// can also use Uint8Array([0x00, 0x00, ...]) as write parameter
|
||
|
i2c.write(addr, [0x00, 0x00, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47]);
|
||
|
while (i2c.isDeviceReady(addr, 9) === false) {
|
||
|
print("Waiting for device to be ready...");
|
||
|
}
|
||
|
|
||
|
// write the address to read from (we start at address 0x0001)
|
||
|
// read 3 bytes - 0x42, 0x43, 0x44
|
||
|
let data_buf = i2c.writeRead(addr, [0x00, 0x01], 3, 100);
|
||
|
let data = Uint8Array(data_buf);
|
||
|
print("Read bytes: " + to_string(data.length));
|
||
|
for (let i = 0; i < data.length; i++) {
|
||
|
print("data[" + to_string(i) + "] = " + to_hex_string(data[i]));
|
||
|
}
|
||
|
|
||
|
// read two more bytes (0x45, 0x46) from current address
|
||
|
data_buf = i2c.read(addr, 2);
|
||
|
data = Uint8Array(data_buf);
|
||
|
print("Read bytes: " + to_string(data.length));
|
||
|
for (let i = 0; i < data.length; i++) {
|
||
|
print("data[" + to_string(i) + "] = " + to_hex_string(data[i]));
|
||
|
}
|
||
|
}
|