SD

Committer:
mikekelly99
Date:
Tue Nov 17 17:03:36 2020 +0000
Revision:
0:6db20bbdc767
Wow, never committed the code once so first and final commit, code produces the lat and long values as well as speed.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mikekelly99 0:6db20bbdc767 1 /* mbed Microcontroller Library
mikekelly99 0:6db20bbdc767 2 * Copyright (c) 2006-2012 ARM Limited
mikekelly99 0:6db20bbdc767 3 *
mikekelly99 0:6db20bbdc767 4 * Permission is hereby granted, free of charge, to any person obtaining a copy
mikekelly99 0:6db20bbdc767 5 * of this software and associated documentation files (the "Software"), to deal
mikekelly99 0:6db20bbdc767 6 * in the Software without restriction, including without limitation the rights
mikekelly99 0:6db20bbdc767 7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
mikekelly99 0:6db20bbdc767 8 * copies of the Software, and to permit persons to whom the Software is
mikekelly99 0:6db20bbdc767 9 * furnished to do so, subject to the following conditions:
mikekelly99 0:6db20bbdc767 10 *
mikekelly99 0:6db20bbdc767 11 * The above copyright notice and this permission notice shall be included in
mikekelly99 0:6db20bbdc767 12 * all copies or substantial portions of the Software.
mikekelly99 0:6db20bbdc767 13 *
mikekelly99 0:6db20bbdc767 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
mikekelly99 0:6db20bbdc767 15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
mikekelly99 0:6db20bbdc767 16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
mikekelly99 0:6db20bbdc767 17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
mikekelly99 0:6db20bbdc767 18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
mikekelly99 0:6db20bbdc767 19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
mikekelly99 0:6db20bbdc767 20 * SOFTWARE.
mikekelly99 0:6db20bbdc767 21 */
mikekelly99 0:6db20bbdc767 22 #ifndef MBED_SDFILESYSTEM_H
mikekelly99 0:6db20bbdc767 23 #define MBED_SDFILESYSTEM_H
mikekelly99 0:6db20bbdc767 24
mikekelly99 0:6db20bbdc767 25 #include "mbed.h"
mikekelly99 0:6db20bbdc767 26 #include "FATFileSystem.h"
mikekelly99 0:6db20bbdc767 27 #include <stdint.h>
mikekelly99 0:6db20bbdc767 28
mikekelly99 0:6db20bbdc767 29 /** Access the filesystem on an SD Card using SPI
mikekelly99 0:6db20bbdc767 30 *
mikekelly99 0:6db20bbdc767 31 * @code
mikekelly99 0:6db20bbdc767 32 * #include "mbed.h"
mikekelly99 0:6db20bbdc767 33 * #include "SDFileSystem.h"
mikekelly99 0:6db20bbdc767 34 *
mikekelly99 0:6db20bbdc767 35 * SDFileSystem sd(p5, p6, p7, p12, "sd"); // mosi, miso, sclk, cs
mikekelly99 0:6db20bbdc767 36 *
mikekelly99 0:6db20bbdc767 37 * int main() {
mikekelly99 0:6db20bbdc767 38 * FILE *fp = fopen("/sd/myfile.txt", "w");
mikekelly99 0:6db20bbdc767 39 * fprintf(fp, "Hello World!\n");
mikekelly99 0:6db20bbdc767 40 * fclose(fp);
mikekelly99 0:6db20bbdc767 41 * }
mikekelly99 0:6db20bbdc767 42 */
mikekelly99 0:6db20bbdc767 43 class SDFileSystem : public FATFileSystem {
mikekelly99 0:6db20bbdc767 44 public:
mikekelly99 0:6db20bbdc767 45
mikekelly99 0:6db20bbdc767 46 /** Create the File System for accessing an SD Card using SPI
mikekelly99 0:6db20bbdc767 47 *
mikekelly99 0:6db20bbdc767 48 * @param mosi SPI mosi pin connected to SD Card
mikekelly99 0:6db20bbdc767 49 * @param miso SPI miso pin conencted to SD Card
mikekelly99 0:6db20bbdc767 50 * @param sclk SPI sclk pin connected to SD Card
mikekelly99 0:6db20bbdc767 51 * @param cs DigitalOut pin used as SD Card chip select
mikekelly99 0:6db20bbdc767 52 * @param name The name used to access the virtual filesystem
mikekelly99 0:6db20bbdc767 53 */
mikekelly99 0:6db20bbdc767 54 SDFileSystem(PinName mosi, PinName miso, PinName sclk, PinName cs, const char* name);
mikekelly99 0:6db20bbdc767 55 virtual int disk_initialize();
mikekelly99 0:6db20bbdc767 56 virtual int disk_status();
mikekelly99 0:6db20bbdc767 57 virtual int disk_read(uint8_t* buffer, uint32_t block_number, uint32_t count);
mikekelly99 0:6db20bbdc767 58 virtual int disk_write(const uint8_t* buffer, uint32_t block_number, uint32_t count);
mikekelly99 0:6db20bbdc767 59 virtual int disk_sync();
mikekelly99 0:6db20bbdc767 60 virtual uint32_t disk_sectors();
mikekelly99 0:6db20bbdc767 61
mikekelly99 0:6db20bbdc767 62 protected:
mikekelly99 0:6db20bbdc767 63
mikekelly99 0:6db20bbdc767 64 int _cmd(int cmd, int arg);
mikekelly99 0:6db20bbdc767 65 int _cmdx(int cmd, int arg);
mikekelly99 0:6db20bbdc767 66 int _cmd8();
mikekelly99 0:6db20bbdc767 67 int _cmd58();
mikekelly99 0:6db20bbdc767 68 int initialise_card();
mikekelly99 0:6db20bbdc767 69 int initialise_card_v1();
mikekelly99 0:6db20bbdc767 70 int initialise_card_v2();
mikekelly99 0:6db20bbdc767 71
mikekelly99 0:6db20bbdc767 72 int _read(uint8_t * buffer, uint32_t length);
mikekelly99 0:6db20bbdc767 73 int _write(const uint8_t *buffer, uint32_t length);
mikekelly99 0:6db20bbdc767 74 uint32_t _sd_sectors();
mikekelly99 0:6db20bbdc767 75 uint32_t _sectors;
mikekelly99 0:6db20bbdc767 76
mikekelly99 0:6db20bbdc767 77 void set_init_sck(uint32_t sck) { _init_sck = sck; }
mikekelly99 0:6db20bbdc767 78 // Note: The highest SPI clock rate is 20 MHz for MMC and 25 MHz for SD
mikekelly99 0:6db20bbdc767 79 void set_transfer_sck(uint32_t sck) { _transfer_sck = sck; }
mikekelly99 0:6db20bbdc767 80 uint32_t _init_sck;
mikekelly99 0:6db20bbdc767 81 uint32_t _transfer_sck;
mikekelly99 0:6db20bbdc767 82
mikekelly99 0:6db20bbdc767 83 SPI _spi;
mikekelly99 0:6db20bbdc767 84 DigitalOut _cs;
mikekelly99 0:6db20bbdc767 85 int cdv;
mikekelly99 0:6db20bbdc767 86 int _is_initialized;
mikekelly99 0:6db20bbdc767 87 };
mikekelly99 0:6db20bbdc767 88
mikekelly99 0:6db20bbdc767 89 #endif