nu_crc.h 4.2 KB

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