Thomas Lyp / DevLibMemoryController

Dependencies:   FastPWM

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers MemoryController.h Source File

MemoryController.h

00001 #ifndef __MemoryController_H_
00002 #define __MemoryController_H_
00003  
00004 #include "mbed.h"
00005  
00006 class MemoryController
00007 {
00008     
00009 public:
00010 
00011     enum Commands_e 
00012     {
00013         RESET           = 0xFF,
00014         READADDRINIT    = 0x00,
00015         READADDREND     = 0x30,
00016         WRITEPAGEINIT   = 0x80,
00017         WRITEPAGEEND    = 0x10,
00018         ERASEBLOCKINIT  = 0x60,
00019         ERASEBLOCKEND   = 0xD1
00020     };
00021     
00022     union Data{
00023         uint8_t all;
00024         struct BitField_s
00025         {
00026             uint8_t dq1 : 1;
00027             uint8_t dq2 : 1;
00028             uint8_t dq3 : 1;
00029             uint8_t dq4 : 1;
00030             uint8_t dq5 : 1;
00031             uint8_t dq6 : 1;
00032             uint8_t dq7 : 1;
00033             uint8_t dq8 : 1;
00034         }bits;
00035     };
00036 
00037     struct DataAddress {
00038         char    col1;
00039         char    col2;
00040         char    page;
00041         char    block1;
00042         char    block2;
00043     } Address;
00044     
00045     MemoryController(DigitalOut CE,DigitalOut CLE,DigitalOut ALE,DigitalOut WE,DigitalOut RE,DigitalOut WP,PinName *DQ, DigitalIn RDY);
00046  
00047     /** @brief Destructor */
00048     ~MemoryController(void);
00049     
00050     /**
00051     * @brief    Set Dq Bus to char value (8 bits) used for command writes and address writes  
00052     * @param[IN]    set - Value to set DQ array to 
00053     * @param[OUT]   values - Array where values are held (8 bits of 1's and 0's to set DQ)
00054     */
00055     void setDQ(const char set, bool *values);
00056 
00057     /**
00058     * @brief    Used at initialization of Device
00059     */
00060     void ResetDevice();
00061     
00062     void startPageRead(DataAddress &address);
00063     
00064     void endPageRead();
00065     
00066     void ReadData(char *DataOut);
00067     
00068     void sendPageData(char *DataIn);
00069         
00070     void startPageWrite(DataAddress &address);
00071     
00072     void endPageWrite();
00073     
00074     
00075     /**
00076     * @brief    Used to send address for block erase (3 bytes)
00077     */
00078     void MemoryController::WriteAddressBlock(DataAddress &address);
00079 
00080     /**
00081     * @brief    Used to send address data for read/write page (5 bytes)
00082     */
00083     void MemoryController::WriteAddressPage(DataAddress &address);
00084     
00085     
00086     /**
00087     * @brief        Read Page of Data (4320 bytes)
00088     * @param[IN]    address -   address to read data from
00089     * @param[OUT]   DataOut -   Array to write data into
00090     */
00091     void ReadPage(DataAddress &address, char *DataOut);
00092 
00093     /**
00094     * @brief        Program 1 page (4320 bytes)
00095     * @param[IN]    adderess - address to program data to 
00096     * @param[IN]    DataIn   - Array pointer to data being written into page
00097     */
00098     void ProgramPage(DataAddress &address, char *DataIn);
00099 
00100     /**
00101     * @brief        Earse 1 block (128 pages)
00102     * @param[IN]    address -  Only row address characters for erasing block, no collumn needed  
00103     * @return       0 on success, 1 on failure
00104     */
00105     void EraseBlock(DataAddress &address);
00106     
00107     void setLogicStandby();
00108     
00109     void setLogicBusIdle();
00110     
00111     void setLogicCommandInput();
00112     
00113     void setLogicAddressInput();
00114     
00115     void setLogicDataInput();
00116     
00117     void setLogicDataOut();
00118     
00119     void setLogicWriteProtect();
00120     
00121 private:
00122     PinName *m_DQ;
00123     DigitalOut m_CE, m_CLE, m_ALE, m_WE, m_RE, m_WP;
00124     DigitalIn m_RDY;
00125 };
00126  
00127 #endif /* __MemoryController_H_ */