USBMSD SD card Hello World for Mbed platforms
Dependencies: mbed USBMSD_SD USBDevice
USBDevice/USBMSD/AT45.h
- Committer:
- samux
- Date:
- 2011-11-11
- Revision:
- 2:27a7e7f8d399
File content as of revision 2:27a7e7f8d399:
/* 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