AT45DB321D_LL.h 28 KB

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