USBMSD SD card Hello World for Mbed platforms
Dependencies: mbed USBMSD_SD USBDevice
Diff: USBDevice/USBMSD/AT45.h
- Revision:
- 3:0ffb2eee9e06
- Parent:
- 2:27a7e7f8d399
- Child:
- 4:980e6470dcce
--- a/USBDevice/USBMSD/AT45.h Fri Nov 11 15:22:53 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,103 +0,0 @@ -/* mbed Library - AT45 - * Copyright (c) 2008, cstyles - - -Class to make the AT45 SPI flash parts from ATMEL appear as SRAM or 512 byte block devices - -This class supports 011,021,041,081,161,321,641 variants of the AT45DBxxx family - -|| Code || Density || Page size || Pages || Package || -|| 011 || 1 || 256 || 512 || 8 SOIC || -|| 021 || 2 || 256 || 1024 || 8 SOIC || -|| 041 || 4 || 256 || 2048 || 8 SOIC || -|| 081 || 8 || 256 || 4096 || 8 SOIC || -|| 161 || 16 || 512 || 4096 || 8 SOIC || -|| 321 || 32 || 512 || 8192 || 8 SOIC || -|| 641 || 64 || 1024 || 8192 || 28 TSOP || - -To do : - - - Check for current status on Erase Chip command not working. - - */ - -#ifndef MBED_AT45_H -#define MBED_AT45_H - -#include "mbed.h" - -class AT45 { - - // Public functions - public: - - AT45(PinName mosi = p5, PinName miso = p6, PinName clk = p7, PinName ncs = p8); - - void erase (void); - - // Integer RAM access - char read (int address); // read int from address. Automatically word-aligns address - void write (int address, char data); // Write int to address. Automatically world-aligns address - - // Block device access - int blocks (void); // returns the number of 512 byte blocks - int blockread (char* data, int block); // read a block - int blockwrite (char* data, int block); // write a block - int blockerase (int block); // erase a block - - // Part interrogation - int size (void); // Device size in bytes - int pages (void); // Device size in bytes - int pagesize (void); // Device size in bytes - - int id (void); // ID of part - int status (void); // Status register - void pollbusy (void); // Wait until Flash is not busy - - // Private variables - private : - - SPI _spi; - DigitalOut _ncs; - - int _pages; // Integer number of pages - int _pagesize; // page size, in bytes - int _devicesize; // device size in bytes - int _blocks; // Number of 512 byte blocks - - // Some flags for buffering - int _buffer1address; - int _buffer2address; - int _lru; - - // Helper routunes - void _reset(); - void _select(); - void _deselect(); - void _pollbusy (void); - - // accessing SRAM buffers - void _sramwrite (int buffer, int address, int data); - int _sramread (int buffer, int address); - - // Transferring SRAM buffers to/from FLASH - void _flashwrite (int buffer, int paddr); - void _flashread (int buffer, int paddr); - - // Allocate buffer - int _allocatebuffer(int address); - void _flushbuffer(int buffer); - - // Reading FLASH directly - int _memread (int address); - - // Calculate page/subpage addresses - int _getpaddr (int); - int _getbaddr (int); - - // Send 3 byte address - void _sendaddr (int address); - -}; - -#endif