Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
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_ */
Generated on Tue Jul 12 2022 13:53:15 by
1.7.2