W25Q16JV_LL_func.h 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. // Ôàéë ñ ïðîòîòèïàìè íèçêîóðîâíåâûõ êîììàíä äëÿ W25Q16JV.
  2. // v 1.0 îò 12/10/20
  3. // Àâòîð: Ñû÷åâ À.
  4. #ifdef W25Q16JV_H
  5. #if defined(W25Q16JV_LOWLEVEL) || defined(W25Q16JV_APILEVEL)
  6. // ¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹
  7. // ¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹ ÍÈÇÊÎÓÐÎÂÍÅÂÛÅ ÍÅÁÅÇÎÏÀÑÍÛÅ ÔÓÍÊÖÈÈ ¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹
  8. // ¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹
  9. //
  10. // ïîäðîáíåå ñì. W25QXXX_LL.c
  11. //
  12. // --------------------------------------------------------------------------------------------------------
  13. typedef struct
  14. {
  15. struct
  16. {
  17. void (* writeDisable )(); // çàïðåùåíèå êîìàíä çàïèñè / __flash_hal__writedisable
  18. void (* writeEnable )(); // ðàçðåøåíèå êîìàíä çàïèñè / __flash_hal__writeenable
  19. }
  20. operations;
  21. struct
  22. {
  23. void (* statusRead1 )( __flash_status1_t * pcReadRegister ); // ÷òåíèå ðåãèñòðà ñòàòóñà / __flash_hal__statusRead1
  24. void (* statusRead2 )( __flash_status2_t * pcReadRegister ); // ÷òåíèå ðåãèñòðà ñòàòóñà / __flash_hal__statusRead2
  25. void (* statusRead3 )( __flash_status3_t * pcReadRegister ); // ÷òåíèå ðåãèñòðà ñòàòóñà / __flash_hal__statusRead3
  26. void (* statusWrite1)( __flash_status1_t * pcReadRegister ); // çàïèñü ðåãèñòðà ñòàòóñà / __flash_hal__statusWrite1
  27. void (* statusWrite2)( __flash_status2_t * pcReadRegister ); // çàïèñü ðåãèñòðà ñòàòóñà / __flash_hal__statusWrite2
  28. void (* statusWrite3)( __flash_status3_t * pcReadRegister ); // çàïèñü ðåãèñòðà ñòàòóñà / __flash_hal__statusWrite3
  29. }
  30. status;
  31. struct
  32. {
  33. void (* securityRegister1Erase)(); // ñòèðàíèå ðåãèñòðà 1 áåçîïàñíîñòè / __flash_hal__securityRegister1Erase
  34. void (* securityRegister2Erase)(); // ñòèðàíèå ðåãèñòðà 2 áåçîïàñíîñòè / __flash_hal__securityRegister2Erase
  35. void (* securityRegister3Erase)(); // ñòèðàíèå ðåãèñòðà 3 áåçîïàñíîñòè / __flash_hal__securityRegister3Erase
  36. void (* securityRegister1Write)(__flash_securityregister_t * contents); // çàïèñü ðåãèñòðà 1 áåçîïàñíîñòè / __flash_hal__securityRegister1Write
  37. void (* securityRegister2Write)(__flash_securityregister_t * contents); // çàïèñü ðåãèñòðà 2 áåçîïàñíîñòè / __flash_hal__securityRegister2Write
  38. void (* securityRegister3Write)(__flash_securityregister_t * contents); // çàïèñü ðåãèñòðà 3 áåçîïàñíîñòè / __flash_hal__securityRegister3Write
  39. void (* securityRegister1Read)(__flash_securityregister_t * contents); // ÷òåíèå ðåãèñòðà 1 áåçîïàñíîñòè / __flash_hal__securityRegister1Read
  40. void (* securityRegister2Read)(__flash_securityregister_t * contents); // ÷òåíèå ðåãèñòðà 2 áåçîïàñíîñòè / __flash_hal__securityRegister2Read
  41. void (* securityRegister3Read)(__flash_securityregister_t * contents); // ÷òåíèå ðåãèñòðà 3 áåçîïàñíîñòè / __flash_hal__securityRegister3Read
  42. }
  43. security;
  44. struct
  45. {
  46. void (* globalLock)(); // óñòàíîâèòü áëîêèðîâêó çàïèñè íà âñå ñåêòîðà/áëîêè / __flash_hal__globalLock
  47. void (* globalUnlock)(); // ñíÿòü áëîêèðîâêó çàïèñè ñî âñåõ ñåêòîðîâ/áëîêîâ / __flash_hal__globalUnlock
  48. void (* protectStateWrite)( size_t nProtSector, bool protectState ); // çàïèñûâàåò èíäèâèäóàëüíóþ áëîêèðîâêó ñåêòîðà/áëîêà / __flash_hal__protectStateWrite
  49. bool (* protectStateRead)( size_t nProtSector ); // ñ÷èòûâàåò èíäèâèäóàëüíóþ áëîêèðîâêó ñåêòîðà/áëîêà / __flash_hal__protectStateRead
  50. }
  51. protection;
  52. struct
  53. {
  54. void (* sleepMode)(); // ïåðåõîä â ðåæèì ýíåðãîñáåðåæåíèÿ / __flash_hal__sleepMode
  55. void (* wakeUp)(); // âûõîä èç ðåæèìà ýíåðãîñáåðåæåíèÿ / __flash_hal__wakeUp
  56. }
  57. sleep;
  58. struct
  59. {
  60. void (* arrayRead)( __FLASH_DWORD w24Address, __FLASH_BYTE * pDataRead, __FLASH_WORD wCntToRead ); // ïîñëåäîâàòåëüíîå ÷òåíèå (ìàññèâ) / __flash_hal__arrayRead
  61. void (* chunkProgram)( __flash_pageprogramptr_t pdata, __FLASH_DWORD w24Address); // ïðîãðàììèðîâàíèå ñòðàíèöû áåç ñòèðàíèÿ áëîêà/ñòðàíèöû / __flash_hal__chunkProgram
  62. void (* pageErase)( __FLASH_WORD wPageNum ); // ñòèðàíèå ñòðàíèöû / __flash_hal__pageErase
  63. void (* sectorErase)( __FLASH_WORD wSector ); // ñòèðàíèå ñåêòîðà / __flash_hal__sectorErase
  64. }
  65. data;
  66. struct
  67. {
  68. __FLASH_DWORD (*manufacturerIdRead)( __flash_id_t * pManufacturerID ); // ÷òåíèå èäåíòèôèêàòîðà ïðîèçâîäèòåëÿ / __flash_hal__manufacturerIdRead
  69. void (*uniqueIdRegisterRead)( __flash_uniqueidregister_t * contents ); // ïðî÷èòûâàåò ðåãèñòð óíèêàëüíîãî èäåíòèôèêàòîðà (UniqueID) / __flash_hal__uniqueIdRegisterRead
  70. bool (*uniqueIdRegisterValidate)( __flash_uniqueidregister_t * contents ); // ïðî÷èòûâàåò ðåãèñòð UniqueID è âûïîëíÿåò åãî ïðîâåðêó / __flash_hal__uniqueIdRegisterValidate
  71. }
  72. id;
  73. struct
  74. {
  75. flash_err_t (*startupDetect)(); // Íèçêîóðîâíåâàÿ èíèöèàëèçàöèÿ ôëåøïàìÿòè / __flash_hal__startupDetect
  76. flash_err_t (*initialize)(); // Íèçêîóðîâíåâàÿ èíèöèàëèçàöèÿ ôëåøïàìÿòè / __flash_hal__initialize
  77. flash_err_t (*finalizePrepare)(); // Íèçêîóðîâíåâàÿ ôóíêöèÿ äëÿ ïîäãîòîâêè ôëåøïàìÿòè ê äåèíèöèàëèçàöèè äðàéâåðà / __flash_hal__finalize_prepare
  78. flash_err_t (*dirtyDetect)(); // Íèçêîóðîâíåâîå îïðåäåëåíèå íàëè÷èÿ ÷èïà (äîñòóïíîñòè) / __flash_hal__dirtyDetect
  79. void * (*getBuf)( __flash_internal_buffer_type_t type, size_t * pRetBufSize ); // çàïðîñèòü âíóòðåííèé áóôåð íèçêîãî óðîâíÿ / __flash_hal__getBuffer
  80. }
  81. service;
  82. #if W25QXXX_POWER_MANAGEMENT > 0
  83. struct
  84. {
  85. void (*powerOn)(); // ðåàëèçóåò óïðàâëåíèå ïèòàíèåì ìèêðîñõåìû ïàìÿòè (ïîäàåò ïèòàíèå) / __flash_hal__power_on
  86. void (*powerOff)(); // ðåàëèçóåò óïðàâëåíèå ïèòàíèåì ìèêðîñõåìû ïàìÿòè (ñíèìàåò ïèòàíèå) / __flash_hal__power_off
  87. void (*powerPulse)( __FLASH_WORD nCooldownTime_ms, __FLASH_WORD nStartupTime_ms ); // ðåàëèçóåò óïðàâëåíèå ïèòàíèåì ìèêðîñõåìû - ôîðìèðóåò èìïóëüñ ïåðåçàãðóçêè / __flash_hal__power_pulse
  88. }
  89. power;
  90. #endif
  91. #if W25QXXX_RESET_MANAGEMENT > 0
  92. struct
  93. {
  94. void (*resetAssert)(); // ðåàëèçóåò óïðàâëåíèå ñèãíàëîì ñáðîñà ìèêðîñõåìû ïàìÿòè (óñòàíàâëèâàåò ñèãíàë ñáðîñà) / __flash_hal__reset_assert
  95. void (*resetRelease)(); // ðåàëèçóåò óïðàâëåíèå ñèãíàëîì ñáðîñà ìèêðîñõåìû ïàìÿòè (ñíèìàåò ñèãíàë ñáðîñà) / __flash_hal__reset_release
  96. void (*resetPulse)(); // ðåàëèçóåò óïðàâëåíèå ñèãíàëîì ñáðîñà ìèêðîñõåìû ïàìÿòè (ïîäàåò çàêîí÷åííûé èìïóëüñ ñáðîñà) / __flash_hal__reset_pulse
  97. }
  98. reset;
  99. #endif
  100. struct
  101. {
  102. flash_err_t (*getReadyFast)(); // ïðîâåðêà çàíÿòîñòè áåç îæèäàíèÿ / __flash_hal__getReadyFast
  103. int (*smartWaitms)( __FLASH_WORD wTimems ); // ñëóæåáíàÿ ôóíêöèÿ äëÿ ïðîâåðêè ãîòîâíîñòè ÷èïà / __flash_smartWaitms
  104. }
  105. ready;
  106. }
  107. W25Q_LL_Routines_t;
  108. extern const W25Q_LL_Routines_t W25Q_LL_Routines;
  109. // __flash_hal__getprotectstate - ïîëó÷åíèå ñîñòîÿíèÿ îáùåãî áèòà çàùèòû
  110. flash_err_t __flash_hal__getprotectstate( ); // [W25Q WRONG]
  111. // ñëóæåáíûå ôóíêöèè äîñòóïà ê ïàìÿòè äðàéâåðà
  112. //
  113. __flash_protectionregister_t * __flash_internal_getbuffer_protect();
  114. __FLASH_BYTE * __flash_internal_getbuffer_page();
  115. #else
  116. #error FLASH HAL: âû ïîäêëþ÷èëè çàãîëîâî÷íûé ôàéë äëÿ íèçêîóðîâíåâûõ îïåðàöèé.
  117. #endif
  118. #else
  119. #error FLASH HAL: ïîäêëþ÷èòå ñíà÷àëà çàãîëîâî÷íûé ôàéë W25Q16JV.h
  120. #endif