Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of SPIFLASH_AT45DB by
Revision 0:54f4cc3dfc0e, committed 2012-11-26
- Comitter:
- okini3939
- Date:
- Mon Nov 26 03:14:24 2012 +0000
- Child:
- 1:a78f957bd042
- Commit message:
- 1st build
;
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/at45db161d.lib Mon Nov 26 03:14:24 2012 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/okini3939/code/at45db161d/#b379e16fdf6f
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Mon Nov 26 03:14:24 2012 +0000
@@ -0,0 +1,109 @@
+/*
+ * SPI FLASH AT45DB081D (Atmel)
+ * 8Mbit
+ */
+#include "mbed.h"
+#include "at45db161d.h"
+
+#undef PAGE_SIZE
+#define PAGE_SIZE 264 // AT45DB081D (1MB)
+//#define PAGE_SIZE 528 // AT45DB321D (4MB)
+#define PAGE_NUM 4095 // AT45DB081D (1MB)
+//#define PAGE_NUM 8192 // AT45DB321D (4MB)
+
+#define WRITE_BUFFER 1
+#define READ_BUFFER 2
+
+DigitalOut myled(LED1);
+Serial pc(USBTX, USBRX);
+
+SPI spi(p11, p12, p13); // mosi, miso, sclk
+ATD45DB161D memory(spi, p19);
+
+void flash_write (int addr, char *buf, int len) {
+ int i;
+ memory.BufferWrite(WRITE_BUFFER, addr % PAGE_SIZE);
+ for (i = 0; i < len; i ++) {
+ spi.write(buf[i]);
+ }
+ memory.BufferToPage(WRITE_BUFFER, addr / PAGE_SIZE, 1);
+}
+
+void flash_read (int addr, char *buf, int len) {
+ int i;
+ memory.PageToBuffer(addr / PAGE_SIZE, READ_BUFFER);
+ memory.BufferRead(READ_BUFFER, addr % PAGE_SIZE, 1);
+ for (i = 0; i < len; i ++) {
+ buf[i] = spi.write(0xff);
+ }
+}
+
+int main() {
+ int i;
+ char buf[PAGE_SIZE];
+ Timer t;
+ ATD45DB161D::ID id;
+
+ pc.baud(115200);
+ spi.frequency(16000000);
+ wait_ms(500);
+
+ memory.ReadManufacturerAndDeviceID(&id);
+ printf("RAM Manufacturer ID : %02x\r\n", id.manufacturer);
+ printf("RAM Device ID : %02x %02x\r\n", id.device[0], id.device[1]);
+ wait_ms(10);
+
+ printf("\r\nHELLO test\r\n");
+
+ printf("RAM write\r\n");
+ strcpy(buf, "Hello!");
+ flash_write(0, buf, 6);
+
+ for (i = 0; i < PAGE_SIZE; i ++) {
+ buf[i] = i;
+ }
+ flash_write(6, buf, PAGE_SIZE - 6);
+
+ wait(1);
+ memset(buf, 0, PAGE_SIZE);
+
+ printf("RAM read\r\n");
+ flash_read(0, buf, PAGE_SIZE);
+ for (i = 0; i < PAGE_SIZE; i ++) {
+ printf(" %02x", buf[i]);
+ if ((i & 0x0f) == 0x0f)
+ printf("\r\n");
+ }
+
+ wait(1);
+
+ printf("\r\nWrite/Read time\r\n");
+
+ printf("RAM write\r\n");
+ t.reset();
+ t.start();
+ for (i = 0; i < 0x20000; i += PAGE_SIZE) {
+ buf[0] = (i >> 8) & 0xff;
+ flash_write(i, buf, PAGE_SIZE);
+ if ((i & 0x0fff) == 0) printf(".");
+ }
+ t.stop();
+ printf("\r\ntime %f, %f KBytes/sec\r\n", t.read(), (float)0x20000 / 1024 / t.read());
+
+ wait(1);
+
+ printf("RAM read\r\n");
+ t.reset();
+ t.start();
+ for (i = 0; i < 0x20000; i += PAGE_SIZE) {
+ flash_read(i, buf, PAGE_SIZE);
+ if (buf[0] != ((i >> 8) & 0xff)) {
+ printf("error %d\r\n", i);
+ break;
+ }
+ if ((i & 0x0fff) == 0) printf(".");
+ }
+ t.stop();
+ printf("\r\ntime %f, %f KBytes/sec\r\n", t.read(), 0x20000 / 1024 / t.read());
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Mon Nov 26 03:14:24 2012 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/3d775a932e1d \ No newline at end of file
