SPI RAM 23LC1024 (Microchip) 1Mbit see: http://mbed.org/users/okini3939/notebook/extend-memory/

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
okini3939
Date:
Fri Nov 09 00:32:20 2012 +0000
Child:
1:a7b1803dfa44
Commit message:
1st build

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Fri Nov 09 00:32:20 2012 +0000
@@ -0,0 +1,88 @@
+/*
+ * SPI RAM 23LC1024 (Microchip)
+ */
+#include "mbed.h"
+
+#define CMD_READ    0x03
+#define CMD_WRITE   0x02
+#define CMD_RDMR    0x05
+#define CMD_WRMR    0x01
+
+DigitalOut myled(LED1);
+Serial pc(USBTX, USBRX);
+
+SPI spi(p11, p12, p13); // mosi, miso, sclk
+DigitalOut cs(p17);
+
+int ram_write (int addr, char *buf, int len) {
+    int i;
+
+    cs = 0;
+    spi.write(CMD_WRITE);
+    spi.write((addr >> 16) & 0xff);
+    spi.write((addr >> 8) & 0xff);
+    spi.write(addr & 0xff);
+
+    for (i = 0; i < len; i ++) {
+        spi.write(buf[i]);
+    }
+    cs = 1;
+    return i;
+}
+
+int ram_read (int addr, char *buf, int len) {
+    int i;
+
+    cs = 0;
+    spi.write(CMD_READ);
+    spi.write((addr >> 16) & 0xff);
+    spi.write((addr >> 8) & 0xff);
+    spi.write(addr & 0xff);
+
+    for (i = 0; i < len; i ++) {
+        buf[i] = spi.write(0);
+    }
+    cs = 1;
+    return i;
+}
+
+int main() {
+    int i;
+    char buf[256];
+
+    cs = 1;
+    pc.baud(115200);
+    wait_ms(500);
+    
+    cs = 0;
+    spi.write(CMD_RDMR);
+    printf("RAM mode: %02x\r\n", spi.write(0));
+    cs = 1;
+    
+    printf("RAM write\r\n");
+    strcpy(buf, "Hello!");
+    ram_write(0, buf, 6);
+    
+    for (i = 0; i < 256; i ++) {
+        buf[i] = i;
+    }
+    ram_write(6, buf, 256);
+
+    wait_ms(500);
+    memset(buf, 0, 256);
+    
+    printf("RAM read\r\n");
+    ram_read(0, buf, 256);
+    for (i = 0; i < 256; i ++) {
+        printf(" %02x", buf[i]);
+        if ((i & 0x0f) == 0x0f)
+            printf("\r\n");
+    }
+
+    while(1) {
+        myled = 1;
+        wait(0.2);
+        myled = 0;
+        wait(0.2);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Fri Nov 09 00:32:20 2012 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/e2ed12d17f06
\ No newline at end of file