library for IZU2022

Dependencies:   mbed mpu9250_i2c IM920 BMP180 GPS millis

Dependents:   IZU2022

Committer:
ryood
Date:
Tue Nov 22 08:55:44 2016 +0000
Revision:
3:3ce322ac8193
Parent:
2:3f286265fade
Child:
4:756dc42397cb
Change the speed of SPI to default (1Mhz)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ryood 0:effffaacd967 1 /*
ryood 0:effffaacd967 2 * SDFileSystem Binary R/W Test
ryood 0:effffaacd967 3 *
ryood 0:effffaacd967 4 * Library
ryood 0:effffaacd967 5 * SDFileSystem: https://developer.mbed.org/users/neilt6/code/SDFileSystem/ Revision:26
ryood 0:effffaacd967 6 * mbed: Revision: 124
ryood 2:3f286265fade 7 * mbed-rtos: Revision: 117
ryood 0:effffaacd967 8 *
ryood 0:effffaacd967 9 * 2016.11.22 created
ryood 0:effffaacd967 10 *
ryood 0:effffaacd967 11 */
ryood 0:effffaacd967 12
ryood 0:effffaacd967 13 #include "mbed.h"
ryood 2:3f286265fade 14 #include "rtos.h"
ryood 0:effffaacd967 15 #include "SDFileSystem.h"
ryood 0:effffaacd967 16
ryood 2:3f286265fade 17 SPI Spi(PC_12, PC_11, PC_10); // SPI3: mosi, miso, sclk
ryood 0:effffaacd967 18
ryood 2:3f286265fade 19 typedef struct {
ryood 0:effffaacd967 20 uint8_t x;
ryood 0:effffaacd967 21 uint8_t y;
ryood 0:effffaacd967 22 uint8_t z;
ryood 2:3f286265fade 23 } DataT;
ryood 2:3f286265fade 24
ryood 2:3f286265fade 25 void writeSD(DataT* data)
ryood 0:effffaacd967 26 {
ryood 3:3ce322ac8193 27 SDFileSystem sd(PC_12, PC_11, PC_10, PA_14, "sd"); // SPI3: mosi, miso, sclk, cs
ryood 0:effffaacd967 28
ryood 0:effffaacd967 29 //Mount the filesystem
ryood 0:effffaacd967 30 sd.mount();
ryood 0:effffaacd967 31
ryood 0:effffaacd967 32 //Perform a write test
ryood 0:effffaacd967 33 printf("\nWriting binary data to SD card...");
ryood 2:3f286265fade 34 FileHandle* file = sd.open("Test File.bin", O_WRONLY | O_CREAT | O_TRUNC);
ryood 0:effffaacd967 35 if (file != NULL)
ryood 0:effffaacd967 36 {
ryood 2:3f286265fade 37 if (file->write(data, sizeof(*data)) != sizeof(*data))
ryood 0:effffaacd967 38 {
ryood 0:effffaacd967 39 error("write error!\n");
ryood 0:effffaacd967 40 }
ryood 0:effffaacd967 41 if (file->close())
ryood 0:effffaacd967 42 {
ryood 0:effffaacd967 43 printf("failed to close file!\n");
ryood 0:effffaacd967 44 }
ryood 0:effffaacd967 45 else
ryood 0:effffaacd967 46 {
ryood 0:effffaacd967 47 printf("done!\n");
ryood 0:effffaacd967 48 }
ryood 0:effffaacd967 49 }
ryood 0:effffaacd967 50 else
ryood 0:effffaacd967 51 {
ryood 0:effffaacd967 52 printf("failed to create file!\n");
ryood 0:effffaacd967 53 }
ryood 0:effffaacd967 54
ryood 2:3f286265fade 55 //Unmount the filesystem
ryood 2:3f286265fade 56 sd.unmount();
ryood 2:3f286265fade 57 }
ryood 2:3f286265fade 58
ryood 2:3f286265fade 59 void readSD(DataT* data)
ryood 2:3f286265fade 60 {
ryood 3:3ce322ac8193 61 SDFileSystem sd(PC_12, PC_11, PC_10, PA_14, "sd"); // SPI3: mosi, miso, sclk, cs
ryood 2:3f286265fade 62
ryood 2:3f286265fade 63 //Mount the filesystem
ryood 2:3f286265fade 64 sd.mount();
ryood 2:3f286265fade 65
ryood 0:effffaacd967 66 //Perform a read test
ryood 0:effffaacd967 67 printf("\nReading binary data from SD card...");
ryood 2:3f286265fade 68 FileHandle* file = sd.open("Test File.bin", O_RDONLY);
ryood 0:effffaacd967 69 if (file != NULL)
ryood 0:effffaacd967 70 {
ryood 2:3f286265fade 71 if (file->read(data, sizeof(*data)) != sizeof(*data))
ryood 0:effffaacd967 72 {
ryood 0:effffaacd967 73 error("read error!\n");
ryood 0:effffaacd967 74 }
ryood 0:effffaacd967 75 if (file->close())
ryood 0:effffaacd967 76 {
ryood 0:effffaacd967 77 printf("failed to close file!\n");
ryood 0:effffaacd967 78 }
ryood 0:effffaacd967 79 else
ryood 0:effffaacd967 80 {
ryood 2:3f286265fade 81 printf("done!\n");
ryood 0:effffaacd967 82 }
ryood 0:effffaacd967 83 }
ryood 0:effffaacd967 84 else
ryood 0:effffaacd967 85 {
ryood 0:effffaacd967 86 printf("failed to open file!\n");
ryood 0:effffaacd967 87 }
ryood 0:effffaacd967 88
ryood 0:effffaacd967 89 //Unmount the filesystem
ryood 0:effffaacd967 90 sd.unmount();
ryood 2:3f286265fade 91 }
ryood 2:3f286265fade 92
ryood 2:3f286265fade 93 int main()
ryood 2:3f286265fade 94 {
ryood 2:3f286265fade 95 DataT data, rdata;
ryood 2:3f286265fade 96
ryood 2:3f286265fade 97 data.x = 0xff;
ryood 2:3f286265fade 98 data.y = 0x55;
ryood 2:3f286265fade 99 data.z = 0xaa;
ryood 2:3f286265fade 100
ryood 2:3f286265fade 101 writeSD(&data);
ryood 2:3f286265fade 102 readSD(&rdata);
ryood 2:3f286265fade 103
ryood 2:3f286265fade 104 printf("data: x:%02x y:%02x z:%02x\n", rdata.x, rdata.y, rdata.z);
ryood 2:3f286265fade 105 }