W25Q_HAL.h 4.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. // Ôàéë àïïàðàòíîé àáñòðàöèè: ôóíêöèè ñèñòåìû, SPI
  2. // v 1.0 îò 07/10/20
  3. // Àâòîð: Ñû÷åâ À.
  4. // ÍÅ ÒÐÅÁÓÅÒ ÌÎÄÈÔÈÊÀÖÈÈ!
  5. #if defined(W25Q16JV_LOWLEVEL) || defined(W25Q16JV_APILEVEL)
  6. #ifndef W25QXXX_HAL_H
  7. #define W25QXXX_HAL_H
  8. #include "drivers\flash\base\flash_api_types.h" // òèïû
  9. #include "drivers\flash\w25q\config\W25QXXX_import.h" // ïðîãðàììíàÿ ïðîñëîéêà: ïðîòîòèïû ôóíêöèé îáìåíà ïî SSP
  10. /* óðîâåíü àïïàðàòíîé àáñòðàêöèè: ñèñòåìíûå ôóíêöèè */
  11. /* - âíóòð. ïðîöåäóðà - - ôóíêöèÿ ñèñòåìû - */
  12. //#define __FLASH_WAITns(_10ns) __imp_sys_delayns(_10ns) // îæèäàíèå, â 10êàõ íàíîñåêóíä
  13. #define __FLASH_WAITus(_1us) __imp_sys_delayus(_1us) // îæèäàíèå, â ìèêðîñåêóíäàõ
  14. #if W25QXXX_NO_MS_DELAYS == 1
  15. #define __FLASH_WAITms(_1ms) __int_sys_delayms(_1ms) // îæèäàíèå, â ìèëëèñåêóíäàõ (âíóòð. ôóíêöèÿ)
  16. #else
  17. #define __FLASH_WAITms(_1ms) __imp_sys_delayms(_1ms) // îæèäàíèå, â ìèëëèñåêóíäàõ
  18. #endif
  19. #define __FLASH_SMART_GETTIMER() __imp_sys_gettimer() //__imp_sys_gettimer() // âîçâðàùàåò êîëè÷åñòâî òèêîâ ñèñòåìû ñ ìîìåíòà çàïóñêà â ìèëëèñåêóíäàõ
  20. #define __FLASH_COPYMEMORY(dst,src,cnt) __imp_sys_memset(dst,src,cnt) // êîïèðîâàíèå áëîêà ïàìÿòè (memcpy)
  21. #define __FLASH_MOVEMEMORY(dst,src,cnt) __imp_sys_memmove(dst,src,cnt) // ïåðåìåùåíèå áëîêà ïàìÿòè (memmove)
  22. #define __FLASH_ZEROMEMORY(dst,cnt) __imp_sys_memzero(dst,cnt) // îáíóëåíèå áëîêà ïàìÿòè (memset)
  23. #define __FLASH_SETMEMORY(dst,byte,cnt) __imp_sys_memset(dst,byte,cnt) // çàïîëíåíèå áëîêà ïàìÿòè (memset)
  24. /* óðîâåíü àïïàðàòíîé àáñòðàêöèè: âñòðîåííûå ôóíêöèè */
  25. /* - âíóòð. ïðîöåäóðà - - âñòðîåííàÿ ôóíêöèÿ - */
  26. #if W25Q16JV_DONTUSESMARTDELAY
  27. #define __FLASH_SMART_WAITms(_1ms) __imp_sys_delayms(_1ms)
  28. #else
  29. #define __FLASH_SMART_WAITms(_1ms) __flash_smartWaitms(_1ms) // îæèäàíèå, â ìèëëèñåêóíäàõ ñ ïðîâåðêîé ñîñòîÿíèÿ flash.
  30. #endif
  31. #ifdef W25QXXX_POWER_MANAGEMENT
  32. #define __FLASH_POWER_ON() __imp_flash_poweron()
  33. #define __FLASH_POWER_OFF() __imp_flash_poweroff()
  34. #endif
  35. #ifdef W25QXXX_RESET_MANAGEMENT
  36. #define __FLASH_RESET_ASSERT() __imp_flash_reset_assert() // óñòàíîâèòü ñèãíàë ñáðîñà
  37. #define __FLASH_RESET_RELEASE() __imp_flash_reset_release() // ñíÿòü ñèãíàë ñáðîñà
  38. #endif
  39. #define __FLASH_LOCK() __imp_utl_mutex_lock()
  40. #define __FLASH_UNLOCK() __imp_utl_mutex_unlock()
  41. //#define __FLASH_IS_IRQ() __imp_utl_isirq_context()
  42. //#define __FLASH_IS_TSK() (!__FLASH_IS_IRQ())
  43. /* óðîâåíü àïïàðàòíîé àáñòðàêöèè: ôóíêöèè îáìåíà ïî SSP */
  44. /* - âíóòð. ïðîöåäóðà - - ïîëüç. ôóíêöèÿ SSP - */
  45. #define __FLASH_HAL_CS_HI() __imp_ssp_cshi() // #CS â ñîñòîÿíèå 1 (HiLogicLevel)
  46. #define __FLASH_HAL_CS_LO() __imp_ssp_cslo() // #CS â ñîñòîÿíèå 0 (LoLogicLevel)
  47. // __FLASH_HAL_EX: wb - write buffer ptr, rb - read buffer pointer, cnt - amount of bytes to exchange
  48. #define __FLASH_HAL_EX(wb,rb,cnt) __imp_ssp_io( (__FLASH_BYTE*)(wb),(__FLASH_BYTE*)(rb),(__FLASH_DWORD)(cnt) ) // îáìåí ïî SSP (SPI) â îáå ñòîðîíû
  49. // UPDATED: 16.04.19
  50. #ifndef __imp_ssp_ro // read-only
  51. #define __FLASH_HAL_RD(rb,cnt) __imp_ssp_io( 0,(__FLASH_BYTE*)(rb),(__FLASH_DWORD)(cnt) ) // îáìåí ïî SSP (SPI): ïðèåì îò flash-÷èïà
  52. #else
  53. #define __FLASH_HAL_RD(rb,cnt) __imp_ssp_ro( (__FLASH_BYTE*)(rb),(__FLASH_DWORD)(cnt) ) // îáìåí ïî SSP (SPI): ïðèåì îò flash-÷èïà
  54. #endif
  55. #ifndef __imp_ssp_wo // write-only
  56. #define __FLASH_HAL_WR(wb,cnt) __imp_ssp_io( (__FLASH_BYTE*)(wb),0,(__FLASH_DWORD)(cnt) ) // îáìåí ïî SSP (SPI): çàïèñü âî flash-÷èï
  57. #else
  58. #define __FLASH_HAL_WR(wb,cnt) __imp_ssp_wo( (__FLASH_BYTE*)(wb),(__FLASH_DWORD)(cnt) ) // îáìåí ïî SSP (SPI): çàïèñü âî flash-÷èï
  59. #endif
  60. #define __FLASH_HAL_WRCMD(wb,cnt) __FLASH_HAL_WR(wb,cnt)
  61. #endif
  62. #else
  63. #error FLASH HAL: âû ïîäêëþ÷èëè çàãîëîâî÷íûé ôàéë äëÿ íèçêîóðîâíåâûõ îïåðàöèé.
  64. #endif