mbed library sources. Supersedes mbed-src.
Dependents: Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more
targets/TARGET_NUVOTON/TARGET_NANO100/device/StdDriver/nano100_crc.c@174:b96e65c34a4d, 2017-10-02 (annotated)
- Committer:
- AnnaBridge
- Date:
- Mon Oct 02 15:33:19 2017 +0100
- Revision:
- 174:b96e65c34a4d
This updates the lib to the mbed lib v 152
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. ***/ |