| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- // Ôàéë àïïàðàòíîé àáñòðàöèè: ôóíêöèè ñèñòåìû, SPI
- // v 1.1 îò 16/04/19
- // Àâòîð: Ñû÷åâ À.
- // ÍÅ ÒÐÅÁÓÅÒ ÌÎÄÈÔÈÊÀÖÈÈ! ñì. AT45DBXXX_import.h äëÿ ïåðåîïðåäåëåíèÿ
- #if defined(AT45DB161E_LOWLEVEL) || defined(AT45DB161E_APILEVEL)
- #ifndef AT45DBXXX_HAL_H
- #define AT45DBXXX_HAL_H
- #include "drivers\flash\base\flash_api_types.h" // òèïû
- #include "drivers\flash\at45\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 AT45DB161E_DONTUSESMARTDELAY
- #define __FLASH_SMART_WAITms(_1ms) __imp_sys_delayms(_1ms)
- #else
- #define __FLASH_SMART_WAITms(_1ms) __flash_smart_waitms(_1ms) // îæèäàíèå, â ìèëëèñåêóíäàõ ñ ïðîâåðêîé ñîñòîÿíèÿ flash.
- #endif
- #ifdef AT45DBXXX_POWER_MANAGEMENT
- #define __FLASH_POWER_ON() __imp_flash_poweron()
- #define __FLASH_POWER_OFF() __imp_flash_poweroff()
- #endif
- #ifdef AT45DBXXX_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 AT45DB161E_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
- // çà ñ÷åò èíâåðòèðîâàííîãî ïîðÿäêà áèòîâ â êîìàíäàõ ìèêðîñõåì AT45DB161E òðåáóåòñÿ ïåðåäà÷à
- // _êîìàíäû_ â îáðàòíîì ïîðÿäêå áàéò
- #define __FLASH_HAL_WRCMD(wb,cnt) __FLASH_HAL_WR_REV(wb,cnt)
- #endif
- #else
- #error FLASH HAL: âû ïîäêëþ÷èëè çàãîëîâî÷íûé ôàéë äëÿ íèçêîóðîâíåâûõ îïåðàöèé.
- #endif
|