| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- // Ôàéë ñ ïðîòîòèïàìè íèçêîóðîâíåâûõ êîììàíä äëÿ W25Q16JV.
- // v 1.0 îò 12/10/20
- // Àâòîð: Ñû÷åâ À.
- #ifdef W25Q16JV_H
- #if defined(W25Q16JV_LOWLEVEL) || defined(W25Q16JV_APILEVEL)
- // ¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹
- // ¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹ ÍÈÇÊÎÓÐÎÂÍÅÂÛÅ ÍÅÁÅÇÎÏÀÑÍÛÅ ÔÓÍÊÖÈÈ ¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹
- // ¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹
- //
- // ïîäðîáíåå ñì. W25QXXX_LL.c
- //
- // --------------------------------------------------------------------------------------------------------
- typedef struct
- {
- struct
- {
- void (* writeDisable )(); // çàïðåùåíèå êîìàíä çàïèñè / __flash_hal__writedisable
- void (* writeEnable )(); // ðàçðåøåíèå êîìàíä çàïèñè / __flash_hal__writeenable
- }
- operations;
- struct
- {
- void (* statusRead1 )( __flash_status1_t * pcReadRegister ); // ÷òåíèå ðåãèñòðà ñòàòóñà / __flash_hal__statusRead1
- void (* statusRead2 )( __flash_status2_t * pcReadRegister ); // ÷òåíèå ðåãèñòðà ñòàòóñà / __flash_hal__statusRead2
- void (* statusRead3 )( __flash_status3_t * pcReadRegister ); // ÷òåíèå ðåãèñòðà ñòàòóñà / __flash_hal__statusRead3
- void (* statusWrite1)( __flash_status1_t * pcReadRegister ); // çàïèñü ðåãèñòðà ñòàòóñà / __flash_hal__statusWrite1
- void (* statusWrite2)( __flash_status2_t * pcReadRegister ); // çàïèñü ðåãèñòðà ñòàòóñà / __flash_hal__statusWrite2
- void (* statusWrite3)( __flash_status3_t * pcReadRegister ); // çàïèñü ðåãèñòðà ñòàòóñà / __flash_hal__statusWrite3
- }
- status;
- struct
- {
- void (* securityRegister1Erase)(); // ñòèðàíèå ðåãèñòðà 1 áåçîïàñíîñòè / __flash_hal__securityRegister1Erase
- void (* securityRegister2Erase)(); // ñòèðàíèå ðåãèñòðà 2 áåçîïàñíîñòè / __flash_hal__securityRegister2Erase
- void (* securityRegister3Erase)(); // ñòèðàíèå ðåãèñòðà 3 áåçîïàñíîñòè / __flash_hal__securityRegister3Erase
- void (* securityRegister1Write)(__flash_securityregister_t * contents); // çàïèñü ðåãèñòðà 1 áåçîïàñíîñòè / __flash_hal__securityRegister1Write
- void (* securityRegister2Write)(__flash_securityregister_t * contents); // çàïèñü ðåãèñòðà 2 áåçîïàñíîñòè / __flash_hal__securityRegister2Write
- void (* securityRegister3Write)(__flash_securityregister_t * contents); // çàïèñü ðåãèñòðà 3 áåçîïàñíîñòè / __flash_hal__securityRegister3Write
- void (* securityRegister1Read)(__flash_securityregister_t * contents); // ÷òåíèå ðåãèñòðà 1 áåçîïàñíîñòè / __flash_hal__securityRegister1Read
- void (* securityRegister2Read)(__flash_securityregister_t * contents); // ÷òåíèå ðåãèñòðà 2 áåçîïàñíîñòè / __flash_hal__securityRegister2Read
- void (* securityRegister3Read)(__flash_securityregister_t * contents); // ÷òåíèå ðåãèñòðà 3 áåçîïàñíîñòè / __flash_hal__securityRegister3Read
- }
- security;
- struct
- {
- void (* globalLock)(); // óñòàíîâèòü áëîêèðîâêó çàïèñè íà âñå ñåêòîðà/áëîêè / __flash_hal__globalLock
- void (* globalUnlock)(); // ñíÿòü áëîêèðîâêó çàïèñè ñî âñåõ ñåêòîðîâ/áëîêîâ / __flash_hal__globalUnlock
- void (* protectStateWrite)( size_t nProtSector, bool protectState ); // çàïèñûâàåò èíäèâèäóàëüíóþ áëîêèðîâêó ñåêòîðà/áëîêà / __flash_hal__protectStateWrite
- bool (* protectStateRead)( size_t nProtSector ); // ñ÷èòûâàåò èíäèâèäóàëüíóþ áëîêèðîâêó ñåêòîðà/áëîêà / __flash_hal__protectStateRead
- }
- protection;
- struct
- {
- void (* sleepMode)(); // ïåðåõîä â ðåæèì ýíåðãîñáåðåæåíèÿ / __flash_hal__sleepMode
- void (* wakeUp)(); // âûõîä èç ðåæèìà ýíåðãîñáåðåæåíèÿ / __flash_hal__wakeUp
- }
- sleep;
- struct
- {
- void (* arrayRead)( __FLASH_DWORD w24Address, __FLASH_BYTE * pDataRead, __FLASH_WORD wCntToRead ); // ïîñëåäîâàòåëüíîå ÷òåíèå (ìàññèâ) / __flash_hal__arrayRead
- void (* chunkProgram)( __flash_pageprogramptr_t pdata, __FLASH_DWORD w24Address); // ïðîãðàììèðîâàíèå ñòðàíèöû áåç ñòèðàíèÿ áëîêà/ñòðàíèöû / __flash_hal__chunkProgram
- void (* pageErase)( __FLASH_WORD wPageNum ); // ñòèðàíèå ñòðàíèöû / __flash_hal__pageErase
- void (* sectorErase)( __FLASH_WORD wSector ); // ñòèðàíèå ñåêòîðà / __flash_hal__sectorErase
- }
- data;
- struct
- {
- __FLASH_DWORD (*manufacturerIdRead)( __flash_id_t * pManufacturerID ); // ÷òåíèå èäåíòèôèêàòîðà ïðîèçâîäèòåëÿ / __flash_hal__manufacturerIdRead
- void (*uniqueIdRegisterRead)( __flash_uniqueidregister_t * contents ); // ïðî÷èòûâàåò ðåãèñòð óíèêàëüíîãî èäåíòèôèêàòîðà (UniqueID) / __flash_hal__uniqueIdRegisterRead
- bool (*uniqueIdRegisterValidate)( __flash_uniqueidregister_t * contents ); // ïðî÷èòûâàåò ðåãèñòð UniqueID è âûïîëíÿåò åãî ïðîâåðêó / __flash_hal__uniqueIdRegisterValidate
- }
- id;
- struct
- {
- flash_err_t (*startupDetect)(); // Íèçêîóðîâíåâàÿ èíèöèàëèçàöèÿ ôëåøïàìÿòè / __flash_hal__startupDetect
- flash_err_t (*initialize)(); // Íèçêîóðîâíåâàÿ èíèöèàëèçàöèÿ ôëåøïàìÿòè / __flash_hal__initialize
- flash_err_t (*finalizePrepare)(); // Íèçêîóðîâíåâàÿ ôóíêöèÿ äëÿ ïîäãîòîâêè ôëåøïàìÿòè ê äåèíèöèàëèçàöèè äðàéâåðà / __flash_hal__finalize_prepare
- flash_err_t (*dirtyDetect)(); // Íèçêîóðîâíåâîå îïðåäåëåíèå íàëè÷èÿ ÷èïà (äîñòóïíîñòè) / __flash_hal__dirtyDetect
- void * (*getBuf)( __flash_internal_buffer_type_t type, size_t * pRetBufSize ); // çàïðîñèòü âíóòðåííèé áóôåð íèçêîãî óðîâíÿ / __flash_hal__getBuffer
- }
- service;
- #if W25QXXX_POWER_MANAGEMENT > 0
- struct
- {
- void (*powerOn)(); // ðåàëèçóåò óïðàâëåíèå ïèòàíèåì ìèêðîñõåìû ïàìÿòè (ïîäàåò ïèòàíèå) / __flash_hal__power_on
- void (*powerOff)(); // ðåàëèçóåò óïðàâëåíèå ïèòàíèåì ìèêðîñõåìû ïàìÿòè (ñíèìàåò ïèòàíèå) / __flash_hal__power_off
- void (*powerPulse)( __FLASH_WORD nCooldownTime_ms, __FLASH_WORD nStartupTime_ms ); // ðåàëèçóåò óïðàâëåíèå ïèòàíèåì ìèêðîñõåìû - ôîðìèðóåò èìïóëüñ ïåðåçàãðóçêè / __flash_hal__power_pulse
- }
- power;
- #endif
- #if W25QXXX_RESET_MANAGEMENT > 0
- struct
- {
- void (*resetAssert)(); // ðåàëèçóåò óïðàâëåíèå ñèãíàëîì ñáðîñà ìèêðîñõåìû ïàìÿòè (óñòàíàâëèâàåò ñèãíàë ñáðîñà) / __flash_hal__reset_assert
- void (*resetRelease)(); // ðåàëèçóåò óïðàâëåíèå ñèãíàëîì ñáðîñà ìèêðîñõåìû ïàìÿòè (ñíèìàåò ñèãíàë ñáðîñà) / __flash_hal__reset_release
- void (*resetPulse)(); // ðåàëèçóåò óïðàâëåíèå ñèãíàëîì ñáðîñà ìèêðîñõåìû ïàìÿòè (ïîäàåò çàêîí÷åííûé èìïóëüñ ñáðîñà) / __flash_hal__reset_pulse
- }
- reset;
- #endif
- struct
- {
- flash_err_t (*getReadyFast)(); // ïðîâåðêà çàíÿòîñòè áåç îæèäàíèÿ / __flash_hal__getReadyFast
- int (*smartWaitms)( __FLASH_WORD wTimems ); // ñëóæåáíàÿ ôóíêöèÿ äëÿ ïðîâåðêè ãîòîâíîñòè ÷èïà / __flash_smartWaitms
- }
- ready;
- }
- W25Q_LL_Routines_t;
-
- extern const W25Q_LL_Routines_t W25Q_LL_Routines;
-
- // __flash_hal__getprotectstate - ïîëó÷åíèå ñîñòîÿíèÿ îáùåãî áèòà çàùèòû
- flash_err_t __flash_hal__getprotectstate( ); // [W25Q WRONG]
- // ñëóæåáíûå ôóíêöèè äîñòóïà ê ïàìÿòè äðàéâåðà
- //
- __flash_protectionregister_t * __flash_internal_getbuffer_protect();
- __FLASH_BYTE * __flash_internal_getbuffer_page();
- #else
- #error FLASH HAL: âû ïîäêëþ÷èëè çàãîëîâî÷íûé ôàéë äëÿ íèçêîóðîâíåâûõ îïåðàöèé.
- #endif
- #else
- #error FLASH HAL: ïîäêëþ÷èòå ñíà÷àëà çàãîëîâî÷íûé ôàéë W25Q16JV.h
- #endif
|