123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208 |
- /**
- **************************************************************************
- * @file at32f403a_407_crc.c
- * @brief contains all the functions for the crc firmware library
- **************************************************************************
- * Copyright notice & Disclaimer
- *
- * The software Board Support Package (BSP) that is made available to
- * download from Artery official website is the copyrighted work of Artery.
- * Artery authorizes customers to use, copy, and distribute the BSP
- * software and its related documentation for the purpose of design and
- * development in conjunction with Artery microcontrollers. Use of the
- * software is governed by this copyright notice and the following disclaimer.
- *
- * THIS SOFTWARE IS PROVIDED ON "AS IS" BASIS WITHOUT WARRANTIES,
- * GUARANTEES OR REPRESENTATIONS OF ANY KIND. ARTERY EXPRESSLY DISCLAIMS,
- * TO THE FULLEST EXTENT PERMITTED BY LAW, ALL EXPRESS, IMPLIED OR
- * STATUTORY OR OTHER WARRANTIES, GUARANTEES OR REPRESENTATIONS,
- * INCLUDING BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.
- *
- **************************************************************************
- */
- #include "at32f403a_407_conf.h"
- /** @addtogroup AT32F403A_407_periph_driver
- * @{
- */
- /** @defgroup CRC
- * @brief CRC driver modules
- * @{
- */
- #ifdef CRC_MODULE_ENABLED
- /** @defgroup CRC_private_functions
- * @{
- */
- /**
- * @brief reset the crc data register.
- * @param none
- * @retval none
- */
- void crc_data_reset(void)
- {
- /* reset crc generator */
- CRC->ctrl_bit.rst = 0x1;
- }
- /**
- * @brief compute the 32-bit crc of a given data word(32-bit).
- * @param data: data word(32-bit) to compute its crc
- * @retval 32-bit crc
- */
- uint32_t crc_one_word_calculate(uint32_t data)
- {
- CRC->dt = data;
- return (CRC->dt);
- }
- /**
- * @brief compute the 32-bit crc of a given buffer of data word(32-bit).
- * @param pbuffer: pointer to the buffer containing the data to be computed
- * @param length: length of the buffer to be computed
- * @retval 32-bit crc
- */
- uint32_t crc_block_calculate(uint32_t *pbuffer, uint32_t length)
- {
- uint32_t index = 0;
- for(index = 0; index < length; index++)
- {
- CRC->dt = pbuffer[index];
- }
- return (CRC->dt);
- }
- /**
- * @brief return the current crc value.
- * @param none
- * @retval 32-bit crc
- */
- uint32_t crc_data_get(void)
- {
- return (CRC->dt);
- }
- /**
- * @brief store a 8-bit data in the common data register.
- * @param cdt_value: 8-bit value to be stored in the common data register
- * @retval none
- */
- void crc_common_data_set(uint8_t cdt_value)
- {
- CRC->cdt_bit.cdt = cdt_value;
- }
- /**
- * @brief return the 8-bit data stored in the common data register
- * @param none
- * @retval 8-bit value of the common data register
- */
- uint8_t crc_common_data_get(void)
- {
- return (CRC->cdt_bit.cdt);
- }
- /**
- * @brief set the 32-bit initial data of crc
- * @param value: initial data
- * @retval none
- */
- void crc_init_data_set(uint32_t value)
- {
- CRC->idt = value;
- }
- /**
- * @brief control the reversal of the bit order in the input data
- * @param value
- * this parameter can be one of the following values:
- * - CRC_REVERSE_INPUT_NO_AFFECTE
- * - CRC_REVERSE_INPUT_BY_BYTE
- * - CRC_REVERSE_INPUT_BY_HALFWORD
- * - CRC_REVERSE_INPUT_BY_WORD
- * @retval none.
- */
- void crc_reverse_input_data_set(crc_reverse_input_type value)
- {
- CRC->ctrl_bit.revid = value;
- }
- /**
- * @brief control the reversal of the bit order in the output data
- * @param value
- * this parameter can be one of the following values:
- * - CRC_REVERSE_OUTPUT_NO_AFFECTE
- * - CRC_REVERSE_OUTPUT_DATA
- * @retval none.
- */
- void crc_reverse_output_data_set(crc_reverse_output_type value)
- {
- CRC->ctrl_bit.revod = value;
- }
- /**
- * @brief config crc polynomial value
- * @param value
- * 32-bit new data of crc poly value
- * @retval none.
- */
- void crc_poly_value_set(uint32_t value)
- {
- CRC->poly = value;
- }
- /**
- * @brief return crc polynomial value
- * @param none
- * @retval 32-bit value of the polynomial value.
- */
- uint32_t crc_poly_value_get(void)
- {
- return (CRC->poly);
- }
- /**
- * @brief config crc polynomial data size
- * @param size
- * this parameter can be one of the following values:
- * - CRC_POLY_SIZE_32B
- * - CRC_POLY_SIZE_16B
- * - CRC_POLY_SIZE_8B
- * - CRC_POLY_SIZE_7B
- * @retval none.
- */
- void crc_poly_size_set(crc_poly_size_type size)
- {
- CRC->ctrl_bit.poly_size = size;
- }
- /**
- * @brief return crc polynomial data size
- * @param none
- * @retval polynomial data size.
- */
- crc_poly_size_type crc_poly_size_get(void)
- {
- return (crc_poly_size_type)(CRC->ctrl_bit.poly_size);
- }
- /**
- * @}
- */
- #endif
- /**
- * @}
- */
- /**
- * @}
- */
|