extmem_flash.h 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #ifndef EXTMEM_FLASH_H
  2. #define EXTMEM_FLASH_H
  3. #include <string.h>
  4. #include <stdbool.h>
  5. #include "stm32l1xx_hal.h"
  6. #include "drivers/spi/spi.h"
  7. #include "drivers/flash/at45/at45db161e.h"
  8. #include "drivers/flash/w25q/w25q16jv.h"
  9. #include "drivers/flash/base/bitbuffer.h"
  10. #define EXTMEM_HIBERNATE_ENABLED 1
  11. typedef enum
  12. {
  13. extmem_bank_factory,
  14. extmem_bank_user,
  15. }
  16. eExtMem_Bank_t;
  17. typedef struct
  18. {
  19. flash_size_t bankSize;
  20. flash_size_t bankAddress;
  21. }
  22. ExtMem_Bank_Properties_t;
  23. typedef union
  24. {
  25. struct
  26. {
  27. flash_size_t factoryBankSize;
  28. flash_size_t factoryBankAddress;
  29. flash_size_t userBankSize;
  30. flash_size_t userBankAddress;
  31. };
  32. struct
  33. {
  34. ExtMem_Bank_Properties_t factoryBank;
  35. ExtMem_Bank_Properties_t userBank;
  36. };
  37. ExtMem_Bank_Properties_t Banks[ 2 ];
  38. }
  39. ExtMem_Banks_Properties_t;
  40. typedef struct
  41. {
  42. bool ( *const Init)();
  43. bool ( *Write)( flash_address_t address, __FLASH_BYTE * pBuffer, flash_address_t size );
  44. bool ( *Read)( flash_address_t address, __FLASH_BYTE * pBuffer, flash_address_t size );
  45. bool ( *RangeCheck_Read)( flash_address_t address, flash_address_t size );
  46. bool ( *RangeCheck_Write)( flash_address_t address, flash_address_t size );
  47. bool ( *BankProtect)( eExtMem_Bank_t bankId, bool protectStatus );
  48. bool ( *CheckBankProtect)( eExtMem_Bank_t bankId, bool * pActualProtectStatus );
  49. bool ( *const DeInit)( bool bForce );
  50. const flash_properties_t * pFlashProperties;
  51. const ExtMem_Banks_Properties_t * pBanksProperties;
  52. }
  53. ExtMem_Handle_t;
  54. // äëÿ ñîâìåñòèìîñòè ñî ñòàðûìè ìîäóëÿìè, êîòîðûå èñïîëüçóþò ôóíêöèè ÷òåíèÿ/çàïèñè íàïðÿìóþ:
  55. flash_err_t flash_read( flash_address_t address, __FLASH_BYTE * pBuffer, flash_address_t size );
  56. flash_err_t flash_write( flash_address_t address, __FLASH_BYTE * pBuffer, flash_address_t size, flash_write_mode_t unused );
  57. #ifndef EXTMEM_FLASH_C
  58. extern const ExtMem_Handle_t ExtMemHandle;
  59. #endif
  60. #endif