nu_crc.h 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. /******************************************************************************
  2. * @file nu_crc.h
  3. * @version V1.00
  4. * $Revision: 9 $
  5. * $Date: 18/07/09 4:18p $
  6. * @brief M031 series CRC driver header file
  7. *
  8. * @note
  9. * SPDX-License-Identifier: Apache-2.0
  10. * Copyright (C) 2018 Nuvoton Technology Corp. All rights reserved.
  11. ****************************************************************************/
  12. #ifndef __NU_CRC_H__
  13. #define __NU_CRC_H__
  14. #ifdef __cplusplus
  15. extern "C"
  16. {
  17. #endif
  18. /** @addtogroup Standard_Driver Standard Driver
  19. @{
  20. */
  21. /** @addtogroup CRC_Driver CRC Driver
  22. @{
  23. */
  24. /** @addtogroup CRC_EXPORTED_CONSTANTS CRC Exported Constants
  25. @{
  26. */
  27. /*---------------------------------------------------------------------------------------------------------*/
  28. /* CRC Polynomial Mode Constant Definitions */
  29. /*---------------------------------------------------------------------------------------------------------*/
  30. #define CRC_CCITT (0UL << CRC_CTL_CRCMODE_Pos) /*!<CRC Polynomial Mode - CCITT \hideinitializer */
  31. #define CRC_8 (1UL << CRC_CTL_CRCMODE_Pos) /*!<CRC Polynomial Mode - CRC8 \hideinitializer */
  32. #define CRC_16 (2UL << CRC_CTL_CRCMODE_Pos) /*!<CRC Polynomial Mode - CRC16 \hideinitializer */
  33. #define CRC_32 (3UL << CRC_CTL_CRCMODE_Pos) /*!<CRC Polynomial Mode - CRC32 \hideinitializer */
  34. /*---------------------------------------------------------------------------------------------------------*/
  35. /* Checksum, Write data Constant Definitions */
  36. /*---------------------------------------------------------------------------------------------------------*/
  37. #define CRC_CHECKSUM_COM (CRC_CTL_CHKSFMT_Msk) /*!<CRC Checksum Complement \hideinitializer */
  38. #define CRC_CHECKSUM_RVS (CRC_CTL_CHKSREV_Msk) /*!<CRC Checksum Reverse \hideinitializer */
  39. #define CRC_WDATA_COM (CRC_CTL_DATFMT_Msk) /*!<CRC Write Data Complement \hideinitializer */
  40. #define CRC_WDATA_RVS (CRC_CTL_DATREV_Msk) /*!<CRC Write Data Reverse \hideinitializer */
  41. /*---------------------------------------------------------------------------------------------------------*/
  42. /* Write Data Length Constant Definitions */
  43. /*---------------------------------------------------------------------------------------------------------*/
  44. #define CRC_WDATA_8 (0UL << CRC_CTL_DATLEN_Pos) /*!<CRC Write Data length is 8-bit \hideinitializer */
  45. #define CRC_WDATA_16 (1UL << CRC_CTL_DATLEN_Pos) /*!<CRC Write Data length is 16-bit \hideinitializer */
  46. #define CRC_WDATA_32 (2UL << CRC_CTL_DATLEN_Pos) /*!<CRC Write Data length is 32-bit \hideinitializer */
  47. /*@}*/ /* end of group CRC_EXPORTED_CONSTANTS */
  48. /** @addtogroup CRC_EXPORTED_FUNCTIONS CRC Exported Functions
  49. @{
  50. */
  51. /**
  52. * @brief Set CRC Seed Value
  53. *
  54. * @param[in] u32Seed Seed value
  55. *
  56. * @return None
  57. *
  58. * @details This macro is used to set CRC seed value.
  59. *
  60. * @note User must to perform CRC_CHKSINIT(CRC_CTL[1] CRC Engine Reset) to reload the new seed value
  61. * to CRC controller.
  62. * \hideinitializer
  63. */
  64. #define CRC_SET_SEED(u32Seed) do{ CRC->SEED = (u32Seed); CRC->CTL |= CRC_CTL_CHKSINIT_Msk; }while(0)
  65. /**
  66. * @brief Get CRC Seed Value
  67. *
  68. * @param None
  69. *
  70. * @return CRC seed value
  71. *
  72. * @details This macro gets the current CRC seed value.
  73. * \hideinitializer
  74. */
  75. #define CRC_GET_SEED() (CRC->SEED)
  76. /**
  77. * @brief CRC Write Data
  78. *
  79. * @param[in] u32Data Write data
  80. *
  81. * @return None
  82. *
  83. * @details User can write data directly to CRC Write Data Register(CRC_DAT) by this macro to perform CRC operation.
  84. * \hideinitializer
  85. */
  86. #define CRC_WRITE_DATA(u32Data) (CRC->DAT = (u32Data))
  87. void CRC_Open(uint32_t u32Mode, uint32_t u32Attribute, uint32_t u32Seed, uint32_t u32DataLen);
  88. uint32_t CRC_GetChecksum(void);
  89. /*@}*/ /* end of group CRC_EXPORTED_FUNCTIONS */
  90. /*@}*/ /* end of group CRC_Driver */
  91. /*@}*/ /* end of group Standard_Driver */
  92. #ifdef __cplusplus
  93. }
  94. #endif
  95. #endif
  96. /*** (C) COPYRIGHT 2018 Nuvoton Technology Corp. ***/