基于DSP的多功能音乐控制系统设计(原创)请大家多多支持
0赞原本准备写小论文的今天突然看到这个活动感觉非常好所以就写了这篇博文整个系统的功能只是对于我平时学习的一个总结有不妥之处还请广大学友批评指点呵呵
1 引言
本文介绍了一种基于DSP的多功能音乐控制系统的设计,可以实现对于一段音乐的采集和放音、可以通过键盘实现音乐谱曲、歌曲选择,可以实现通过相应的LED配合音乐的显示播放等功能。整个系统的设计仅仅是实现了多功能音乐控制系统的基本功能,至于功能的优化还可以进行板卡的二次开发。本文主要想从硬件设计到软件开发,给广大学友提供一个具体可行的参考设计。
2 硬件结构设计
整个系统的设计主要由TMS320C5509DSP、电源、数据存储器SRAM、程序存储器FLASH、MCBSP扩展接口、语音编解码芯片、键盘和液晶显示屏组成,如图1所示。

键盘可以通过中断实现对于歌曲的选择,例如“老虎”等,另外通过不同的按键识别可以实现简单的“1”“2”等音乐谱曲功能;语音编解码芯片可以实现对于语音信号的简单播放功能;LED指示灯可以通过播放的音乐,配合整个歌曲的播放;存储设备可以用来暂时存储歌曲,另外通过LCD液晶显示还可以查看整个系统的运行状态。
下面主要介绍一下系统的核心芯片
DSP处理芯片
TMS320C55X是TI公司16-bit定点DSP,主要适合于高速的数字信号处理。其运算速率高,可以达到300MHZ。先进的多总线结构,16个软件可编程的等待状态发生器,具有丰
富的片内、偏外存储单元,多级流水线结构,具有多通道缓冲接口以及并行接口。TMS320C55X系列DSP具有3个多通道缓冲串口,其中每个缓冲串口具有7个引脚,其中分别是发送、接收数据引脚DX、DR,接收、发送时钟同步引脚CLKR、CLKX,接收、发送帧同步引脚FSR、FSX,以及外部时钟引脚CLKS。系统通过I2C总线实现对于语音芯片的配置。
LCD显示芯片1602
单5V电源电压,低功耗、长寿命、高可靠性
内置192种字符(160个5*7点阵字符和32个5*10点阵字符)
具有64个字节的自定义字符RAM,可定义8个5*8点阵字符或4个5*11点阵字符
显示方式:SIN、半透、正显
驱动方式:1/16DUTY,1/5BIAS
视角方向:6点
背光方式:底部LED
通讯方式:4位或8位并口可选
语音编解码芯片
TLV320AIC23,内置耳机输出放大器,话筒输入方式。输入和输出都具有可编程的增益调节功能。.采用先进的Σ一△过采样技术.可以在8kHz至96kHz的采样率下提供16bit、20bit、24bit和32bit的采样数据。ADC和DAC的输出信噪比分别可达90dB和100dB。同时。TLV320AIC23还具有很低的功耗(回放模式为23mW。节电模式为15μw)。
3 软件设计实现及其代码分析
整个系统的设计采用片上支持库的形式进行开发,主要包括DSP时钟配置,MCBSP多功能缓冲串口配置,语音编解码芯片配置,LCD液晶显示配置,键盘扫描方式等。由于系统代码太长,这里仅对核心代码对详细的分析:
音频编解码芯片配置:
/*数字音频接口格式设置
AIC23为主模式,数据为DSP模式,数据长度16位*/
Uint16 digital_audio_inteface_format[2]={0x0e,0x53};//8-9数字音频格式
/*AIC23的波特率设置,采样率为44.1K*/
Uint16 sample_rate_control[2] = {0x10,0x23};//8-10采样速率控制USB模式1=272 272*44.1=12M 基础速率比=1
/*AIC23寄存器复位*/
Uint16 reset[2] ={0x1e,0x00};//8-12全部写0 代表可以开始初始化
/*AIC23节电方式设置,所有部分均所与工作状态*/
Uint16 power_down_control[2] ={0x0c,0x01};//8-8 打开设备电源 时钟 振荡器 输出 打开DAC ADC 麦克风输入 线性输入关闭
/*AIC23模拟音频的控制
DAC使能,ADC输入选择为Line*/
Uint16 analog_aduio_path_control[2] ={0x08,0x14};//8-6 DAC选择麦克风输入
/*AIC23数字音频通路的控制*/
Uint16 digital_audio_path_control[2] ={0x0a,0x05};//8-7 ADC滤波器激活消除高频成分44.1KHZ
/*AIC23数字接口的使能*/
Uint16 digital_interface_activation[2] ={0x12,0x01};//8-11数字接口激活
/*AIC23左通路音频调节*/
Uint16 left_line_input_volume_control[2] ={0x00,0x17};//8-2左声道输入正常衰减 衰减XXDB
/*AIC23右通路音频调节*/
Uint16 right_line_input_volume_control[2] ={0x02,0x17};//8-3右声道输入正常衰减衰减XXDB
/*AIC23耳机左通路音频调节*/
Uint16 left_headphone_volume_control[2] ={0x05,0xFF};//8-4音量调节
/*AIC23耳机右通路音频调节*/
Uint16 right_headphone_volume_control[2] = {0x07,0xFF};//8-5音量调节
配置好芯片之后我们开始对于整个系统进行编程开发:
如下程序所示:
if(play_mode==1) //record and play
{
while(!MCBSP_xrdy(hMcbsp)){};
aic23data = MCBSP_read16(hMcbsp);
for(temp=3000;temp>0;temp--);
while(!MCBSP_rrdy(hMcbsp)){};
MCBSP_write16(hMcbsp,aic23data);
}
本段主要在play_mode的模式选择下实现某些功能,例如当play_mode=1的时候,整个系统实现对于音乐的实时采集播放功能。
例如play_mode=2的时候实现对于两只老虎的音乐播放功能。
if(play_mode==2) //两只老虎
{for(i=0;i<30;i++) //dao 1
{
aic23data = 50000;
MCBSP_write16(hMcbsp,aic23data);
delay(52300*0.7);
aic23data = 0;
MCBSP_write16(hMcbsp,aic23data);
delay(52300*0.7);
}。。。。。。。}
以上代码为两只老虎中的“两”的源程序代码。频率延时时间为52300*0.7。可以通过具体的DSP运行时钟进行换算,这里就不做一一介绍。
由于篇幅关系以上仅对于语音部分的配置及简单使用做了一个详细的说明,其他部分就不一一在这里详述。
下面是两只老虎的语音仿真波形

4 结束语
以上就是小妹的“小作”,有不妥之处还请广大网友批评指正,最后欢迎大家投我一票小妹在这里谢过了 !!!
