crc_reg.h 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. /**************************************************************************//**
  2. * @file crc_reg.h
  3. * @version V1.00
  4. * @brief CRC register definition header file
  5. *
  6. * SPDX-License-Identifier: Apache-2.0
  7. * @copyright (C) 2017-2020 Nuvoton Technology Corp. All rights reserved.
  8. *****************************************************************************/
  9. #ifndef __CRC_REG_H__
  10. #define __CRC_REG_H__
  11. #if defined ( __CC_ARM )
  12. #pragma anon_unions
  13. #endif
  14. /**
  15. @addtogroup REGISTER Control Register
  16. @{
  17. */
  18. /**
  19. @addtogroup CRC Cyclic Redundancy Check Controller(CRC)
  20. Memory Mapped Structure for CRC Controller
  21. @{ */
  22. typedef struct
  23. {
  24. /**
  25. * @var CRC_T::CTL
  26. * Offset: 0x00 CRC Control Register
  27. * ---------------------------------------------------------------------------------------------------
  28. * |Bits |Field |Descriptions
  29. * | :----: | :----: | :---- |
  30. * |[0] |CRCEN |CRC Channel Enable Bit
  31. * | | |0 = No effect.
  32. * | | |1 = CRC operation Enabled.
  33. * |[1] |CHKSINIT |Checksum Initialization
  34. * | | |0 = No effect.
  35. * | | |1 = Initial checksum value by auto reload CRC_SEED register value to CRC_CHECKSUM register value.
  36. * | | |Note: This bit will be cleared automatically.
  37. * |[24] |DATREV |Write Data Bit Order Reverse
  38. * | | |This bit is used to enable the bit order reverse function per byte for write data value in CRC_DAT register.
  39. * | | |0 = Bit order reversed for CRC write data in Disabled.
  40. * | | |1 = Bit order reversed for CRC write data in Enabled (per byte).
  41. * | | |Note: If the write data is 0xAABBCCDD, the bit order reverse for CRC write data in is 0x55DD33BB.
  42. * |[25] |CHKSREV |Checksum Bit Order Reverse
  43. * | | |This bit is used to enable the bit order reverse function for checksum result in CRC_CHECKSUM register.
  44. * | | |0 = Bit order reverse for CRC checksum Disabled.
  45. * | | |1 = Bit order reverse for CRC checksum Enabled.
  46. * | | |Note: If the checksum result is 0xDD7B0F2E, the bit order reverse for CRC checksum is 0x74F0DEBB.
  47. * |[26] |DATFMT |Write Data 1's Complement
  48. * | | |This bit is used to enable the 1's complement function for write data value in CRC_DAT register.
  49. * | | |0 = 1's complement for CRC writes data in Disabled.
  50. * | | |1 = 1's complement for CRC writes data in Enabled.
  51. * |[27] |CHKSFMT |Checksum 1's Complement
  52. * | | |This bit is used to enable the 1's complement function for checksum result in CRC_CHECKSUM register.
  53. * | | |0 = 1's complement for CRC checksum Disabled.
  54. * | | |1 = 1's complement for CRC checksum Enabled.
  55. * |[29:28] |DATLEN |CPU Write Data Length
  56. * | | |This field indicates the write data length.
  57. * | | |00 = Data length is 8-bit mode.
  58. * | | |01 = Data length is 16-bit mode.
  59. * | | |1x = Data length is 32-bit mode.
  60. * | | |Note: When the write data length is 8-bit mode, the valid data in CRC_DAT register is only DATA[7:0] bits; if the write data length is 16-bit mode, the valid data in CRC_DAT register is only DATA[15:0]
  61. * |[31:30] |CRCMODE |CRC Polynomial Mode
  62. * | | |This field indicates the CRC operation polynomial mode.
  63. * | | |00 = CRC-CCITT Polynomial mode.
  64. * | | |01 = CRC-8 Polynomial mode.
  65. * | | |10 = CRC-16 Polynomial mode.
  66. * | | |11 = CRC-32 Polynomial mode.
  67. * @var CRC_T::DAT
  68. * Offset: 0x04 CRC Write Data Register
  69. * ---------------------------------------------------------------------------------------------------
  70. * |Bits |Field |Descriptions
  71. * | :----: | :----: | :---- |
  72. * |[31:0] |DATA |CRC Write Data Bits
  73. * | | |User can write data directly by CPU mode or use PDMA function to write data to this field to perform CRC operation.
  74. * | | |Note: When the write data length is 8-bit mode, the valid data in CRC_DAT register is only DATA[7:0] bits; if the write data length is 16-bit mode, the valid data in CRC_DAT register is only DATA[15:0].
  75. * @var CRC_T::SEED
  76. * Offset: 0x08 CRC Seed Register
  77. * ---------------------------------------------------------------------------------------------------
  78. * |Bits |Field |Descriptions
  79. * | :----: | :----: | :---- |
  80. * |[31:0] |SEED |CRC Seed Value
  81. * | | |This field indicates the CRC seed value.
  82. * | | |Note: This field will be reloaded as checksum initial value (CRC_CHECKSUM register) after perform CHKSINIT (CRC_CTL[1]).
  83. * @var CRC_T::CHECKSUM
  84. * Offset: 0x0C CRC Checksum Register
  85. * ---------------------------------------------------------------------------------------------------
  86. * |Bits |Field |Descriptions
  87. * | :----: | :----: | :---- |
  88. * |[31:0] |CHECKSUM |CRC Checksum Results
  89. * | | |This field indicates the CRC checksum result.
  90. */
  91. __IO uint32_t CTL; /*!< [0x0000] CRC Control Register */
  92. __IO uint32_t DAT; /*!< [0x0004] CRC Write Data Register */
  93. __IO uint32_t SEED; /*!< [0x0008] CRC Seed Register */
  94. __I uint32_t CHECKSUM; /*!< [0x000c] CRC Checksum Register */
  95. } CRC_T;
  96. /**
  97. @addtogroup CRC_CONST CRC Bit Field Definition
  98. Constant Definitions for CRC Controller
  99. @{ */
  100. #define CRC_CTL_CRCEN_Pos (0) /*!< CRC_T::CTL: CRCEN Position */
  101. #define CRC_CTL_CRCEN_Msk (0x1ul << CRC_CTL_CRCEN_Pos) /*!< CRC_T::CTL: CRCEN Mask */
  102. #define CRC_CTL_CHKSINIT_Pos (1) /*!< CRC_T::CTL: CHKSINIT Position */
  103. #define CRC_CTL_CHKSINIT_Msk (0x1ul << CRC_CTL_CHKSINIT_Pos) /*!< CRC_T::CTL: CHKSINIT Mask */
  104. #define CRC_CTL_DATREV_Pos (24) /*!< CRC_T::CTL: DATREV Position */
  105. #define CRC_CTL_DATREV_Msk (0x1ul << CRC_CTL_DATREV_Pos) /*!< CRC_T::CTL: DATREV Mask */
  106. #define CRC_CTL_CHKSREV_Pos (25) /*!< CRC_T::CTL: CHKSREV Position */
  107. #define CRC_CTL_CHKSREV_Msk (0x1ul << CRC_CTL_CHKSREV_Pos) /*!< CRC_T::CTL: CHKSREV Mask */
  108. #define CRC_CTL_DATFMT_Pos (26) /*!< CRC_T::CTL: DATFMT Position */
  109. #define CRC_CTL_DATFMT_Msk (0x1ul << CRC_CTL_DATFMT_Pos) /*!< CRC_T::CTL: DATFMT Mask */
  110. #define CRC_CTL_CHKSFMT_Pos (27) /*!< CRC_T::CTL: CHKSFMT Position */
  111. #define CRC_CTL_CHKSFMT_Msk (0x1ul << CRC_CTL_CHKSFMT_Pos) /*!< CRC_T::CTL: CHKSFMT Mask */
  112. #define CRC_CTL_DATLEN_Pos (28) /*!< CRC_T::CTL: DATLEN Position */
  113. #define CRC_CTL_DATLEN_Msk (0x3ul << CRC_CTL_DATLEN_Pos) /*!< CRC_T::CTL: DATLEN Mask */
  114. #define CRC_CTL_CRCMODE_Pos (30) /*!< CRC_T::CTL: CRCMODE Position */
  115. #define CRC_CTL_CRCMODE_Msk (0x3ul << CRC_CTL_CRCMODE_Pos) /*!< CRC_T::CTL: CRCMODE Mask */
  116. #define CRC_DAT_DATA_Pos (0) /*!< CRC_T::DAT: DATA Position */
  117. #define CRC_DAT_DATA_Msk (0xfffffffful << CRC_DAT_DATA_Pos) /*!< CRC_T::DAT: DATA Mask */
  118. #define CRC_SEED_SEED_Pos (0) /*!< CRC_T::SEED: SEED Position */
  119. #define CRC_SEED_SEED_Msk (0xfffffffful << CRC_SEED_SEED_Pos) /*!< CRC_T::SEED: SEED Mask */
  120. #define CRC_CHECKSUM_CHECKSUM_Pos (0) /*!< CRC_T::CHECKSUM: CHECKSUM Position */
  121. #define CRC_CHECKSUM_CHECKSUM_Msk (0xfffffffful << CRC_CHECKSUM_CHECKSUM_Pos) /*!< CRC_T::CHECKSUM: CHECKSUM Mask */
  122. /**@}*/ /* CRC_CONST */
  123. /**@}*/ /* end of CRC register group */
  124. /**@}*/ /* end of REGISTER group */
  125. #if defined ( __CC_ARM )
  126. #pragma no_anon_unions
  127. #endif
  128. #endif /* __CRC_REG_H__ */