📄 manage.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 + -