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.
Fork of dsp by
arm_fir_interpolate_init_f32.c
00001 /*----------------------------------------------------------------------------- 00002 * Copyright (C) 2010 ARM Limited. All rights reserved. 00003 * 00004 * $Date: 29. November 2010 00005 * $Revision: V1.0.3 00006 * 00007 * Project: CMSIS DSP Library 00008 * Title: arm_fir_interpolate_init_f32.c 00009 * 00010 * Description: Floating-point FIR interpolator initialization function 00011 * 00012 * Target Processor: Cortex-M4/Cortex-M3 00013 * 00014 * Version 1.0.3 2010/11/29 00015 * Re-organized the CMSIS folders and updated documentation. 00016 * 00017 * Version 1.0.2 2010/11/11 00018 * Documentation updated. 00019 * 00020 * Version 1.0.1 2010/10/05 00021 * Production release and review comments incorporated. 00022 * 00023 * Version 1.0.0 2010/09/20 00024 * Production release and review comments incorporated 00025 * 00026 * Version 0.0.7 2010/06/10 00027 * Misra-C changes done 00028 * ---------------------------------------------------------------------------*/ 00029 00030 #include "arm_math.h" 00031 00032 /** 00033 * @ingroup groupFilters 00034 */ 00035 00036 /** 00037 * @addtogroup FIR_Interpolate 00038 * @{ 00039 */ 00040 00041 /** 00042 * @brief Initialization function for the floating-point FIR interpolator. 00043 * @param[in,out] *S points to an instance of the floating-point FIR interpolator structure. 00044 * @param[in] L upsample factor. 00045 * @param[in] numTaps number of filter coefficients in the filter. 00046 * @param[in] *pCoeffs points to the filter coefficient buffer. 00047 * @param[in] *pState points to the state buffer. 00048 * @param[in] blockSize number of input samples to process per call. 00049 * @return The function returns ARM_MATH_SUCCESS if initialization was successful or ARM_MATH_LENGTH_ERROR if 00050 * the filter length <code>numTaps</code> is not a multiple of the interpolation factor <code>L</code>. 00051 * 00052 * <b>Description:</b> 00053 * \par 00054 * <code>pCoeffs</code> points to the array of filter coefficients stored in time reversed order: 00055 * <pre> 00056 * {b[numTaps-1], b[numTaps-2], b[numTaps-2], ..., b[1], b[0]} 00057 * </pre> 00058 * The length of the filter <code>numTaps</code> must be a multiple of the interpolation factor <code>L</code>. 00059 * \par 00060 * <code>pState</code> points to the array of state variables. 00061 * <code>pState</code> is of length <code>(numTaps/L)+blockSize-1</code> words 00062 * where <code>blockSize</code> is the number of input samples processed by each call to <code>arm_fir_interpolate_f32()</code>. 00063 */ 00064 00065 arm_status arm_fir_interpolate_init_f32( 00066 arm_fir_interpolate_instance_f32 * S, 00067 uint8_t L, 00068 uint16_t numTaps, 00069 float32_t * pCoeffs, 00070 float32_t * pState, 00071 uint32_t blockSize) 00072 { 00073 arm_status status; 00074 00075 /* The filter length must be a multiple of the interpolation factor */ 00076 if((numTaps % L) != 0u) 00077 { 00078 /* Set status as ARM_MATH_LENGTH_ERROR */ 00079 status = ARM_MATH_LENGTH_ERROR; 00080 } 00081 else 00082 { 00083 00084 /* Assign coefficient pointer */ 00085 S->pCoeffs = pCoeffs; 00086 00087 /* Assign Interpolation factor */ 00088 S->L = L; 00089 00090 /* Assign polyPhaseLength */ 00091 S->phaseLength = numTaps / L; 00092 00093 /* Clear state buffer and size of state array is always phaseLength + blockSize - 1 */ 00094 memset(pState, 0, 00095 (blockSize + 00096 ((uint32_t) S->phaseLength - 1u)) * sizeof(float32_t)); 00097 00098 /* Assign state pointer */ 00099 S->pState = pState; 00100 00101 status = ARM_MATH_SUCCESS; 00102 } 00103 00104 return (status); 00105 00106 } 00107 00108 /** 00109 * @} end of FIR_Interpolate group 00110 */
Generated on Tue Jul 12 2022 19:55:43 by
1.7.2
