mbed library sources. Supersedes mbed-src.

Dependents:   Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more

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?

UserRevisionLine numberNew 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. ***/