lib_crc.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. /***************************************************************
  2. *Copyright (C), 2017, Shanghai Eastsoft Microelectronics Co., Ltd.
  3. *文件名:
  4. *作 者: Liut
  5. *版 本: V1.00
  6. *日 期: 2017/07/14
  7. *描 述:
  8. *备 注: 适用于 ES8P508x芯片
  9. 本软件仅供学习和演示使用,对用户直接引用代码所带来的风险或后果不承担任何法律责任。
  10. ***************************************************************/
  11. #ifndef __LIBCRC_H
  12. #define __LIBCRC_H
  13. #include "ES8P508x.h"
  14. #include "type.h"
  15. #ifdef __cplusplus
  16. extern "C" {
  17. #endif
  18. #define CRC_EmptayCheck_addr 0x10000010
  19. #define CRC_FlashVerify_addr 0x10000014
  20. #define CRC_UserCal_addr 0x10000018
  21. #define CRC_CheckReset_addr 0x1000001C
  22. typedef uint32_t (*CRC_EM)(void* address, uint32_t data_len);
  23. typedef uint32_t (*CRC_FL)(void* address, uint32_t data_len, uint32_t type);
  24. typedef uint32_t (*CRC_US)(void* address, uint32_t data_len, uint32_t type);
  25. typedef uint32_t (*CRC_CH)(void);
  26. typedef enum
  27. {
  28. CRC_XOROUT_NORMAL = 0x0, //数据输出不取反
  29. CRC_XOROUT_ANTI = (1U<<14), //数据输出取反
  30. } CRC_XOROUT;
  31. typedef enum
  32. {
  33. CRC_REFOUT_NORMAL = 0x0, //数据输出正序
  34. CRC_REFOUT_REVERSE = (1U<<13), //数据输出倒序
  35. } CRC_REFOUT;
  36. typedef enum
  37. {
  38. CRC_REFIN_NORMAL = 0x0, //数据输入正序
  39. CRC_REFIN_REVERSE = (1U<<12), //数据输入倒序
  40. } CRC_REFIN;
  41. typedef enum
  42. {
  43. CRC_MOD_CRC32 = 0x0, //CRC位宽为字节
  44. CRC_MOD_CRC16 = (2U<<8), //CRC位宽为半字
  45. CRC_MOD_CRC16_CCITT = (3U<<8), //CRC位宽为字
  46. } CRC_MOD_TYPE;
  47. typedef enum
  48. {
  49. CRC_INIT_DATA_ALL_0 = 0x0, //CRC初始化数据全为0
  50. CRC_INIT_DATA_ALL_1 = (1U<<3), //CRC初始化数据全为1
  51. } CRC_INIT_DATA;
  52. typedef enum
  53. {
  54. CRC_HS_TYPE_DISABLE = 0x0, //CRC高速模式禁止
  55. CRC_HS_TYPE_ENABLE = (1U<<2), //CRC高速模式使能,当CRC时钟小于24M时才能使能
  56. } CRC_HS_TYPE;
  57. /*CRC_CON 数据配置值结构体初始化*/
  58. typedef struct
  59. {
  60. CRC_XOROUT xorout;
  61. CRC_REFOUT refout;
  62. CRC_REFIN refin;
  63. CRC_MOD_TYPE mode;
  64. CRC_INIT_DATA init_data_type;
  65. CRC_HS_TYPE hs_type;
  66. } CRC_CONValueStruType;
  67. uint32_t CRC_getTypeValue(CRC_CONValueStruType con_value);
  68. uint32_t CRC_EmptayCheck(void* address, uint32_t data_len);
  69. uint32_t CRC_FlashVerify(void* address, uint32_t data_len, uint32_t type);
  70. uint32_t CRC_UserCal(void* address, uint32_t data_len, uint32_t type);
  71. uint32_t CRC_CheckReset(void);
  72. #ifdef __cplusplus
  73. }
  74. #endif
  75. #endif
  76. /*************************END OF FILE**********************/