上一篇《1. 实战数字音频处理——引子 认识Xtensa HIFI DSP》本篇开始我们将一步步进入DSP处理的实战演练之中。在数字信号处理中第一步往往都是把信号从时域(timde domain)转换到频域(frequency domain)。这一步涉及到时域信号的分帧加窗短时傅里叶变换(stft)等。然后经过一系列的频域信号处理最后经过短时傅里叶逆变换(istft)加窗OLA操作最终恢复成时域信号。1. 认识开发和调试环境首先熟悉一下开发板这是一个typec接口的小白盒用typec线连接到电脑就可以了。然后运行一个批处理“一键开发dsp.bat”就会出现三个dos标签分别是debug(调试)load(加载)compile(编译)如下图所示。debug标签我们可以发调试命令,例如获取单板信息读写内存等用的是python脚本。load标签我们可以重新加载DSP程序并运行用的是python脚本。compile标签我们可以编译DSP代码生成二进制文件供加载。用的是Xtensa的DSP开发DSK。DSP工程结构和编译假如你当前目录是workdir\proj1proj1里面存放你的工程。我们的工程是基于makefile命令行编译的所以你只要在compile标签下执行xt-make all命令即可。当然你要先安装好DSP的sdk。可以从Tensilca公司的主页上获取可以私信我安装方法。主要代码constshortsin_v[]{0,0,12539,100,23169,200,30272,300,32767,400,30272,500,23169,600,12539,700,0,800,-12540,900,-23170,1000,-30273,2000,-32767,3000,-30273,4000,-23170,5000,-12540,6000};staticvoidprocess_frame(void){short*micStream[2];short*refStream[2];inti,cnt;if(waitAMicLRFrame(refStream,micStream)0)return;/*这里获得了micStream数据正常是处理之后返回到refStream我这里是直接覆盖成为调试数据*/for(i0;i256;i){refStream[1][i]sin_v[(2*i0)31];//左声道正弦波refStream[0][i]sin_v[(2*i1)31];//右声道斜坡}debug_control.frame_count;}intmain(intargc,char*argv[]){init_hw();for(;;){process_frame();}return0;}在compile标签下执行xt-make all编译完成后得到bin文件。然后在load标签下运行python.exe load_bin.py自动完成加载并运行代码。运行起来之后你可以用录音软件例如cool edit pro之类选dsp对应的声卡设备录制一个2声道16khz采样的录音会得到类似下面的波形左声道是一个1khz的正弦波右声道是一个斜坡波形。如下图所示在debug标签下还可以读取dsp内存数据。例如连续两次的dump 0x5fe00000可以看到debug_control变量的计数变化限于篇幅本博文就讲到这里后续文章将继续《3. 实战数字音频处理——HIFI DSP 的定点FFT/IFFT以及加窗和OLA操作实践2》