Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more
targets/TARGET_NUVOTON/TARGET_NANO100/device/StdDriver/nano100_crc.c@189:f392fc9709a3, 2019-02-20 (annotated)
- Committer:
- AnnaBridge
- Date:
- Wed Feb 20 22:31:08 2019 +0000
- Revision:
- 189:f392fc9709a3
- Parent:
- 174:b96e65c34a4d
mbed library release version 165
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| AnnaBridge | 174:b96e65c34a4d | 1 | /**************************************************************************//** |
| AnnaBridge | 174:b96e65c34a4d | 2 | * @file crc.c |
| AnnaBridge | 174:b96e65c34a4d | 3 | * @version V1.00 |
| AnnaBridge | 174:b96e65c34a4d | 4 | * $Revision: 3 $ |
| AnnaBridge | 174:b96e65c34a4d | 5 | * $Date: 14/09/29 3:50p $ |
| AnnaBridge | 174:b96e65c34a4d | 6 | * @brief Nano100 series CRC driver source file |
| AnnaBridge | 174:b96e65c34a4d | 7 | * |
| AnnaBridge | 174:b96e65c34a4d | 8 | * @note |
| AnnaBridge | 174:b96e65c34a4d | 9 | * Copyright (C) 2014 Nuvoton Technology Corp. All rights reserved. |
| AnnaBridge | 174:b96e65c34a4d | 10 | *****************************************************************************/ |
| AnnaBridge | 174:b96e65c34a4d | 11 | #include "Nano100Series.h" |
| AnnaBridge | 174:b96e65c34a4d | 12 | |
| AnnaBridge | 174:b96e65c34a4d | 13 | |
| AnnaBridge | 174:b96e65c34a4d | 14 | |
| AnnaBridge | 174:b96e65c34a4d | 15 | /** @addtogroup NANO100_Device_Driver NANO100 Device Driver |
| AnnaBridge | 174:b96e65c34a4d | 16 | @{ |
| AnnaBridge | 174:b96e65c34a4d | 17 | */ |
| AnnaBridge | 174:b96e65c34a4d | 18 | |
| AnnaBridge | 174:b96e65c34a4d | 19 | /** @addtogroup NANO100_CRC_Driver CRC Driver |
| AnnaBridge | 174:b96e65c34a4d | 20 | @{ |
| AnnaBridge | 174:b96e65c34a4d | 21 | */ |
| AnnaBridge | 174:b96e65c34a4d | 22 | |
| AnnaBridge | 174:b96e65c34a4d | 23 | |
| AnnaBridge | 174:b96e65c34a4d | 24 | /** @addtogroup NANO100_CRC_EXPORTED_FUNCTIONS CRC Exported Functions |
| AnnaBridge | 174:b96e65c34a4d | 25 | @{ |
| AnnaBridge | 174:b96e65c34a4d | 26 | */ |
| AnnaBridge | 174:b96e65c34a4d | 27 | |
| AnnaBridge | 174:b96e65c34a4d | 28 | /** |
| AnnaBridge | 174:b96e65c34a4d | 29 | * @brief CRC Open |
| AnnaBridge | 174:b96e65c34a4d | 30 | * |
| AnnaBridge | 174:b96e65c34a4d | 31 | * @param[in] u32Mode CRC Polynomial Mode \ref CRC_CCITT, \ref CRC_8, \ref CRC_16, \ref CRC_32 |
| AnnaBridge | 174:b96e65c34a4d | 32 | * @param[in] u32Attribute Parameter attribute \ref CRC_CHECKSUM_COM, \ref CRC_CHECKSUM_RVS, \ref CRC_WDATA_COM, \ref CRC_WDATA_RVS |
| AnnaBridge | 174:b96e65c34a4d | 33 | * @param[in] u32Seed Seed value |
| AnnaBridge | 174:b96e65c34a4d | 34 | * @param[in] u32DataLen CPU Write Data Length \ref CRC_CPU_WDATA_8, \ref CRC_CPU_WDATA_16, \ref CRC_CPU_WDATA_32 |
| AnnaBridge | 174:b96e65c34a4d | 35 | * |
| AnnaBridge | 174:b96e65c34a4d | 36 | * @return None |
| AnnaBridge | 174:b96e65c34a4d | 37 | * |
| AnnaBridge | 174:b96e65c34a4d | 38 | * @details This function enable the CRC channel. |
| AnnaBridge | 174:b96e65c34a4d | 39 | */ |
| AnnaBridge | 174:b96e65c34a4d | 40 | void CRC_Open(uint32_t u32Mode, uint32_t u32Attribute, uint32_t u32Seed, uint32_t u32DataLen) |
| AnnaBridge | 174:b96e65c34a4d | 41 | { |
| AnnaBridge | 174:b96e65c34a4d | 42 | PDMAGCR->GCRCSR |= DMA_GCR_GCRCSR_CRC_CLK_EN_Msk; |
| AnnaBridge | 174:b96e65c34a4d | 43 | PDMACRC->SEED = u32Seed; |
| AnnaBridge | 174:b96e65c34a4d | 44 | PDMACRC->CTL = u32Mode | u32Attribute | u32DataLen | DMA_CRC_CTL_CRCCEN_Msk; |
| AnnaBridge | 174:b96e65c34a4d | 45 | /* When operated in CPU PIO mode, setting RST bit will reload the initial seed value (CRC_SEED register) */ |
| AnnaBridge | 174:b96e65c34a4d | 46 | PDMACRC->CTL |= DMA_CRC_CTL_CRC_RST_Msk; |
| AnnaBridge | 174:b96e65c34a4d | 47 | } |
| AnnaBridge | 174:b96e65c34a4d | 48 | |
| AnnaBridge | 174:b96e65c34a4d | 49 | /** |
| AnnaBridge | 174:b96e65c34a4d | 50 | * @brief CRC Start DMA transfer |
| AnnaBridge | 174:b96e65c34a4d | 51 | * |
| AnnaBridge | 174:b96e65c34a4d | 52 | * @param[in] u32SrcAddr Source address |
| AnnaBridge | 174:b96e65c34a4d | 53 | * @param[in] u32ByteCount Calculate byte count |
| AnnaBridge | 174:b96e65c34a4d | 54 | * |
| AnnaBridge | 174:b96e65c34a4d | 55 | * @return None |
| AnnaBridge | 174:b96e65c34a4d | 56 | * |
| AnnaBridge | 174:b96e65c34a4d | 57 | * @details This function start DMA transfer. |
| AnnaBridge | 174:b96e65c34a4d | 58 | */ |
| AnnaBridge | 174:b96e65c34a4d | 59 | void CRC_StartDMATransfer(uint32_t u32SrcAddr, uint32_t u32ByteCount) |
| AnnaBridge | 174:b96e65c34a4d | 60 | { |
| AnnaBridge | 174:b96e65c34a4d | 61 | PDMACRC->DMASAR = u32SrcAddr; |
| AnnaBridge | 174:b96e65c34a4d | 62 | PDMACRC->DMABCR = u32ByteCount; |
| AnnaBridge | 174:b96e65c34a4d | 63 | PDMACRC->CTL |= DMA_CRC_CTL_TRIG_EN_Msk; |
| AnnaBridge | 174:b96e65c34a4d | 64 | } |
| AnnaBridge | 174:b96e65c34a4d | 65 | |
| AnnaBridge | 174:b96e65c34a4d | 66 | /** |
| AnnaBridge | 174:b96e65c34a4d | 67 | * @brief Get CRC Checksum |
| AnnaBridge | 174:b96e65c34a4d | 68 | * |
| AnnaBridge | 174:b96e65c34a4d | 69 | * @param[in] None |
| AnnaBridge | 174:b96e65c34a4d | 70 | * |
| AnnaBridge | 174:b96e65c34a4d | 71 | * @return Checksum |
| AnnaBridge | 174:b96e65c34a4d | 72 | * |
| AnnaBridge | 174:b96e65c34a4d | 73 | * @details This macro get the CRC checksum |
| AnnaBridge | 174:b96e65c34a4d | 74 | */ |
| AnnaBridge | 174:b96e65c34a4d | 75 | uint32_t CRC_GetChecksum(void) |
| AnnaBridge | 174:b96e65c34a4d | 76 | { |
| AnnaBridge | 174:b96e65c34a4d | 77 | switch (PDMACRC->CTL & DMA_CRC_CTL_CRC_MODE_Msk) { |
| AnnaBridge | 174:b96e65c34a4d | 78 | case CRC_CCITT: |
| AnnaBridge | 174:b96e65c34a4d | 79 | case CRC_16: |
| AnnaBridge | 174:b96e65c34a4d | 80 | return (PDMACRC->CHECKSUM & 0xffff); |
| AnnaBridge | 174:b96e65c34a4d | 81 | |
| AnnaBridge | 174:b96e65c34a4d | 82 | case CRC_32: |
| AnnaBridge | 174:b96e65c34a4d | 83 | return (PDMACRC->CHECKSUM); |
| AnnaBridge | 174:b96e65c34a4d | 84 | |
| AnnaBridge | 174:b96e65c34a4d | 85 | case CRC_8: |
| AnnaBridge | 174:b96e65c34a4d | 86 | return (PDMACRC->CHECKSUM & 0xff); |
| AnnaBridge | 174:b96e65c34a4d | 87 | |
| AnnaBridge | 174:b96e65c34a4d | 88 | default: |
| AnnaBridge | 174:b96e65c34a4d | 89 | return 0; |
| AnnaBridge | 174:b96e65c34a4d | 90 | } |
| AnnaBridge | 174:b96e65c34a4d | 91 | } |
| AnnaBridge | 174:b96e65c34a4d | 92 | |
| AnnaBridge | 174:b96e65c34a4d | 93 | |
| AnnaBridge | 174:b96e65c34a4d | 94 | /*@}*/ /* end of group NANO100_CRC_EXPORTED_FUNCTIONS */ |
| AnnaBridge | 174:b96e65c34a4d | 95 | |
| AnnaBridge | 174:b96e65c34a4d | 96 | /*@}*/ /* end of group NANO100_CRC_Driver */ |
| AnnaBridge | 174:b96e65c34a4d | 97 | |
| AnnaBridge | 174:b96e65c34a4d | 98 | /*@}*/ /* end of group NANO100_Device_Driver */ |
| AnnaBridge | 174:b96e65c34a4d | 99 | |
| AnnaBridge | 174:b96e65c34a4d | 100 | /*** (C) COPYRIGHT 2013 Nuvoton Technology Corp. ***/ |


