AT45DBXXX_HAL.h 5.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. // Ôàéë àïïàðàòíîé àáñòðàöèè: ôóíêöèè ñèñòåìû, SPI
  2. // v 1.1 îò 16/04/19
  3. // Àâòîð: Ñû÷åâ À.
  4. // ÍÅ ÒÐÅÁÓÅÒ ÌÎÄÈÔÈÊÀÖÈÈ! ñì. AT45DBXXX_import.h äëÿ ïåðåîïðåäåëåíèÿ
  5. #if defined(AT45DB321D_LOWLEVEL) || defined(AT45DB321D_APILEVEL)
  6. #ifndef AT45DBXXX_HAL_H
  7. #define AT45DBXXX_HAL_H
  8. #include "drivers\flash\common\AT45DBXXX_TYP.h" // òèïû
  9. #include "drivers\flash\config\AT45DBXXX_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 AT45DBXXX_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 AT45DB321D_DONTUSESMARTDELAY
  27. #define __FLASH_SMART_WAITms(_1ms) __imp_sys_delayms(_1ms)
  28. #else
  29. #define __FLASH_SMART_WAITms(_1ms) __flash_smart_waitms(_1ms) // îæèäàíèå, â ìèëëèñåêóíäàõ ñ ïðîâåðêîé ñîñòîÿíèÿ flash.
  30. #endif
  31. #ifdef AT45DB321D_POWER_MANAGEMENT
  32. #define __FLASH_POWER_ON() __imp_flash_poweron()
  33. #define __FLASH_POWER_OFF() __imp_flash_poweroff()
  34. #endif
  35. #ifdef AT45DB321D_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. // UPDATED: 16.04.19
  61. #ifdef __imp_ssp_wo_rev // write-only
  62. #define __FLASH_HAL_WR_REV(wb,cnt) __imp_ssp_wo_rev( (__FLASH_BYTE*)(wb),(__FLASH_DWORD)(cnt) ) // çàïèñü ïî SSP (SPI): çàïèñü êîìàíäû â îáðàòíîì ïîðÿäêå ñëåäîâàíèÿ
  63. #else
  64. #ifdef __imp_ssp_io_rev
  65. #define __FLASH_HAL_WR_REV(wb,cnt) __imp_ssp_io_rev( (__FLASH_BYTE*)(wb), 0,(__FLASH_DWORD)(cnt) ) // çàïèñü ïî SSP (SPI): çàïèñü êîìàíäû â îáðàòíîì ïîðÿäêå ñëåäîâàíèÿ
  66. #else
  67. #ifdef AT45DB321D_LOWLEVEL
  68. #warning Âíèìàíèå! Ïðîèçâîäèòåëüíîñòü ñíèæåíà èç-çà îòñóòñòâèÿ ôóíêöèè ïåðåäà÷è äàííûõ ïî SPI â îáðàòíîì ïîðÿäêå!
  69. #endif
  70. #define __FLASH_HAL_WR_REV(wb,cnt) __int_ssp_io_rev( (__FLASH_BYTE*)(wb), (__FLASH_DWORD)(cnt) ) // èíâåðñèÿ ïîðÿäêà áàéò + çàïèñü ïî SSP (SPI): çàïèñü êîìàíäû
  71. #endif
  72. #endif
  73. // çà ñ÷åò èíâåðòèðîâàííîãî ïîðÿäêà áèòîâ â êîìàíäàõ ìèêðîñõåì AT45DB321D òðåáóåòñÿ ïåðåäà÷à
  74. // _êîìàíäû_ â îáðàòíîì ïîðÿäêå áàéò
  75. #define __FLASH_HAL_WRCMD(wb,cnt) __FLASH_HAL_WR_REV(wb,cnt)
  76. #endif
  77. #else
  78. #error FLASH HAL: âû ïîäêëþ÷èëè çàãîëîâî÷íûé ôàéë äëÿ íèçêîóðîâíåâûõ îïåðàöèé.
  79. #error FLASH HAL: èñïîëüçóéòå ôàéë AT45DB321_API.h
  80. #endif