سورس کد کامل AT45DB641E
زبان برنامه نویسی ++C در محیط IAR ARM.
این سورس برای LPC1788 نوشته شده و کامل تست شده است.
رمز فایل : epsc.ir
امکانات
شامل توابعی برای:
- Initial اولیه.
- دریافت ظرفیت.
- خواندن ID.
- خواندن Status.
- تنظیم Page Size.
- خواندن پشت سر هم در حافظه.
- نوشتن پشت سر هم در حافظه.
- خواندن یک Page از حافظه.
- خواندن بافرها.
- نوشتن در بافر.
- ارسال بافر به پیج در هر دو حالت با Erase و بدون Erase.
- نوشتن در Page از طریق بافر با و بدون Erase.
- خواندن و سپس تغییر آن و نوشتن در Page در واقع ReadModifyWrite.
- ورود و خروج از مد Deep Power Down.
- ورود و خروج از مد Ultra Deep Power Down.
- ریست نرم افزاری و سخت افزاری.
- ارسال Page به Buffer.
- تابع Erase برای تمام روش ها (پاک کردن Chip و یا Sector و یا Page و Block)
- خواندن Sector Lockdown Register. ( برایتشخیص Lock بودن سکتور).
- Lockdown کردن سکتور.
- فعال کردن Sector Protection.
- خواندن و نوشتن و پاک کردن Sector Protection Register (برای Protect کردن Register)
هیدر سورس کد
class CAT45DB641E
{
public:
static TAT45Status Status;
CAT45DB641E();
~CAT45DB641E();
u8 Init(void);
u8 GetDensity(void);
s8 ReadSectorLockdownRegister(u8* lockdownstate);
s8 LockDownSector(u32 address);
s8 SectorProtectionSet(s8 state);
s8 SectorProtection(u32 address);
s8 ReadID(U8 *id);
s8 ReadStatus(void);
s8 IsReady(void);
s8 SetPageSize(u8 pagesize);
s8 Read(U32 address,u8 *buff,u32 size);
s8 Write(U32 address,u8 *buff,u32 size); // Write To Page From Buff 1;
s8 PageToBufferTransfer(u8 buf_num,u32 page);
s8 Erase(u8 mode,u16 address,u8 part);
s8 SectorProtectionRegisterErase(void);
s8 SectorProtectionRegisterWrite(u8* buf);
s8 SectorProtectionRegisterRead(u8* buf);
s8 ContinuousRead(u8 mode,U32 address,u8 *buff,u32 size);
s8 MainMemoryPageRead(U32 pageadr,u32 byteadr,u8 *buff,u32 size);
s8 BufferRead(u8 mode,u8 bufnum,u32 address,u8* buff,u32 size);
s8 BufferWrite(u8 bufnum,u32 address,u8* buff,u32 size);
s8 BufferToPageWithErase(u8 bufnum,u32 page);
s8 BufferToPageWithOutErase(u8 bufnum,u32 page);
s8 PageProgramThroughBufferWithErase(u8 bufnum,u32 page,u32 address,u8* buff,u32 size);
s8 PageProgramThroughBuffer1WithOutErase(u32 page,u32 address,u8* buff,u32 size);
s8 ReadModifyWritePage(u8 bufnum,u32 page,u32 address,u8* buff,u32 size);
s8 DeepPowerDownSet(u8 state);
s8 UltraDeepPowerDownSet(u8 state);
s8 Reset(u8 mode);
private:
void PortInit(void);
void SPIInit(void);
s8 AT45SPIReadWrite(u8* Tx,u8* Rx,u32 lenght);
void delay(u32 delay);
};
مستندات
راهنمای استفاده از کد: (راهنمای سورس کد AT45DB641E)