api_cm.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #ifndef _API_CM_H
  2. #define _API_CM_H
  3. #define PAGE_DATA_SIZE 250
  4. //每个Page 250 Byte
  5. #define PAGE0(x) (x)
  6. #define PAGE1(x) (0x100 + (x))
  7. #define PAGE2(x) (0x200 + (x))
  8. #define PAGE3(x) (0x300 + (x))
  9. #define MAX_CM_PAGE 2 //根据需要定义大小
  10. #define SYS_CM_PAGE_NUM 0
  11. #define BLE_CM_PAGE_NUM 1
  12. #define SYS_CM_PAGE(x) PAGE0(x)
  13. #define BLE_CM_PAGE(x) PAGE1(x)
  14. /**
  15. * @brief 参数区初始化,用于保存一些掉电需要记忆的参数到内置的flash里面
  16. * @param page总数
  17. * @param 参数区的起始地址,参数区一般设置在flash的最后那块区域
  18. * @param 参数区总大小,至少8k
  19. */
  20. void cm_init(uint max_page, u32 addr, uint len); //
  21. /**
  22. * @brief 将write写入cache的内容同步到spiflash中
  23. */
  24. void cm_sync(void);
  25. void cm_read(void *buf, u32 addr, uint len);
  26. u8 cm_read8(u32 addr);
  27. u16 cm_read16(u32 addr);
  28. u32 cm_read32(u32 addr);
  29. /**
  30. * @brief write数据到cache,需要调用cm_sync才会真正写入到spiflash中
  31. */
  32. void cm_write(void *buf, u32 addr, uint len);
  33. void cm_write8(u32 addr, u8 val);
  34. void cm_write16(u32 addr, u16 val);
  35. void cm_write32(u32 addr, u32 val);
  36. /**
  37. * @brief 清除CM的一整个Page
  38. * @param 要清除的page起始地址
  39. */
  40. void cm_clear(u32 addr);
  41. /**
  42. * @brief 配置区(setting)初始化
  43. */
  44. bool xcfg_init(void *xcfg, uint len);
  45. #endif