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. //设备CONFIG地址
  20. #define BASE_CONFIG_ADDR (0x0801FC00 - SECTOR_SIZE)
  21. //CLIENT 信息地址
  22. #define CLIENT_INFO_ADDR 0x0801FC00
  23. #define USER_FLASH_END_ADDR 0x0801FFFF
  24. //有效验证位
  25. #define AVAILABLE_FLAG (unsigned int)0xA88A
  26. #pragma pack(push,1) //取消内存对齐
  27. // typedef struct
  28. // {
  29. // unsigned int available_flag;
  30. // unsigned char _name[10];
  31. // int _serial_id;
  32. // int _firmwareVersion;
  33. // int _setLon;
  34. // int _setLat;
  35. // int _setAlt;
  36. // unsigned char _config_status;
  37. // unsigned char _base_mode ;
  38. // } BASE_CONFIG;
  39. typedef struct
  40. {
  41. char mode[4];
  42. char ip[16];
  43. char port[16];
  44. int _init_flag;
  45. }Cclient_info;
  46. #pragma pack(pop) //恢复内存对齐
  47. //extern BASE_CONFIG base_config;
  48. extern Cclient_info client_info;
  49. //extern unsigned short ipaFlag;
  50. uint16_t FLASH_ReadHalfWord(uint32_t address);
  51. int FLASH_ReadMoreData(uint32_t startAddress, uint32_t *readData, uint32_t countToRead);
  52. int FLASH_WriteMoreData(uint32_t startAddress, uint32_t *writeData, uint32_t countToWrite);
  53. int FLASH_INFO_SetFlag(void);
  54. int FLASH_ErasePage(uint32_t ErasePageAddr, uint32_t PageNumber);
  55. void erasure_bin_flash(void);
  56. int FLASH_Write(volatile uint32_t FlashAddress, uint32_t *WriteData, uint32_t DataLength);
  57. int FLASH_Write_HalfWord(volatile uint32_t FlashAddress, uint16_t *WriteData, uint16_t DataLength);
  58. #endif