⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 manage.h

📁 基于DSP的语音FLASH存储
💻 H
字号:
static int VECTOR(int t,short	*tmp,int n)
{
	int		i;

	for (i = 0; i < n; i++) 
		if (t <= *tmp++) return i;
	return n;
}

//...初始化codec
void init_codec()
{
    /* Open Handset Codec */
    Instance = codec_open(HANDSET_CODEC);             // Acquire handle to codec 
    /* Set codec parameters */
    codec_dac_mode(Instance, CODEC_DAC_15BIT);             // DAC in 15-bit mode 
    codec_adc_mode(Instance, CODEC_ADC_15BIT);             // ADC in 15-bit mode 
    codec_ain_gain(Instance, CODEC_AIN_6dB);  // 6dB gain on analog input to ADC 
    codec_aout_gain(Instance, CODEC_AOUT_MINUS_6dB);    
                                          // -6dB gain on analog output from DAC 
    codec_sample_rate(Instance,SR_16000);                 // 16KHz sampling rate 
}

//...压缩
unsigned char condensation(s16 v_sample)	     
{
	int		flag;
	int		temp;
	unsigned char	val;

	if (voice_sample >= 0) 
	{
		flag = 0xD5;		                   // 标记 (7th) bit = 1
	} 
	else 
	{
		flag = 0x55;		                         // 标记 bit = 0 
		v_sample = -v_sample;
	}
		// Convert the scaled magnitude to segment number. 
	temp = VECTOR(v_sample, seg, 8);           

        // Combine the sign, segment, and quantization bits. 
    if (temp >= 8)// out of range, 返回最大数. 
		return (0x7F ^ flag);
	else 
	{
		val = temp << SEG_SHIFT;
		if (temp < 2)
			val |= (v_sample >> 1) & QUANT_MASK;
		else
			val |= (v_sample >>temp) & QUANT_MASK;

		return val ^ flag;
	}
}

//...解压缩
int decompression(unsigned char	v_sample)
{
	int		t;
	int		temp;

	v_sample ^= 0x55;
    t = (v_sample & QUANT_MASK) << 4;
	temp = ((unsigned)v_sample & SEG_MASK) >> SEG_SHIFT;
	if(temp==0) 
	{
	 	t += 8;
	 	t=(t>>3);
	}
	if((temp<4)&&(temp>0)) 
	{
	 	t +=0x108;
	 	t=(t>>(4-temp));
	}
	if(temp>3)
	{
		t+=0x108;
		t=(t<<=(temp-4));
	}
	return ((v_sample & SIGN_BIT) ? t : -t);
}

/*****设置flash****/
void FALSH(void)
{
	CPLD_CTRL2_REG|=0x0020;
	CPLD_DMCTRL_REG|=0x0080;
}

//...延时
void _delay(s16 t)
{
	int i,j;
    for(i=0; i<t; i++)
        for(j=0; j<t<<1; j++);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -