Basis for the C2 protocol from Silicon Labs.

Dependencies:   mbed

Revision:
8:af5d402396fb
Parent:
7:65a72aad87b8
Child:
9:6a689843a88e
--- a/main.cpp	Sun May 25 17:17:40 2014 +0000
+++ b/main.cpp	Sun May 25 17:27:52 2014 +0000
@@ -35,42 +35,46 @@
     char *name;
     int devid;
 } devices[] = {
-    { "F30x",                  0x04 },
-    { "F31x",                  0x08 },
-    { "F32x",                  0x09 },
-    { "F326/7",                0x0d },
-    { "F33x",                  0x0a },
-    { "F336/7",                0x14 },
-    { "F34x",                  0x0f },
-    { "F35x",                  0x0b },
-    { "F36x",                  0x12 },
-    { "F38x",                  0x28 },
-    { "F39x/F37x",             0x2b },
-    { "F41x",                  0x0c },
-    { "F50x/F51x",             0x1c },
-    { "F52xA/F53xA",           0x11 },
-    { "F54x",                  0x21 },
-    { "F55x/F56x/F57x",        0x22 },
-    { "F58x/F59x",             0x20 },
-    { "F70x/F71x",             0x1e },
-    { "F80x/F81x/F82x/F83x",   0x23 },
-    { "F90x/F91x",             0x1f },
-    { "F92x/F93x",             0x16 },
-    { "F96x",                  0x2a },
-    { "F99x",                  0x25 },
-    { "T60x",                  0x10 },
-    { "T606",                  0x1b },
-    { "T61x",                  0x13 },
-    { "T62x/T32x",             0x18 },
-    { "T622/T623/T326/T327",   0x19 },
-    { "T63x",                  0x17 },
-    { NULL, 0 }
+    { "F30x",                  0x04 },    { "F31x",                  0x08 },
+    { "F32x",                  0x09 },    { "F326/7",                0x0d },
+    { "F33x",                  0x0a },    { "F336/7",                0x14 },
+    { "F34x",                  0x0f },    { "F35x",                  0x0b },
+    { "F36x",                  0x12 },    { "F38x",                  0x28 },
+    { "F39x/F37x",             0x2b },    { "F41x",                  0x0c },
+    { "F50x/F51x",             0x1c },    { "F52xA/F53xA",           0x11 },
+    { "F54x",                  0x21 },    { "F55x/F56x/F57x",        0x22 },
+    { "F58x/F59x",             0x20 },    { "F70x/F71x",             0x1e },
+    { "F80x/F81x/F82x/F83x",   0x23 },    { "F90x/F91x",             0x1f },
+    { "F92x/F93x",             0x16 },    { "F96x",                  0x2a },
+    { "F99x",                  0x25 },    { "T60x",                  0x10 },
+    { "T606",                  0x1b },    { "T61x",                  0x13 },
+    { "T62x/T32x",             0x18 },    { "T622/T623/T326/T327",   0x19 },
+    { "T63x",                  0x17 },    { NULL, 0 }
 };
 
 #define C2_MASK_FLBUSY      0x80
 #define C2_MASK_INBUSY      0x02
 #define C2_MASK_OUTREADY    0x01
 
+#define C2_PI_CMD_GET_VERSION       0x01
+#define C2_PI_CMD_GET_DERIVATIVE    0x02
+
+#define C2_PI_CMD_DEVICE_ERASE      0x03
+
+#define C2_PI_CMD_BLOCK_READ        0x06        // FLASH (max. 64K bytes, bankswapping not supported)
+#define C2_PI_CMD_BLOCK_WRITE       0x07        // FLASH
+
+#define C2_PI_CMD_PAGE_ERASE        0x08
+
+#define C2_PI_CMD_DIRECT_READ       0x09        // SFR (Special FUnction Registers, 256 bytes(?))
+#define C2_PI_CMD_DIRECT_WRITE      0x0a        // SFR
+
+#define C2_PI_CMD_INDIRECT_READ     0x0b        // RAM (Internal, 256 bytes)
+#define C2_PI_CMD_INDIRECT_WRITE    0x0c        // RAM
+
+#define C2_PI_CMD_XRAM_READ         0x0e        // RAM (External, 2K or 4K bytes)
+#define C2_PI_CMD_XRAM_WRITE        0x0f        // RAM
+
 #define C2_DEVID    0
 #define C2_REVID    1
 #define C2_FPCTL    2
@@ -201,8 +205,8 @@
     c2d.input();
     c2ck = 1;
 
-    printf("\033[H\033[J");
-    printf("SiLabs C2 Protocol\n\r\n\r");
+//    printf("\033[H\033[J");
+    printf("\n\rSiLabs C2 Protocol\n\r\n\r");
     printf("Connect C2CK (clock) to p5 and C2D (data) to p6\n\r\n\r");
     printf("Press any key to continue\n\r");