1
0

gd32f30x_crc.c 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. /*!
  2. \file gd32f30x_crc.c
  3. \brief CRC driver
  4. */
  5. /*
  6. Copyright (C) 2017 GigaDevice
  7. 2017-02-10, V1.0.0, firmware for GD32F30x
  8. */
  9. #include "gd32f30x_crc.h"
  10. /*!
  11. \brief deinit CRC calculation unit
  12. \param[in] none
  13. \param[out] none
  14. \retval none
  15. */
  16. void crc_deinit(void)
  17. {
  18. CRC_DATA = (uint32_t)0xFFFFFFFFU;
  19. CRC_FDATA = (uint32_t)0x00000000U;
  20. CRC_CTL = (uint32_t)CRC_CTL_RST;
  21. }
  22. /*!
  23. \brief reset data register to the value of initializaiton data register
  24. \param[in] none
  25. \param[out] none
  26. \retval none
  27. */
  28. void crc_data_register_reset(void)
  29. {
  30. CRC_CTL |= (uint32_t)CRC_CTL_RST;
  31. }
  32. /*!
  33. \brief read the data register
  34. \param[in] none
  35. \param[out] none
  36. \retval 32-bit value of the data register
  37. */
  38. uint32_t crc_data_register_read(void)
  39. {
  40. uint32_t data;
  41. data = CRC_DATA;
  42. return (data);
  43. }
  44. /*!
  45. \brief read the free data register
  46. \param[in] none
  47. \param[out] none
  48. \retval 8-bit value of the free data register
  49. */
  50. uint8_t crc_free_data_register_read(void)
  51. {
  52. uint8_t fdata;
  53. fdata = (uint8_t)CRC_FDATA;
  54. return (fdata);
  55. }
  56. /*!
  57. \brief write the free data register
  58. \param[in] free_data: specify 8-bit data
  59. \param[out] none
  60. \retval none
  61. */
  62. void crc_free_data_register_write(uint8_t free_data)
  63. {
  64. CRC_FDATA = (uint32_t)free_data;
  65. }
  66. /*!
  67. \brief CRC calculate a 32-bit data
  68. \param[in] sdata: specify 32-bit data
  69. \param[out] none
  70. \retval 32-bit CRC calculate value
  71. */
  72. uint32_t crc_single_data_calculate(uint32_t sdata)
  73. {
  74. CRC_DATA = sdata;
  75. return (CRC_DATA);
  76. }
  77. /*!
  78. \brief CRC calculate a 32-bit data array
  79. \param[in] array: pointer to an array of 32 bit data words
  80. \param[in] size: size of the array
  81. \param[out] none
  82. \retval 32-bit CRC calculate value
  83. */
  84. uint32_t crc_block_data_calculate(uint32_t array[], uint32_t size)
  85. {
  86. uint32_t index;
  87. for(index = 0U; index < size; index++){
  88. CRC_DATA = array[index];
  89. }
  90. return (CRC_DATA);
  91. }