drv_chipFlash.h 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. #ifndef _CHIPFLASH_H_
  2. #define _CHIPFLASH_H_
  3. #include "stdint.h"
  4. //#include "drv_ec800k.h"
  5. #include "stm32f1xx_hal.h"
  6. //芯片大小 128kb
  7. #define CHIPFLASH_SIZE 128
  8. //#define FLASH_BASE ((uint32_t)0x08000000)
  9. #if CHIPFLASH_SIZE < 256
  10. #define SECTOR_SIZE 1024 //byte
  11. #else
  12. #define SECTOR_SIZE 2048 //byte
  13. #endif
  14. extern uint32_t cur_address;
  15. //应用程序起始地址
  16. #define APPLICATION_ADDRESS (uint32_t)0x08008000
  17. //固件标志位信息地址
  18. #define SET_ADDRESS (APPLICATION_ADDRESS - SECTOR_SIZE)
  19. #define SET_RESET_ADDRESS (APPLICATION_ADDRESS - 2*SECTOR_SIZE)
  20. //设备CONFIG地址
  21. #define BASE_CONFIG_ADDR (0x0801FC00 - SECTOR_SIZE)
  22. //CLIENT 信息地址
  23. #define CLIENT_INFO_ADDR 0x0801FC00
  24. #define USER_FLASH_END_ADDR 0x0801FFFF
  25. //有效验证位
  26. #define AVAILABLE_FLAG (unsigned int)0xA88A
  27. #pragma pack(push,1) //取消内存对齐
  28. // typedef struct
  29. // {
  30. // unsigned int available_flag;
  31. // unsigned char _name[10];
  32. // int _serial_id;
  33. // int _firmwareVersion;
  34. // int _setLon;
  35. // int _setLat;
  36. // int _setAlt;
  37. // unsigned char _config_status;
  38. // unsigned char _base_mode ;
  39. // } BASE_CONFIG;
  40. typedef struct
  41. {
  42. char mode[4];
  43. char ip[16];
  44. char port[16];
  45. int _init_flag;
  46. }Cclient_info;
  47. #pragma pack(pop) //恢复内存对齐
  48. //extern BASE_CONFIG base_config;
  49. extern Cclient_info client_info;
  50. //extern unsigned short ipaFlag;
  51. uint16_t FLASH_ReadHalfWord(uint32_t address);
  52. int FLASH_ReadMoreData(uint32_t startAddress, uint32_t *readData, uint32_t countToRead);
  53. int FLASH_WriteMoreData(uint32_t startAddress, uint32_t *writeData, uint32_t countToWrite);
  54. int FLASH_INFO_SetFlag(void);
  55. int FLASH_ErasePage(uint32_t ErasePageAddr, uint32_t PageNumber);
  56. void erasure_bin_flash(void);
  57. int FLASH_Write(volatile uint32_t FlashAddress, uint32_t *WriteData, uint32_t DataLength);
  58. int FLASH_Write_HalfWord(volatile uint32_t FlashAddress, uint16_t *WriteData, uint16_t DataLength);
  59. #endif