| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- // Ôàéë àïïàðàòíîé àáñòðàöèè: ôóíêöèè ñèñòåìû, SPI
- // v 1.1 îò 16/04/19
- // Àâòîð: Ñû÷åâ À.
- // ÍÅ ÒÐÅÁÓÅÒ ÌÎÄÈÔÈÊÀÖÈÈ! ñì. AT45DBXXX_import.h äëÿ ïåðåîïðåäåëåíèÿ
- #if defined(AT45DB321D_LOWLEVEL) || defined(AT45DB321D_APILEVEL)
- #ifndef AT45DBXXX_HAL_H
- #define AT45DBXXX_HAL_H
-
- #include "drivers\flash\common\AT45DBXXX_TYP.h" // òèïû
- #include "drivers\flash\config\AT45DBXXX_import.h" // ïðîãðàììíàÿ ïðîñëîéêà: ïðîòîòèïû ôóíêöèé îáìåíà ïî SSP
-
- /* óðîâåíü àïïàðàòíîé àáñòðàêöèè: ñèñòåìíûå ôóíêöèè */
- /* - âíóòð. ïðîöåäóðà - - ôóíêöèÿ ñèñòåìû - */
- //#define __FLASH_WAITns(_10ns) __imp_sys_delayns(_10ns) // îæèäàíèå, â 10êàõ íàíîñåêóíä
- #define __FLASH_WAITus(_1us) __imp_sys_delayus(_1us) // îæèäàíèå, â ìèêðîñåêóíäàõ
- #if AT45DBXXX_NO_MS_DELAYS == 1
- #define __FLASH_WAITms(_1ms) __int_sys_delayms(_1ms) // îæèäàíèå, â ìèëëèñåêóíäàõ (âíóòð. ôóíêöèÿ)
- #else
- #define __FLASH_WAITms(_1ms) __imp_sys_delayms(_1ms) // îæèäàíèå, â ìèëëèñåêóíäàõ
- #endif
- #define __FLASH_SMART_GETTIMER() __imp_sys_gettimer() //__imp_sys_gettimer() // âîçâðàùàåò êîëè÷åñòâî òèêîâ ñèñòåìû ñ ìîìåíòà çàïóñêà â ìèëëèñåêóíäàõ
- #define __FLASH_COPYMEMORY(dst,src,cnt) __imp_sys_memset(dst,src,cnt) // êîïèðîâàíèå áëîêà ïàìÿòè (memcpy)
- #define __FLASH_MOVEMEMORY(dst,src,cnt) __imp_sys_memmove(dst,src,cnt) // ïåðåìåùåíèå áëîêà ïàìÿòè (memmove)
- #define __FLASH_ZEROMEMORY(dst,cnt) __imp_sys_memzero(dst,cnt) // îáíóëåíèå áëîêà ïàìÿòè (memset)
- #define __FLASH_SETMEMORY(dst,byte,cnt) __imp_sys_memset(dst,byte,cnt) // çàïîëíåíèå áëîêà ïàìÿòè (memset)
- /* óðîâåíü àïïàðàòíîé àáñòðàêöèè: âñòðîåííûå ôóíêöèè */
- /* - âíóòð. ïðîöåäóðà - - âñòðîåííàÿ ôóíêöèÿ - */
- #if AT45DB321D_DONTUSESMARTDELAY
- #define __FLASH_SMART_WAITms(_1ms) __imp_sys_delayms(_1ms)
- #else
- #define __FLASH_SMART_WAITms(_1ms) __flash_smart_waitms(_1ms) // îæèäàíèå, â ìèëëèñåêóíäàõ ñ ïðîâåðêîé ñîñòîÿíèÿ flash.
- #endif
- #ifdef AT45DB321D_POWER_MANAGEMENT
- #define __FLASH_POWER_ON() __imp_flash_poweron()
- #define __FLASH_POWER_OFF() __imp_flash_poweroff()
- #endif
- #ifdef AT45DB321D_RESET_MANAGEMENT
- #define __FLASH_RESET_ASSERT() __imp_flash_reset_assert() // óñòàíîâèòü ñèãíàë ñáðîñà
- #define __FLASH_RESET_RELEASE() __imp_flash_reset_release() // ñíÿòü ñèãíàë ñáðîñà
- #endif
- #define __FLASH_LOCK() __imp_utl_mutex_lock()
- #define __FLASH_UNLOCK() __imp_utl_mutex_unlock()
- //#define __FLASH_IS_IRQ() __imp_utl_isirq_context()
- //#define __FLASH_IS_TSK() (!__FLASH_IS_IRQ())
- /* óðîâåíü àïïàðàòíîé àáñòðàêöèè: ôóíêöèè îáìåíà ïî SSP */
- /* - âíóòð. ïðîöåäóðà - - ïîëüç. ôóíêöèÿ SSP - */
- #define __FLASH_HAL_CS_HI() __imp_ssp_cshi() // #CS â ñîñòîÿíèå 1 (HiLogicLevel)
- #define __FLASH_HAL_CS_LO() __imp_ssp_cslo() // #CS â ñîñòîÿíèå 0 (LoLogicLevel)
- // __FLASH_HAL_EX: wb - write buffer ptr, rb - read buffer pointer, cnt - amount of bytes to exchange
- #define __FLASH_HAL_EX(wb,rb,cnt) __imp_ssp_io( (__FLASH_BYTE*)(wb),(__FLASH_BYTE*)(rb),(__FLASH_DWORD)(cnt) ) // îáìåí ïî SSP (SPI) â îáå ñòîðîíû
- // UPDATED: 16.04.19
- #ifndef __imp_ssp_ro // read-only
- #define __FLASH_HAL_RD(rb,cnt) __imp_ssp_io( 0,(__FLASH_BYTE*)(rb),(__FLASH_DWORD)(cnt) ) // îáìåí ïî SSP (SPI): ïðèåì îò flash-÷èïà
- #else
- #define __FLASH_HAL_RD(rb,cnt) __imp_ssp_ro( (__FLASH_BYTE*)(rb),(__FLASH_DWORD)(cnt) ) // îáìåí ïî SSP (SPI): ïðèåì îò flash-÷èïà
- #endif
- #ifndef __imp_ssp_wo // write-only
- #define __FLASH_HAL_WR(wb,cnt) __imp_ssp_io( (__FLASH_BYTE*)(wb),0,(__FLASH_DWORD)(cnt) ) // îáìåí ïî SSP (SPI): çàïèñü âî flash-÷èï
- #else
- #define __FLASH_HAL_WR(wb,cnt) __imp_ssp_wo( (__FLASH_BYTE*)(wb),(__FLASH_DWORD)(cnt) ) // îáìåí ïî SSP (SPI): çàïèñü âî flash-÷èï
- #endif
- // UPDATED: 16.04.19
- #ifdef __imp_ssp_wo_rev // write-only
- #define __FLASH_HAL_WR_REV(wb,cnt) __imp_ssp_wo_rev( (__FLASH_BYTE*)(wb),(__FLASH_DWORD)(cnt) ) // çàïèñü ïî SSP (SPI): çàïèñü êîìàíäû â îáðàòíîì ïîðÿäêå ñëåäîâàíèÿ
- #else
- #ifdef __imp_ssp_io_rev
- #define __FLASH_HAL_WR_REV(wb,cnt) __imp_ssp_io_rev( (__FLASH_BYTE*)(wb), 0,(__FLASH_DWORD)(cnt) ) // çàïèñü ïî SSP (SPI): çàïèñü êîìàíäû â îáðàòíîì ïîðÿäêå ñëåäîâàíèÿ
- #else
- #ifdef AT45DB321D_LOWLEVEL
- #warning Âíèìàíèå! Ïðîèçâîäèòåëüíîñòü ñíèæåíà èç-çà îòñóòñòâèÿ ôóíêöèè ïåðåäà÷è äàííûõ ïî SPI â îáðàòíîì ïîðÿäêå!
- #endif
- #define __FLASH_HAL_WR_REV(wb,cnt) __int_ssp_io_rev( (__FLASH_BYTE*)(wb), (__FLASH_DWORD)(cnt) ) // èíâåðñèÿ ïîðÿäêà áàéò + çàïèñü ïî SSP (SPI): çàïèñü êîìàíäû
- #endif
- #endif
- // çà ñ÷åò èíâåðòèðîâàííîãî ïîðÿäêà áèòîâ â êîìàíäàõ ìèêðîñõåì AT45DB321D òðåáóåòñÿ ïåðåäà÷à
- // _êîìàíäû_ â îáðàòíîì ïîðÿäêå áàéò
- #define __FLASH_HAL_WRCMD(wb,cnt) __FLASH_HAL_WR_REV(wb,cnt)
- #endif
- #else
- #error FLASH HAL: âû ïîäêëþ÷èëè çàãîëîâî÷íûé ôàéë äëÿ íèçêîóðîâíåâûõ îïåðàöèé.
- #error FLASH HAL: èñïîëüçóéòå ôàéë AT45DB321_API.h
- #endif
|