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.
Dependents: Hello-FM25W256 Hello-FM25W256
Revision 0:5a552209903c, committed 2016-03-04
- Comitter:
- MACRUM
- Date:
- Fri Mar 04 15:49:51 2016 +0000
- Child:
- 1:bb2b1e4bfb6e
- Commit message:
- Initial commit
Changed in this revision
| FM25W256.cpp | Show annotated file Show diff for this revision Revisions of this file |
| FM25W256.h | Show annotated file Show diff for this revision Revisions of this file |
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/FM25W256.cpp Fri Mar 04 15:49:51 2016 +0000
@@ -0,0 +1,75 @@
+#include "mbed.h"
+#include "FM25W256.h"
+
+FM25W256::FM25W256(PinName mosi, PinName miso, PinName clk, PinName cs)
+ : _spi(mosi, miso, clk), _cs(cs)
+{
+ _spi.format(8, 0);
+ _spi.frequency(20000000);
+ _cs = 1;
+}
+
+FM25W256::FM25W256(SPI &spi, PinName cs)
+ : _spi(spi), _cs(cs)
+{
+ _spi.format(8, 0);
+ _spi.frequency(20000000);
+ _cs = 1;
+
+}
+
+void FM25W256::write(uint16_t address, uint8_t data)
+{
+ _cs = 0;
+ _spi.write(CMD_WREN);
+ _cs = 1;
+
+ _cs = 0;
+ _spi.write(CMD_WRITE);
+ _spi.write(address >> 8);
+ _spi.write(address & 0xFF);
+ _spi.write(data);
+ _cs = 1;
+}
+
+void FM25W256::write(uint16_t address, uint8_t *data, uint16_t size)
+{
+ _cs = 0;
+ _spi.write(CMD_WREN);
+ _cs = 1;
+
+ _cs = 0;
+ _spi.write(CMD_WRITE);
+ _spi.write(address >> 8);
+ _spi.write(address & 0xFF);
+ while(size--) {
+ _spi.write(*data++);
+ }
+ _cs = 1;
+}
+
+uint8_t FM25W256::read(uint16_t address)
+{
+ uint8_t data;
+
+ _cs = 0;
+ _spi.write(CMD_READ);
+ _spi.write(address >> 8);
+ _spi.write(address & 0xFF);
+ data = _spi.write(0);
+ _cs = 1;
+
+ return data;
+}
+
+void FM25W256::read(uint16_t address, uint8_t *buf, uint16_t size)
+{
+ _cs = 0;
+ _spi.write(CMD_READ);
+ _spi.write(address >> 8);
+ _spi.write(address & 0xFF);
+ while (size--) {
+ *buf++ = _spi.write(0);
+ }
+ _cs = 1;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/FM25W256.h Fri Mar 04 15:49:51 2016 +0000
@@ -0,0 +1,27 @@
+#include "mbed.h"
+
+#ifndef __FM25W256_HEAD__
+#define __FM25W256_HEAD__
+
+#define CMD_WREN 0x06
+#define CMD_WRDI 0x04
+#define CMD_RDSR 0x05
+#define CMD_WRSR 0x01
+#define CMD_READ 0x03
+#define CMD_WRITE 0x02
+
+class FM25W256 {
+public:
+ FM25W256(PinName mosi, PinName miso, PinName clk, PinName cs);
+ FM25W256(SPI &spi, PinName cs);
+ void write(uint16_t address, uint8_t data);
+ void write(uint16_t address, uint8_t *data, uint16_t size);
+ uint8_t read(uint16_t address);
+ void read(uint16_t address, uint8_t *data, uint16_t size);
+
+protected:
+ SPI _spi;
+ DigitalOut _cs;
+};
+
+#endif
Cypress FM25W256 256Kb Wide Voltage SPI F-RAM