Seiji Ainoguchi / SerialFlash

Dependents:   SerialFlashTest

Fork of SerialFlash by Seiji Ainoguchi

Committer:
s_ain
Date:
Wed Mar 02 16:09:09 2011 +0000
Revision:
2:6f8ab876b516
Parent:
0:d0117f54a7ee
change SPI interface

Who changed what in which revision?

UserRevisionLine numberNew contents of line
s_ain 0:d0117f54a7ee 1 #pragma once
s_ain 0:d0117f54a7ee 2
s_ain 0:d0117f54a7ee 3 #include <string>
s_ain 0:d0117f54a7ee 4
s_ain 2:6f8ab876b516 5 class ISPICommand;
s_ain 0:d0117f54a7ee 6
s_ain 0:d0117f54a7ee 7 class M25PDeviceImpl
s_ain 0:d0117f54a7ee 8 {
s_ain 0:d0117f54a7ee 9 public:
s_ain 2:6f8ab876b516 10 static bool IsSupported(ISPICommand* pSPICommand);
s_ain 2:6f8ab876b516 11 static M25PDeviceImpl* Create(ISPICommand* pSPICommand);
s_ain 0:d0117f54a7ee 12 ~M25PDeviceImpl(void);
s_ain 0:d0117f54a7ee 13
s_ain 0:d0117f54a7ee 14 std::string GetDeviceName() const;
s_ain 0:d0117f54a7ee 15 int GetCapacity() const;
s_ain 0:d0117f54a7ee 16 int Read(int address, void* buffer, int length);
s_ain 0:d0117f54a7ee 17 int Write(int address, const void* buffer, int length);
s_ain 0:d0117f54a7ee 18 void BulkErase(void);
s_ain 0:d0117f54a7ee 19
s_ain 0:d0117f54a7ee 20 private:
s_ain 2:6f8ab876b516 21 ISPICommand* _pSPICommand;
s_ain 0:d0117f54a7ee 22 int _operationFrequency;
s_ain 0:d0117f54a7ee 23 struct DeviceProperty
s_ain 0:d0117f54a7ee 24 {
s_ain 0:d0117f54a7ee 25 std::string deviceName;
s_ain 0:d0117f54a7ee 26 int capacity;
s_ain 0:d0117f54a7ee 27 int blockProtectionMask;
s_ain 0:d0117f54a7ee 28 } const& _property;
s_ain 2:6f8ab876b516 29 static const DeviceProperty* findMatchDevice(ISPICommand* pSPI);
s_ain 0:d0117f54a7ee 30
s_ain 2:6f8ab876b516 31 M25PDeviceImpl(ISPICommand* pSPICommand, const DeviceProperty& property);
s_ain 2:6f8ab876b516 32 static void readId(ISPICommand* pSPICommand, int& manufacturerId, int& memoryType, int& memoryCapacity);
s_ain 2:6f8ab876b516 33 static void fillAddress(char* pBuffer, int address);
s_ain 0:d0117f54a7ee 34
s_ain 0:d0117f54a7ee 35 int readStatusRegister(void);
s_ain 0:d0117f54a7ee 36 void clearBlockProtection(void);
s_ain 0:d0117f54a7ee 37 void writeStatusRegister(int value);
s_ain 0:d0117f54a7ee 38 void writeEnable(void);
s_ain 0:d0117f54a7ee 39 void writeDisable(void);
s_ain 0:d0117f54a7ee 40 void pageProgram(int address, const void* buffer);
s_ain 0:d0117f54a7ee 41 };