AT45DB161E_LL.h 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697
  1. // Ôàéë ñ îïðåäåëåíèÿìè ôîðìàòîâ ïàêåòîâ íèçêîóðîâíåâûõ êîììàíäàìè äëÿ AT45DB161E.
  2. // v 1.0 îò 16/07/15
  3. // Àâòîð: Ñû÷åâ À.
  4. #ifndef AT45DB161E_LL_H
  5. #define AT45DB161E_LL_H
  6. #if (!defined(AT45DB161E_LOWLEVEL) && !defined(AT45DB161E_APILEVEL))
  7. #error FLASH HAL: âû ïîäêëþ÷èëè çàãîëîâî÷íûé ôàéë äëÿ íèçêîóðîâíåâûõ îïåðàöèé.
  8. #endif
  9. #if (defined(AT45DB161E_LOWLEVEL) || defined(AT45DB161E_APILEVEL))
  10. #include "drivers\flash\base\flash_api_types.h"
  11. #include "drivers\flash\at45\lowlevel\AT45DB161E_GLOB.h" // îïðåäåëåíèÿ äëÿ AT45DB161E
  12. __flash_protectionregister_t * __flash_internal_getbuffer_protect();
  13. //__FLASH_BYTE * __flash_internal_getbuffer_page();
  14. #endif
  15. #ifdef AT45DB161E_LOWLEVEL
  16. //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
  17. #pragma pack( push, 1 )
  18. typedef struct
  19. {
  20. __FLASH_DWORD opcode : 8; // êîìàíäà ×ÒÅÍÈÅ ÑÒÐÀÍÈÖÛ
  21. #ifdef AT45DB161E_PRM512
  22. __FLASH_DWORD __reserved : 2; // don't care bit (ðåæèì 512)
  23. #else
  24. __FLASH_DWORD __reserved : 1; // don't care bit (ðåæèì 528)
  25. #endif
  26. __FLASH_DWORD page : 13; // íîìåð ñòðàíèöû
  27. #ifdef AT45DB161E_PRM512
  28. __FLASH_DWORD offset : 9; // ñìåùåíèå â ñòðàíèöå (ðåæèì 512)
  29. #else
  30. __FLASH_DWORD offset : 10; // ñìåùåíèå â ñòðàíèöå (ðåæèì 528)
  31. #endif
  32. __FLASH_DWORD __reserved2; // îáÿçàòåëüíûå don't care bytes
  33. }
  34. __flash_packet_pageread_direct_t;
  35. typedef struct
  36. {
  37. __FLASH_DWORD __reserved2; // îáÿçàòåëüíûå don't care bytes
  38. #ifdef AT45DB161E_PRM512
  39. __FLASH_DWORD offset : 9; // ñìåùåíèå â ñòðàíèöå (ðåæèì 512)
  40. #else
  41. __FLASH_DWORD offset : 10; // ñìåùåíèå â ñòðàíèöå (ðåæèì 528)
  42. #endif
  43. __FLASH_DWORD page : 13; // íîìåð ñòðàíèöû
  44. #ifdef AT45DB161E_PRM512
  45. __FLASH_DWORD __reserved : 2; // don't care bit (ðåæèì 512)
  46. #else
  47. __FLASH_DWORD __reserved : 1; // don't care bit (ðåæèì 528)
  48. #endif
  49. __FLASH_DWORD opcode : 8; // êîìàíäà ×ÒÅÍÈÅ ÑÒÐÀÍÈÖÛ
  50. }
  51. __flash_packet_pageread_t;
  52. #pragma pack( pop )
  53. //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
  54. #ifdef AT45DB161E_PRM512
  55. #pragma pack( push, 1 )
  56. typedef struct
  57. {
  58. __FLASH_DWORD opcode; // êîìàíäà ÏÐÎÃÐÀÌÌÈÐÎÂÀÍÈÅ ÊÎÍÔÈÃÓÐÀÖÈÎÍÍÎÃÎ ÐÅÃÈÑÒÐÀ
  59. }
  60. __flash_packet_pagecnfg_t;
  61. #pragma pack( pop )
  62. #endif
  63. //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
  64. #ifndef AT45DB161E_EMU512
  65. #pragma pack( push, 1 )
  66. typedef struct
  67. {
  68. __FLASH_DWORD __reserved2; // îáÿçàòåëüíûå don't care bytes
  69. #ifdef AT45DB161E_PRM512
  70. __FLASH_DWORD offset : 9; // ñìåùåíèå â ñòðàíèöå (ðåæèì 512)
  71. #else
  72. __FLASH_DWORD offset : 10; // ñìåùåíèå â ñòðàíèöå (ðåæèì 528)
  73. #endif
  74. __FLASH_DWORD page : 13; // íîìåð ñòðàíèöû
  75. #ifdef AT45DB161E_PRM512
  76. __FLASH_DWORD __reserved : 2; // don't care bit (ðåæèì 512)
  77. #else
  78. __FLASH_DWORD __reserved : 1; // don't care bit (ðåæèì 528)
  79. #endif
  80. __FLASH_DWORD opcode : 8; // êîìàíäà ÏÎÑËÅÄÎÂÀÒÅËÜÍÎÅ ×ÒÅÍÈÅ
  81. }
  82. __flash_packet_arrayread_t;
  83. typedef struct
  84. {
  85. __FLASH_DWORD opcode : 8; // êîìàíäà ÏÎÑËÅÄÎÂÀÒÅËÜÍÎÅ ×ÒÅÍÈÅ
  86. #ifdef AT45DB161E_PRM512
  87. __FLASH_DWORD __reserved : 2; // don't care bit (ðåæèì 512)
  88. #else
  89. __FLASH_DWORD __reserved : 1; // don't care bit (ðåæèì 528)
  90. #endif
  91. __FLASH_DWORD page : 13; // íîìåð ñòðàíèöû
  92. #ifdef AT45DB161E_PRM512
  93. __FLASH_DWORD offset : 9; // ñìåùåíèå â ñòðàíèöå (ðåæèì 512)
  94. #else
  95. __FLASH_DWORD offset : 10; // ñìåùåíèå â ñòðàíèöå (ðåæèì 528)
  96. #endif
  97. __FLASH_DWORD __reserved2; // îáÿçàòåëüíûå don't care bytes
  98. }
  99. __flash_packet_arrayread_direct_t;
  100. #pragma pack( pop )
  101. #endif
  102. //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
  103. #pragma pack( push, 1 )
  104. typedef struct
  105. {
  106. #ifdef AT45DB161E_PRM512
  107. __FLASH_DWORD offset : 9; // ñìåùåíèå â ñòðàíèöå (ðåæèì 512)
  108. #else
  109. __FLASH_DWORD offset : 10; // ñìåùåíèå â ñòðàíèöå (ðåæèì 528)
  110. #endif
  111. #ifdef AT45DB161E_PRM512
  112. __FLASH_DWORD __reserved : 15; // don't care bit (ðåæèì 512)
  113. #else
  114. __FLASH_DWORD __reserved : 14; // don't care bit (ðåæèì 528)
  115. #endif
  116. __FLASH_DWORD opcode : 8; // êîìàíäà ×ÒÅÍÈÅ ÁÓÔÅÐÀ
  117. }
  118. __flash_packet_bufferread_slow_t; // up to 33MHz
  119. typedef struct
  120. {
  121. __FLASH_DWORD opcode : 8; // êîìàíäà ×ÒÅÍÈÅ ÁÓÔÅÐÀ
  122. #ifdef AT45DB161E_PRM512
  123. __FLASH_DWORD __reserved : 15; // don't care bit (ðåæèì 512)
  124. #else
  125. __FLASH_DWORD __reserved : 14; // don't care bit (ðåæèì 528)
  126. #endif
  127. #ifdef AT45DB161E_PRM512
  128. __FLASH_DWORD offset : 9; // ñìåùåíèå â ñòðàíèöå (ðåæèì 512)
  129. #else
  130. __FLASH_DWORD offset : 10; // ñìåùåíèå â ñòðàíèöå (ðåæèì 528)
  131. #endif
  132. }
  133. __flash_packet_bufferread_slow_direct_t; // up to 33MHz
  134. #pragma pack( pop )
  135. //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
  136. #pragma pack( push, 1 )
  137. typedef struct
  138. {
  139. __FLASH_BYTE __reserved2; // îáÿçàòåëüíûé don't care byte
  140. #ifdef AT45DB161E_PRM512
  141. __FLASH_DWORD offset : 9; // ñìåùåíèå â ñòðàíèöå (ðåæèì 512)
  142. #else
  143. __FLASH_DWORD offset : 10; // ñìåùåíèå â ñòðàíèöå (ðåæèì 528)
  144. #endif
  145. #ifdef AT45DB161E_PRM512
  146. __FLASH_DWORD __reserved : 15; // don't care bit (ðåæèì 512)
  147. #else
  148. __FLASH_DWORD __reserved : 14; // don't care bit (ðåæèì 528)
  149. #endif
  150. __FLASH_DWORD opcode : 8; // êîìàíäà ×ÒÅÍÈÅ ÁÓÔÅÐÀ
  151. }
  152. __flash_packet_bufferread_fast_t; // up to 66MHz
  153. typedef struct
  154. {
  155. __FLASH_DWORD opcode : 8; // êîìàíäà ×ÒÅÍÈÅ ÁÓÔÅÐÀ
  156. #ifdef AT45DB161E_PRM512
  157. __FLASH_DWORD __reserved : 15; // don't care bit (ðåæèì 512)
  158. #else
  159. __FLASH_DWORD __reserved : 14; // don't care bit (ðåæèì 528)
  160. #endif
  161. #ifdef AT45DB161E_PRM512
  162. __FLASH_DWORD offset : 9; // ñìåùåíèå â ñòðàíèöå (ðåæèì 512)
  163. #else
  164. __FLASH_DWORD offset : 10; // ñìåùåíèå â ñòðàíèöå (ðåæèì 528)
  165. #endif
  166. __FLASH_BYTE __reserved2; // îáÿçàòåëüíûé don't care byte
  167. }
  168. __flash_packet_bufferread_fast_direct_t; // up to 66MHz
  169. #pragma pack( pop )
  170. //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
  171. #pragma pack( push, 1 )
  172. typedef struct
  173. {
  174. #ifdef AT45DB161E_PRM512
  175. __FLASH_DWORD offset : 9; // ñìåùåíèå â ñòðàíèöå (ðåæèì 512)
  176. #else
  177. __FLASH_DWORD offset : 10; // ñìåùåíèå â ñòðàíèöå (ðåæèì 528)
  178. #endif
  179. #ifdef AT45DB161E_PRM512
  180. __FLASH_DWORD __reserved : 15; // don't care bits (ðåæèì 512)
  181. #else
  182. __FLASH_DWORD __reserved : 14; // don't care bits (ðåæèì 528)
  183. #endif
  184. __FLASH_DWORD opcode : 8; // êîìàíäà ÇÀÏÈÑÜ ÁÓÔÅÐÀ
  185. }
  186. __flash_packet_bufferwrite_t;
  187. typedef struct
  188. {
  189. __FLASH_DWORD opcode : 8; // êîìàíäà ÇÀÏÈÑÜ ÁÓÔÅÐÀ
  190. #ifdef AT45DB161E_PRM512
  191. __FLASH_DWORD __reserved : 15; // don't care bits (ðåæèì 512)
  192. #else
  193. __FLASH_DWORD __reserved : 14; // don't care bits (ðåæèì 528)
  194. #endif
  195. #ifdef AT45DB161E_PRM512
  196. __FLASH_DWORD offset : 9; // ñìåùåíèå â ñòðàíèöå (ðåæèì 512)
  197. #else
  198. __FLASH_DWORD offset : 10; // ñìåùåíèå â ñòðàíèöå (ðåæèì 528)
  199. #endif
  200. }
  201. __flash_packet_bufferwrite_direct_t;
  202. #pragma pack( pop )
  203. //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
  204. #pragma pack( push, 1 )
  205. typedef struct
  206. {
  207. #ifdef AT45DB161E_PRM512
  208. __FLASH_DWORD __reserved2: 9; // don't care bits (ðåæèì 512)
  209. #else
  210. __FLASH_DWORD __reserved2: 10; // don't care bits (ðåæèì 528)
  211. #endif
  212. __FLASH_DWORD page : 13; // íîìåð ñòðàíèöû äëÿ çàïèñè
  213. #ifdef AT45DB161E_PRM512
  214. __FLASH_DWORD __reserved : 2; // don't care bit (ðåæèì 512)
  215. #else
  216. __FLASH_DWORD __reserved : 1; // don't care bit (ðåæèì 528)
  217. #endif
  218. __FLASH_DWORD opcode : 8; // êîìàíäà ÏÐÎÃÐÀÌÌÈÐÎÂÀÍÈÅ ÁÓÔÅÐÀ
  219. }
  220. __flash_packet_bufferprogram_t;
  221. typedef struct
  222. {
  223. __FLASH_DWORD opcode : 8; // êîìàíäà ÏÐÎÃÐÀÌÌÈÐÎÂÀÍÈÅ ÁÓÔÅÐÀ
  224. #ifdef AT45DB161E_PRM512
  225. __FLASH_DWORD __reserved : 2; // don't care bit (ðåæèì 512)
  226. #else
  227. __FLASH_DWORD __reserved : 1; // don't care bit (ðåæèì 528)
  228. #endif
  229. __FLASH_DWORD page : 13; // íîìåð ñòðàíèöû äëÿ çàïèñè
  230. #ifdef AT45DB161E_PRM512
  231. __FLASH_DWORD __reserved2: 9; // don't care bits (ðåæèì 512)
  232. #else
  233. __FLASH_DWORD __reserved2: 10; // don't care bits (ðåæèì 528)
  234. #endif
  235. }
  236. __flash_packet_bufferprogram_direct_t;
  237. #pragma pack( pop )
  238. //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
  239. #pragma pack( push, 1 )
  240. typedef struct
  241. {
  242. #ifdef AT45DB161E_PRM512
  243. __FLASH_DWORD __reserved2: 9; // don't care bits (ðåæèì 512)
  244. #else
  245. __FLASH_DWORD __reserved2: 10; // don't care bits (ðåæèì 528)
  246. #endif
  247. __FLASH_DWORD page : 13; // íîìåð ñòðàíèöû äëÿ çàïèñè
  248. #ifdef AT45DB161E_PRM512
  249. __FLASH_DWORD __reserved : 2; // don't care bit (ðåæèì 512)
  250. #else
  251. __FLASH_DWORD __reserved : 1; // don't care bit (ðåæèì 528)
  252. #endif
  253. __FLASH_DWORD opcode : 8; // êîìàíäà ÑÒÈÐÀÍÈÅ ÑÒÐÀÍÈÖÛ
  254. }
  255. __flash_packet_pageerase_t;
  256. typedef struct
  257. {
  258. __FLASH_DWORD opcode : 8; // êîìàíäà ÑÒÈÐÀÍÈÅ ÑÒÐÀÍÈÖÛ
  259. #ifdef AT45DB161E_PRM512
  260. __FLASH_DWORD __reserved : 2; // don't care bit (ðåæèì 512)
  261. #else
  262. __FLASH_DWORD __reserved : 1; // don't care bit (ðåæèì 528)
  263. #endif
  264. __FLASH_DWORD page : 13; // íîìåð ñòðàíèöû äëÿ çàïèñè
  265. #ifdef AT45DB161E_PRM512
  266. __FLASH_DWORD __reserved2: 9; // don't care bits (ðåæèì 512)
  267. #else
  268. __FLASH_DWORD __reserved2: 10; // don't care bits (ðåæèì 528)
  269. #endif
  270. }
  271. __flash_packet_pageerase_directt;
  272. #pragma pack( pop )
  273. //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
  274. #pragma pack( push, 1 )
  275. typedef struct
  276. {
  277. #ifdef AT45DB161E_PRM512
  278. __FLASH_DWORD __reserved2: 12; // don't care bits (ðåæèì 512)
  279. #else
  280. __FLASH_DWORD __reserved2: 13; // don't care bits (ðåæèì 528)
  281. #endif
  282. __FLASH_DWORD block : 10; // íîìåð áëîêà äëÿ ñòèðàíèÿ
  283. #ifdef AT45DB161E_PRM512
  284. __FLASH_DWORD __reserved : 2; // don't care bit (ðåæèì 512)
  285. #else
  286. __FLASH_DWORD __reserved : 1; // don't care bit (ðåæèì 528)
  287. #endif
  288. __FLASH_DWORD opcode : 8; // êîìàíäà ÑÒÈÐÀÍÈÅ ÁËÎÊÀ
  289. }
  290. __flash_packet_blockerase_t;
  291. typedef struct
  292. {
  293. __FLASH_DWORD opcode : 8; // êîìàíäà ÑÒÈÐÀÍÈÅ ÁËÎÊÀ
  294. #ifdef AT45DB161E_PRM512
  295. __FLASH_DWORD __reserved : 2; // don't care bit (ðåæèì 512)
  296. #else
  297. __FLASH_DWORD __reserved : 1; // don't care bit (ðåæèì 528)
  298. #endif
  299. __FLASH_DWORD block : 10; // íîìåð áëîêà äëÿ ñòèðàíèÿ
  300. #ifdef AT45DB161E_PRM512
  301. __FLASH_DWORD __reserved2: 12; // don't care bits (ðåæèì 512)
  302. #else
  303. __FLASH_DWORD __reserved2: 13; // don't care bits (ðåæèì 528)
  304. #endif
  305. }
  306. __flash_packet_blockerase_direct_t;
  307. #pragma pack( pop )
  308. //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
  309. #pragma pack( push, 1 )
  310. typedef struct
  311. {
  312. #ifdef AT45DB161E_PRM512
  313. __FLASH_DWORD __reserved3: 12; // don't care bits (ðåæèì 512)
  314. #else
  315. __FLASH_DWORD __reserved3: 13; // don't care bits (ðåæèì 528)
  316. #endif
  317. __FLASH_DWORD subsector: 1; // íîìåð ïîäñåêòîðà 0 èëè 1
  318. __FLASH_DWORD __reserved2: 9; // ÷àñòü íîìåðà ñòðàíèöû. Äëÿ ñåêòîðà 0 äîëæíà áûòü 0
  319. #ifdef AT45DB161E_PRM512
  320. __FLASH_DWORD __reserved : 2; // don't care bit (ðåæèì 512)
  321. #else
  322. __FLASH_DWORD __reserved : 1; // don't care bit (ðåæèì 528)
  323. #endif
  324. __FLASH_DWORD opcode : 8; // êîìàíäà ÑÒÈÐÀÍÈÅ ÁËÎÊÀ
  325. }
  326. __flash_packet_sector0erase_t;
  327. typedef struct
  328. {
  329. __FLASH_DWORD opcode : 8; // êîìàíäà ÑÒÈÐÀÍÈÅ ÁËÎÊÀ
  330. #ifdef AT45DB161E_PRM512
  331. __FLASH_DWORD __reserved : 2; // don't care bit (ðåæèì 512)
  332. #else
  333. __FLASH_DWORD __reserved : 1; // don't care bit (ðåæèì 528)
  334. #endif
  335. __FLASH_DWORD __reserved2: 9; // ÷àñòü íîìåðà ñòðàíèöû. Äëÿ ñåêòîðà 0 äîëæíà áûòü 0
  336. __FLASH_DWORD subsector: 1; // íîìåð ïîäñåêòîðà 0 èëè 1
  337. #ifdef AT45DB161E_PRM512
  338. __FLASH_DWORD __reserved3: 12; // don't care bits (ðåæèì 512)
  339. #else
  340. __FLASH_DWORD __reserved3: 13; // don't care bits (ðåæèì 528)
  341. #endif
  342. }
  343. __flash_packet_sector0erase_direct_t;
  344. #pragma pack( pop )
  345. //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
  346. #pragma pack( push, 1 )
  347. typedef struct
  348. {
  349. #ifdef AT45DB161E_PRM512
  350. __FLASH_DWORD __reserved2: 16; // don't care bits (ðåæèì 512)
  351. #else
  352. __FLASH_DWORD __reserved2: 17; // don't care bits (ðåæèì 528)
  353. #endif
  354. __FLASH_DWORD sector : 6; // íîìåð ÑÅÊÒÎÐÀ äëÿ ñòèðàíèÿ
  355. #ifdef AT45DB161E_PRM512
  356. __FLASH_DWORD __reserved : 2; // don't care bit (ðåæèì 512)
  357. #else
  358. __FLASH_DWORD __reserved : 1; // don't care bit (ðåæèì 528)
  359. #endif
  360. __FLASH_DWORD opcode : 8; // êîìàíäà ÑÒÈÐÀÍÈÅ ÁËÎÊÀ
  361. }
  362. __flash_packet_sectorerase_t;
  363. typedef struct
  364. {
  365. __FLASH_DWORD opcode : 8; // êîìàíäà ÑÒÈÐÀÍÈÅ ÁËÎÊÀ
  366. #ifdef AT45DB161E_PRM512
  367. __FLASH_DWORD __reserved : 2; // don't care bit (ðåæèì 512)
  368. #else
  369. __FLASH_DWORD __reserved : 1; // don't care bit (ðåæèì 528)
  370. #endif
  371. __FLASH_DWORD sector : 6; // íîìåð ÑÅÊÒÎÐÀ äëÿ ñòèðàíèÿ
  372. #ifdef AT45DB161E_PRM512
  373. __FLASH_DWORD __reserved2: 16; // don't care bits (ðåæèì 512)
  374. #else
  375. __FLASH_DWORD __reserved2: 17; // don't care bits (ðåæèì 528)
  376. #endif
  377. }
  378. __flash_packet_sectorerase_direct_t;
  379. #pragma pack( pop )
  380. //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
  381. #pragma pack( push, 1 )
  382. typedef struct
  383. {
  384. #ifdef AT45DB161E_PRM512
  385. __FLASH_DWORD offset : 9; // ñìåùåíèå â áóôåðå (ðåæèì 512)
  386. #else
  387. __FLASH_DWORD offset : 10; // ñìåùåíèå â áóôåðå (ðåæèì 528)
  388. #endif
  389. #ifdef AT45DB161E_PRM512
  390. __FLASH_DWORD page : 13; // íîìåð ñòðàíèöû äëÿ çàïèñè (ðåæèì 512)
  391. #else
  392. __FLASH_DWORD page : 13; // íîìåð ñòðàíèöû äëÿ çàïèñè (ðåæèì 528)
  393. #endif
  394. #ifdef AT45DB161E_PRM512
  395. __FLASH_DWORD __reserved : 2; // don't care bits (ðåæèì 512)
  396. #else
  397. __FLASH_DWORD __reserved : 1; // don't care bits (ðåæèì 528)
  398. #endif
  399. __FLASH_DWORD opcode : 8; // êîìàíäà ÇÀÏÈÑÜ ÑÒÐÀÍÈÖÛ ÷åðåç ÁÓÔÅÐ
  400. }
  401. __flash_packet_pagewriteviabuffer_t;
  402. typedef struct
  403. {
  404. __FLASH_DWORD opcode : 8; // êîìàíäà ÇÀÏÈÑÜ ÑÒÐÀÍÈÖÛ ÷åðåç ÁÓÔÅÐ
  405. #ifdef AT45DB161E_PRM512
  406. __FLASH_DWORD __reserved : 2; // don't care bits (ðåæèì 512)
  407. #else
  408. __FLASH_DWORD __reserved : 1; // don't care bits (ðåæèì 528)
  409. #endif
  410. #ifdef AT45DB161E_PRM512
  411. __FLASH_DWORD page : 13; // íîìåð ñòðàíèöû äëÿ çàïèñè (ðåæèì 512)
  412. __FLASH_DWORD offset : 9; // ñìåùåíèå â áóôåðå (ðåæèì 512)
  413. #else
  414. __FLASH_DWORD page : 13; // íîìåð ñòðàíèöû äëÿ çàïèñè (ðåæèì 528)
  415. __FLASH_DWORD offset : 10; // ñìåùåíèå â áóôåðå (ðåæèì 528)
  416. #endif
  417. }
  418. __flash_packet_pagewriteviabuffer_direct_t;
  419. #pragma pack( pop )
  420. //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
  421. #pragma pack( push, 1 )
  422. typedef struct
  423. {
  424. #ifdef AT45DB161E_PRM512
  425. __FLASH_DWORD __reserved2: 9; // don't care bits (ðåæèì 512)
  426. __FLASH_DWORD page : 13; // íîìåð ñòðàíèöû äëÿ ÷òåíèÿ (ðåæèì 512)
  427. #else
  428. __FLASH_DWORD __reserved2: 10; // don't care bits (ðåæèì 528)
  429. __FLASH_DWORD page : 13; // íîìåð ñòðàíèöû äëÿ ÷òåíèÿ (ðåæèì 528)
  430. #endif
  431. #ifdef AT45DB161E_PRM512
  432. __FLASH_DWORD __reserved : 2; // don't care bits (ðåæèì 512)
  433. #else
  434. __FLASH_DWORD __reserved : 1; // don't care bits (ðåæèì 528)
  435. #endif
  436. __FLASH_DWORD opcode : 8; // êîìàíäà ÇÀÏÎËÍÈÒÜ ÁÓÔÅÐ èç ÑÒÐÀÍÈÖÛ
  437. }
  438. __flash_packet_bufferload_t;
  439. typedef struct
  440. {
  441. __FLASH_DWORD opcode : 8; // êîìàíäà ÇÀÏÎËÍÈÒÜ ÁÓÔÅÐ èç ÑÒÐÀÍÈÖÛ
  442. #ifdef AT45DB161E_PRM512
  443. __FLASH_DWORD __reserved : 2; // don't care bits (ðåæèì 512)
  444. #else
  445. __FLASH_DWORD __reserved : 1; // don't care bits (ðåæèì 528)
  446. #endif
  447. #ifdef AT45DB161E_PRM512
  448. __FLASH_DWORD page : 13; // íîìåð ñòðàíèöû äëÿ ÷òåíèÿ (ðåæèì 512)
  449. __FLASH_DWORD __reserved2: 9; // don't care bits (ðåæèì 512)
  450. #else
  451. __FLASH_DWORD page : 13; // íîìåð ñòðàíèöû äëÿ ÷òåíèÿ (ðåæèì 528)
  452. __FLASH_DWORD __reserved2: 10; // don't care bits (ðåæèì 528)
  453. #endif
  454. }
  455. __flash_packet_bufferload_t_direct;
  456. #pragma pack( pop )
  457. //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
  458. #pragma pack( push, 1 )
  459. typedef struct
  460. {
  461. #ifdef AT45DB161E_PRM512
  462. __FLASH_DWORD __reserved2: 9; // don't care bits (ðåæèì 512)
  463. #else
  464. __FLASH_DWORD __reserved2: 10; // don't care bits (ðåæèì 528)
  465. #endif
  466. #ifdef AT45DB161E_PRM512
  467. __FLASH_DWORD page : 13; // íîìåð ñòðàíèöû äëÿ ñðàâíåíèÿ (ðåæèì 512)
  468. #else
  469. __FLASH_DWORD page : 13; // íîìåð ñòðàíèöû äëÿ ñðàâíåíèÿ (ðåæèì 528)
  470. #endif
  471. #ifdef AT45DB161E_PRM512
  472. __FLASH_DWORD __reserved : 2; // don't care bits (ðåæèì 512)
  473. #else
  474. __FLASH_DWORD __reserved : 1; // don't care bits (ðåæèì 528)
  475. #endif
  476. __FLASH_DWORD opcode : 8; // êîìàíäà ÑÐÀÂÍÅÍÈÅ ÁÓÔÅÐÀ
  477. }
  478. __flash_packet_buffercompare_t;
  479. typedef struct
  480. {
  481. __FLASH_DWORD opcode : 8; // êîìàíäà ÑÐÀÂÍÅÍÈÅ ÁÓÔÅÐÀ
  482. #ifdef AT45DB161E_PRM512
  483. __FLASH_DWORD __reserved : 2; // don't care bits (ðåæèì 512)
  484. #else
  485. __FLASH_DWORD __reserved : 1; // don't care bits (ðåæèì 528)
  486. #endif
  487. #ifdef AT45DB161E_PRM512
  488. __FLASH_DWORD page : 13; // íîìåð ñòðàíèöû äëÿ ñðàâíåíèÿ (ðåæèì 512)
  489. __FLASH_DWORD __reserved2: 9; // don't care bits (ðåæèì 512)
  490. #else
  491. __FLASH_DWORD page : 13; // íîìåð ñòðàíèöû äëÿ ñðàâíåíèÿ (ðåæèì 528)
  492. __FLASH_DWORD __reserved2: 10; // don't care bits (ðåæèì 528)
  493. #endif
  494. }
  495. __flash_packet_buffercompare_direct_t;
  496. #pragma pack( pop )
  497. //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
  498. #pragma pack( push, 1 )
  499. typedef struct
  500. {
  501. #ifdef AT45DB161E_PRM512
  502. __FLASH_DWORD __reserved2: 9; // don't care bits (ðåæèì 512)
  503. #else
  504. __FLASH_DWORD __reserved2: 10; // don't care bits (ðåæèì 528)
  505. #endif
  506. #ifdef AT45DB161E_PRM512
  507. __FLASH_DWORD page : 13; // íîìåð ñòðàíèöû äëÿ ñðàâíåíèÿ (ðåæèì 512)
  508. #else
  509. __FLASH_DWORD page : 13; // íîìåð ñòðàíèöû äëÿ ñðàâíåíèÿ (ðåæèì 528)
  510. #endif
  511. #ifdef AT45DB161E_PRM512
  512. __FLASH_DWORD __reserved : 2; // don't care bits (ðåæèì 512)
  513. #else
  514. __FLASH_DWORD __reserved : 1; // don't care bits (ðåæèì 528)
  515. #endif
  516. __FLASH_DWORD opcode : 8; // êîìàíäà ÎÁÍÎÂËÅÍÈÅ ÑÒÐÀÍÈÖÛ
  517. }
  518. __flash_packet_autopagerewrite_t;
  519. typedef struct
  520. {
  521. __FLASH_DWORD opcode : 8; // êîìàíäà ÎÁÍÎÂËÅÍÈÅ ÑÒÐÀÍÈÖÛ
  522. #ifdef AT45DB161E_PRM512
  523. __FLASH_DWORD __reserved : 2; // don't care bits (ðåæèì 512)
  524. #else
  525. __FLASH_DWORD __reserved : 1; // don't care bits (ðåæèì 528)
  526. #endif
  527. #ifdef AT45DB161E_PRM512
  528. __FLASH_DWORD page : 13; // íîìåð ñòðàíèöû äëÿ ñðàâíåíèÿ (ðåæèì 512)
  529. __FLASH_DWORD __reserved2: 9; // don't care bits (ðåæèì 512)
  530. #else
  531. __FLASH_DWORD page : 13; // íîìåð ñòðàíèöû äëÿ ñðàâíåíèÿ (ðåæèì 528)
  532. __FLASH_DWORD __reserved2: 10; // don't care bits (ðåæèì 528)
  533. #endif
  534. }
  535. __flash_packet_autopagerewrite_direct_t;
  536. #pragma pack( pop )
  537. //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
  538. #pragma pack( push, 1 )
  539. typedef struct
  540. {
  541. __FLASH_BYTE opcode; // êîìàíäà ×ÒÅÍÈÅ ÑÒÀÒÓÑÀ
  542. }
  543. __flash_packet_statusread_t;
  544. #pragma pack( pop )
  545. //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
  546. #pragma pack( push, 1 )
  547. typedef struct
  548. {
  549. __FLASH_BYTE opcode; // êîìàíäà ÏÅÐÅÕÎÄ â ñïÿùèé ðåæèì
  550. }
  551. __flash_packet_powerdown_t;
  552. #pragma pack( pop )
  553. //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
  554. #pragma pack( push, 1 )
  555. typedef struct
  556. {
  557. __FLASH_BYTE opcode; // êîìàíäà ÂÎÇÂÐÀÒ èç ñïÿùåãî ðåæèìà
  558. }
  559. __flash_packet_powerup_t;
  560. #pragma pack( pop )
  561. //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
  562. #pragma pack( push, 1 )
  563. typedef struct
  564. {
  565. __FLASH_BYTE opcode; // êîìàíäà ÏÎËÓ×ÈÒÜ èäåíòèôèêàòîð ïðîèçâîäèòåëÿ
  566. }
  567. __flash_packet_manufactureridread_t;
  568. #pragma pack( pop )
  569. //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
  570. #pragma pack( push, 1 )
  571. typedef struct
  572. {
  573. __FLASH_DWORD opcode; // êîìàíäà ÂÊËÞ×ÈÒÜ/ÂÛÊËÞ×ÈÒÜ çàùèòó ñåêòîðîâ
  574. }
  575. __flash_packet_protecttoggle_t;
  576. #pragma pack( pop )
  577. //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
  578. #pragma pack( push, 1 )
  579. typedef struct
  580. {
  581. __FLASH_DWORD opcode; // êîìàíäà ÑÒÅÐÅÒÜ ÐÅÃÈÑÒÐ ÇÀÙÈÒÛ
  582. }
  583. __flash_packet_protectregistererase_t;
  584. #pragma pack( pop )
  585. //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
  586. #pragma pack( push, 1 )
  587. typedef struct
  588. {
  589. __FLASH_DWORD opcode; // êîìàíäà ÇÀÏÈÑÀÒÜ ÐÅÃÈÑÒÐ ÇÀÙÈÒÛ
  590. // ... ïðîäîëæåíèå ñì. ôóíêöèè __flash_hal__protectregister_write
  591. }
  592. __flash_packet_protectregisterwrite_t;
  593. #pragma pack( pop )
  594. //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
  595. #pragma pack( push, 1 )
  596. typedef struct
  597. {
  598. __FLASH_DWORD __reserved : 24; // don't care bytes
  599. __FLASH_DWORD opcode : 8; // êîìàíäà ÏÐÎ×ÈÒÀÒÜ ÐÅÃÈÑÒÐ ÇÀÙÈÒÛ
  600. }
  601. __flash_packet_protectregisterread_t;
  602. typedef struct
  603. {
  604. __FLASH_DWORD opcode : 8; // êîìàíäà ÏÐÎ×ÈÒÀÒÜ ÐÅÃÈÑÒÐ ÇÀÙÈÒÛ
  605. __FLASH_DWORD __reserved : 24; // don't care bytes
  606. }
  607. __flash_packet_protectregisterread_direct_t;
  608. #pragma pack( pop )
  609. //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
  610. #pragma pack( push, 1 )
  611. typedef struct
  612. {
  613. __FLASH_BYTE haddress; // ñòàðøàÿ ÷àñòü àäðåñà â ñåêòîðå (16...23 áèòû)
  614. __FLASH_WORD laddress; // ìëàäøàÿ ÷àñòü àäðåñà â ñåêòîðå (0...15 áèòû)
  615. __FLASH_DWORD opcode; // êîìàíäà ÇÀÁËÎÊÈÐÎÂÀÒÜ ñåêòîð
  616. }
  617. __flash_packet_sectorlockdown_t;
  618. typedef struct
  619. {
  620. __FLASH_DWORD opcode; // êîìàíäà ÇÀÁËÎÊÈÐÎÂÀÒÜ ñåêòîð
  621. __FLASH_WORD laddress; // ìëàäøàÿ ÷àñòü àäðåñà â ñåêòîðå (0...15 áèòû)
  622. __FLASH_BYTE haddress; // ñòàðøàÿ ÷àñòü àäðåñà â ñåêòîðå (16...23 áèòû)
  623. }
  624. __flash_packet_sectorlockdown_direct_t;
  625. #pragma pack( pop )
  626. //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
  627. #pragma pack( push, 1 )
  628. typedef struct
  629. {
  630. __FLASH_DWORD __reserved : 24; // don't care bytes
  631. __FLASH_DWORD opcode : 8; // êîìàíäà ÏÐÎ×ÈÒÀÒÜ ÐÅÃÈÑÒÐ ÁËÎÊÈÐÎÂÊÈ
  632. }
  633. __flash_packet_lockdownregisterread_t;
  634. typedef struct
  635. {
  636. __FLASH_DWORD opcode : 8; // êîìàíäà ÏÐÎ×ÈÒÀÒÜ ÐÅÃÈÑÒÐ ÁËÎÊÈÐÎÂÊÈ
  637. __FLASH_DWORD __reserved : 24; // don't care bytes
  638. }
  639. __flash_packet_lockdownregisterread_direct_t;
  640. #pragma pack( pop )
  641. //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
  642. #pragma pack( push, 1 )
  643. typedef struct
  644. {
  645. __FLASH_DWORD opcode; // êîìàíäà ÇÀÏÈÑÀÒÜ ÐÅÃÈÑÒÐ ÁÅÇÎÏÀÑÍÎÑÒÈ
  646. // ... ïðîäîëæåíèå ñì. ôóíêöèè __flash_hal__securityregister_write
  647. }
  648. __flash_packet_securityregisterwrite_t;
  649. #pragma pack( pop )
  650. //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
  651. #pragma pack( push, 1 )
  652. typedef struct
  653. {
  654. __FLASH_DWORD opcode; // êîìàíäà ÏÐÎ×ÈÒÀÒÜ ÐÅÃÈÑÒÐ ÁÅÇÎÏÀÑÍÎÑÒÈ
  655. }
  656. __flash_packet_securityregisterread_t;
  657. #pragma pack( pop )
  658. //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
  659. #endif
  660. #endif