USB to I2C converter

Dependencies:   mbed

Revision:
0:63512ce9aa8b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Tue Nov 23 11:59:32 2021 +0000
@@ -0,0 +1,40 @@
+#include "mbed.h"
+
+DigitalOut led(LED1);
+Serial pc(USBTX,USBRX); //UART0 via OpenSDA
+I2CSlave i2c(I2C_SDA, I2C_SCL);
+int BUFFER_SIZE = 2;
+
+int main() {
+    pc.baud(115200);
+    pc.printf("%s\r\n", "ok");
+    led = 0;
+    char buf[BUFFER_SIZE];
+    //pc.attach(pc_recv);
+    i2c.frequency(400000);
+    i2c.address(0x18);
+    while(true) {
+        for(int i = 0; i < BUFFER_SIZE; i++){
+            buf[i] = 0;
+        }
+        switch (i2c.receive()) {
+            case I2CSlave::ReadAddressed:
+                // Write back the buffer from the master
+                i2c.write(buf, BUFFER_SIZE);
+                pc.printf("Written to master (addressed): %s\r\n", buf);
+                break;
+            case I2CSlave::WriteGeneral:
+                i2c.read(buf, BUFFER_SIZE);
+                pc.printf("Read from master (general): %s\r\n", buf);
+                break;
+            case I2CSlave::WriteAddressed:
+                i2c.read(buf, BUFFER_SIZE);
+                pc.printf("Read from master (addressed): %d\r\n", buf[0]);
+                for(int i = 1; i < BUFFER_SIZE; i++){
+                    pc.printf("%d ", buf[i]);
+                }
+                pc.printf("\r\n");
+                break;
+        }
+    }
+}