AT45DB321D_LL_func.h 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271
  1. // Файл с прототипами низкоуровневых комманд для AT45DB321D.
  2. // v 1.12 от 21/07/15
  3. // Автор: Сычев А.
  4. #ifdef AT45DB321D_H
  5. #if defined(AT45DB321D_LOWLEVEL) || defined(AT45DB321D_APILEVEL)
  6. // №№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№
  7. // №№№№№№№№№№№№№№№№№№№№№№ НИЗКОУРОВНЕВЫЕ НЕБЕЗОПАСНЫЕ ФУНКЦИИ №№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№
  8. // №№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№№
  9. //
  10. // подробнее см. AT45DBXXX_LL.c
  11. //
  12. // __flash_hal__statusread - чтение регистра статуса
  13. void __flash_hal__statusread( __flash_status_t * pcReadRegister // буфер для чтения статус-регистра
  14. );
  15. // __flash_hal__page_read - чтение одной страницы
  16. void __flash_hal__page_read( __FLASH_WORD wPageNum, // номер страницы для чтения
  17. __FLASH_WORD wPageOfs, // адрес начала чтения в странице
  18. __FLASH_BYTE * pDataRead, // указатель на буфер-приемник данных
  19. __FLASH_WORD wCntToRead ); // количество данных на чтение
  20. // __flash_hal__array_read - последовательное чтение (массив)
  21. // * недоступна в режиме программной эмуляции 512-байтных страниц (AT45DB321D_EMU512)
  22. void __flash_hal__array_read ( __FLASH_WORD wPageNum, // номер начальной страницы для чтения
  23. __FLASH_WORD wPageOfs, // адрес начала чтения в начальной странице
  24. __FLASH_BYTE * pDataRead, // указатель на буфер-приемник данных
  25. __FLASH_WORD wCntToRead ); // количество данных на чтение
  26. // __flash_hal__use512page - сконфигурировать чип на работу со стандартной страницей 512 байт
  27. // # НАВСЕГДА изменяет размер страницы!
  28. // * недоступна в режиме программной эмуляции 512-байтных страниц (AT45DB321D_EMU512)
  29. void __flash_hal__use512page();
  30. // __flash_hal__buffer1_read - чтение буфера 1 (up to 66 MHz)
  31. void __flash_hal__buffer1_read( __FLASH_WORD wBuffOfs, // адрес начала чтения в буфере
  32. __FLASH_BYTE * pDataRead, // указатель на буфер-приемник данных
  33. __FLASH_WORD wCntToRead ); // количество данных на чтение
  34. // __flash_hal__buffer2_read - чтение буфера 2 (up to 66 MHz)
  35. void __flash_hal__buffer2_read( __FLASH_WORD wBuffOfs, // адрес начала чтения в буфере
  36. __FLASH_BYTE * pDataRead, // указатель на буфер-приемник данных
  37. __FLASH_WORD wCntToRead ); // количество данных на чтение
  38. // __flash_hal__buffer1_read_slow - чтение буфера 1 (up to 33 MHz)
  39. void __flash_hal__buffer1_read_slow( __FLASH_WORD wBuffOfs, // адрес начала чтения в буфере
  40. __FLASH_BYTE * pDataRead, // указатель на буфер-приемник данных
  41. __FLASH_WORD wCntToRead ); // количество данных на чтение
  42. // __flash_hal__buffer2_read_slow - чтение буфера 2 (up to 33 MHz)
  43. void __flash_hal__buffer2_read_slow( __FLASH_WORD wBuffOfs, // адрес начала чтения в буфере
  44. __FLASH_BYTE * pDataRead, // указатель на буфер-приемник данных
  45. __FLASH_WORD wCntToRead ); // количество данных на чтение
  46. // __flash_hal__buffer1_write - запись буфера 1
  47. void __flash_hal__buffer1_write( __FLASH_WORD wBuffOfs, // адрес начала записи в буфере-приемнике (чип)
  48. __FLASH_BYTE * pDataWrite, // указатель на буфер-источник данных
  49. __FLASH_WORD wCntToWrite ); // количество данных на запись
  50. // __flash_hal__buffer2_write - запись буфера 2
  51. void __flash_hal__buffer2_write( __FLASH_WORD wBuffOfs, // адрес начала записи в буфере-приемнике (чип)
  52. __FLASH_BYTE * pDataWrite, // указатель на буфер-источник данных
  53. __FLASH_WORD wCntToWrite ); // количество данных на запись
  54. // __flash_hal__buffer1_program - программирование буфера 1 в страницу со стиранием
  55. void __flash_hal__buffer1_program( __FLASH_WORD wPageNum // номер страницы, куда произвести программирование
  56. );
  57. // __flash_hal__buffer2_program - программирование буфера 2 в страницу со стиранием
  58. void __flash_hal__buffer2_program( __FLASH_WORD wPageNum // номер страницы, куда произвести программирование
  59. );
  60. // __flash_hal__buffer1_program_wo_erase - программирование буфера 1 в страницу без стирания
  61. void __flash_hal__buffer1_program_wo_erase( __FLASH_WORD wPageNum // номер страницы, куда произвести программирование
  62. );
  63. // __flash_hal__buffer2_program_wo_erase - программирование буфера 2 в страницу без стирания
  64. void __flash_hal__buffer2_program_wo_erase( __FLASH_WORD wPageNum // номер страницы, куда произвести программирование
  65. );
  66. // __flash_hal__page_erase - стирание страницы
  67. void __flash_hal__page_erase( __FLASH_WORD wPageNum // номер стираемой страницы
  68. );
  69. // __flash_hal__block_erase - стирание блока
  70. void __flash_hal__block_erase( __FLASH_WORD wBlockNum // номер стираемого блока
  71. );
  72. // __flash_hal__sector0_erase - стирание секторов 0a и 0b
  73. void __flash_hal__sector0_erase( __FLASH_WORD wSubSector // номер подсектора 0 или 1
  74. );
  75. // __flash_hal__sector_erase - стирание секторов с номером 1 и выше
  76. void __flash_hal__sector_erase( __FLASH_WORD wSector // номер сектора 1-63
  77. );
  78. // __flash_hal__page_write_via_buffer1 - запись страницы через буфер 1
  79. void __flash_hal__page_write_via_buffer1( __FLASH_WORD wBuffOfs, // адрес начала записи в буфере-приемнике (чип)
  80. __FLASH_BYTE * pDataWrite, // указатель на буфер-источник данных
  81. __FLASH_WORD wCntToWrite, // количество данных на запись
  82. __FLASH_WORD wPageNum // номер страницы, куда произвести программирование
  83. );
  84. // __flash_hal__page_write_via_buffer2 - запись страницы через буфер 2
  85. void __flash_hal__page_write_via_buffer2( __FLASH_WORD wBuffOfs, // адрес начала записи в буфере-приемнике (чип)
  86. __FLASH_BYTE * pDataWrite, // указатель на буфер-источник данных
  87. __FLASH_WORD wCntToWrite, // количество данных на запись
  88. __FLASH_WORD wPageNum // номер страницы, куда произвести программирование
  89. );
  90. // __flash_hal__pagetobuffer1 - загрузка содержимого страницы в буфер 1
  91. void __flash_hal__pagetobuffer1( __FLASH_WORD wPageNum // номер страницы для загрузки
  92. );
  93. // __flash_hal__pagetobuffer2 - загрузка содержимого страницы в буфер 2
  94. void __flash_hal__pagetobuffer2( __FLASH_WORD wPageNum // номер страницы для загрузки
  95. );
  96. // __flash_hal__pagetobuffer1 - сравнение содержимого страницы с буфером 1
  97. void __flash_hal__buffer1_compare( __FLASH_WORD wPageNum // номер страницы для сравнения
  98. );
  99. // __flash_hal__pagetobuffer2 - сравнение содержимого страницы с буфером 2
  100. void __flash_hal__buffer2_compare( __FLASH_WORD wPageNum // номер страницы для сравнения
  101. );
  102. // __flash_hal__autopagerewrite - обновление страницы через буфер 1
  103. void __flash_hal__autopagerewrite1( __FLASH_WORD wPageNum // номер обновляемой страницы
  104. );
  105. // __flash_hal__autopagerewrite - обновление страницы через буфер 2
  106. void __flash_hal__autopagerewrite2( __FLASH_WORD wPageNum // номер обновляемой страницы
  107. );
  108. // __flash_hal__sleepmode - переход в режим пониженного энергопотребления
  109. // # переводит устройство в режим, когда все команды, кроме __flash_hal__wakeup игнорируются
  110. void __flash_hal__sleepmode();
  111. // __flash_hal__wakeup - выход из режима пониженного энергопотребления
  112. // # выводит устройство из режима, когда все команды, кроме __flash_hal__wakeup игнорируются
  113. void __flash_hal__wakeup();
  114. // __flash_hal__manufactureridread - чтение идентификатора производителя
  115. // * возвращаемое значение - первые 4 байта структуры __flash_id_t
  116. __FLASH_DWORD __flash_hal__manufactureridread( __flash_id_t * pManufacturerID // необязательный параметр-буфер для приема расширенной информации
  117. );
  118. // __flash_hal__writeprotect_enable - включить программную защиту от записи/стирания
  119. void __flash_hal__writeprotect_enable();
  120. // __flash_hal__writeprotect_disable - выключить программную защиту от записи/стирания
  121. void __flash_hal__writeprotect_disable();
  122. // __flash_hal__protectregister_erase - стирает регистр защиты, помечая ВСЕ сектора как защищенные
  123. // # если включена программная защита от записи, все операции стирания/записи для всех секторов будут заблокированы до ее отключения
  124. void __flash_hal__protectregister_erase();
  125. // __flash_hal__protectregister_write - записывает регистр защиты
  126. void __flash_hal__protectregister_write( __flash_protectionregister_t * contents // содержимое регистра защиты для записи
  127. );
  128. // __flash_hal__protectregister_read - прочитывает регистр защиты
  129. void __flash_hal__protectregister_read( __flash_protectionregister_t * contents // буфер-приемник содержимого регистра защиты
  130. );
  131. // __flash_hal__sectorlockdown - постоянная блокировка сектора от записи/стирания
  132. void __flash_hal__sectorlockdown( __FLASH_DWORD address // адрес внутри блокируемого сектора
  133. );
  134. // __flash_hal__lockdownregister_read - прочитывает регистр блокировки
  135. void __flash_hal__lockdownregister_read( __flash_lockdownregister_t * contents // буфер-приемник содержимого регистра блокировки
  136. );
  137. // __flash_hal__securityregister_write - записывает регистр безопасности
  138. // * записывает только ПОЛЬЗОВАТЕЛЬСКУЮ часть
  139. // # РЕГИСТР БЕЗОПАСНОСТИ МОЖЕТ БЫТЬ ЗАПИСАН ТОЛЬКО ОДИН РАЗ!
  140. void __flash_hal__securityregister_write( __flash_usersecurityregister_t * contents // содержимое регистра безопасности (часть, доступная для записи пользователю)
  141. );
  142. // __flash_hal__securityregister_read - прочитывает регистр безопасности
  143. void __flash_hal__securityregister_read( __flash_securityregister_t * contents // буфер-приемник содержимого регистра блокировки
  144. );
  145. // __flash_hal__securityregister_validate - прочитывает регистр безопасности и выполняет
  146. // проверку осмысленности прочитанного заводского идентификатора.
  147. bool __flash_hal__securityregister_validate( __flash_securityregister_t * contents // буфер-приемник содержимого регистра блокировки
  148. );
  149. // __flash_hal__getprotectstate - получение состояния общего бита защиты
  150. flash_err_t __flash_hal__getprotectstate( );
  151. // __flash_hal__getreadyfast - проверка занятости без ожидания
  152. flash_err_t __flash_hal__getreadyfast( );
  153. // __flash_hal__getcompareresult - проверка результата сравнения (бит COMP / bMismatch)
  154. flash_err_t __flash_hal__getcompareresult( );
  155. // __flash_hal__initialize - Низкоуровневая инициализация флешпамяти );
  156. // # возвращает 0, если все успешно, или код ошибки
  157. flash_err_t __flash_hal__initialize();
  158. // __flash_hal__detect - Низкоуровневое определение наличия чипа (доступности)
  159. // Используется во время первичной инициализации в flash_initialize().
  160. flash_err_t __flash_hal__detect();
  161. // служебные функции доступа к памяти драйвера
  162. //
  163. __flash_protectionregister_t * __flash_internal_getbuffer_protect();
  164. __FLASH_BYTE * __flash_internal_getbuffer_page();
  165. // служебная функция для проверки готовности чипа
  166. int __flash_smart_waitms( __FLASH_WORD wTimems );
  167. #if AT45DB321D_POWER_MANAGEMENT > 0
  168. // __flash_hal__power_on - реализует управление питанием микросхемы памяти (подает питание)
  169. void __flash_hal__power_on();
  170. // __flash_hal__power_off - реализует управление питанием микросхемы памяти (снимает питание)
  171. void __flash_hal__power_off();
  172. // __flash_hal__power_pulse - реализует управление питанием микросхемы - формирует импульс перезагрузки
  173. void __flash_hal__power_pulse( __FLASH_WORD nCooldownTime_ms, __FLASH_WORD nStartupTime_ms );
  174. #endif
  175. #if AT45DB321D_RESET_MANAGEMENT > 0
  176. // __flash_hal__reset_assert - реализует управление сигналом сброса микросхемы памяти (устанавливает сигнал сброса)
  177. void __flash_hal__reset_assert();
  178. // __flash_hal__reset_release - реализует управление сигналом сброса микросхемы памяти (снимает сигнал сброса)
  179. void __flash_hal__reset_release();
  180. // __flash_hal__reset_pulse - реализует управление сигналом сброса микросхемы памяти (подает законченный импульс сброса)
  181. void __flash_hal__reset_pulse();
  182. #endif
  183. // __flash_hal__finalize_prepare - Низкоуровневая функция для подготовки флешпамяти к деинициализации драйвера
  184. flash_err_t __flash_hal__finalize_prepare();
  185. #else
  186. #error FLASH HAL: вы подключили заголовочный файл для низкоуровневых операций.
  187. #error FLASH HAL: используйте файл AT45DB321_API.h
  188. #endif
  189. #else
  190. #error FLASH HAL: подключите сначала заголовочный файл AT45DB321.h
  191. #endif