基于TMSVC芯片的语音采集系统Word文档格式.doc
- 文档编号:4014395
- 上传时间:2023-05-02
- 格式:DOC
- 页数:16
- 大小:634.50KB
基于TMSVC芯片的语音采集系统Word文档格式.doc
《基于TMSVC芯片的语音采集系统Word文档格式.doc》由会员分享,可在线阅读,更多相关《基于TMSVC芯片的语音采集系统Word文档格式.doc(16页珍藏版)》请在冰点文库上搜索。
系统软件设计
语音信号在基于DSP的语音处理系统上处理过程的软件流程图如下:
程序流程图
要正确配置DSP的时钟发生器,产生DSP工作的正常时钟频率,这一个步骤的关键就是数字琐相环PLL的应用。
I2C模块是TMS320VC55xx新增的片内集成外设,通过I2C对TLV320AIC23进行编程控制,可以使DSP与I2C兼容设备通过该接口进行数据通信。
通过硬件和软件调试,最终成功采集到语音信号并播放出来,可以在CCS软件中观察到采集到的语音信号的波形。
改变程序中的延迟参数,可以明显改变混响效果。
硬件电路设计
2.1总输入电路(自行总结设计)
从左到右各部分电路为:
话筒,开关,语音输入电路,UA741高增益放大电路,有源二阶带通滤波器。
2.2总输出电路(自行总结设计)
LM386高频功率放大器及其外围器件连接电路,语音输出电路,开关,扬声器。
2.3语音输入与语音输出电路
语音输入电路
语音输出电路
语音信号通道包括模拟输入和模拟输出两个部分。
模拟信号的输入输出电路如图所示。
上图中MICBIAS为提供的麦克风偏压,通常是3/4AVDD,MICIN为麦克风输入,可以根据需要调整输入增益。
下图中LLINEOUT为左声道输出,RLINEOUT为右声道输出。
用户可以根据电阻阻值调节增益的大小,使语音输入输出达到最佳效果。
从而实现良好的模拟语音信号输入与模拟信号的输出。
一.程序设计
语音采集与回放:
externvoidInitC5402(void);
externvoidOpenMcBSP(void);
externvoidCloseMcBSP(void);
externvoidREADAD50(void);
externvoidWRITEAD50(void);
/***********************************************************************
**MainFunctionProgram
***********************************************************************/
#include"
stdio.h"
math.h"
#definepi3.1415926
voidmain(void)
{
intk=0;
intx_ad,y_da;
int*px=(int*)0x3000;
int*py=(int*)0x3100;
// for(;
;
)
{
InitC5402();
OpenMcBSP();
for(;
{
//for(j=0;
j<
=4;
j++)
{
READAD50();
px=(int*)(0x3000);
x_ad=*px;
y_da=x_ad;
py=(int*)(0x3100);
*py=y_da;
WRITEAD50();
k++;
}
}
}
Asm文件:
.global_InitC5402
.global_OpenMcBSP
.global_CloseMcBSP
.global_READAD50
.global_WRITEAD50
.includeMMRegs.h
_InitC5402:
NOP
LD#0,DP;
resetdata–pagepointer
STM#0,CLKMD;
softwaresettingofDSPclock
(todividermodebeforesetting)
TstStatu1:
LDMCLKMD,A
AND#01b,A;
pollSTATUSbit
BCTstStatu1,ANEQ
STM#0xF7ff,CLKMD;
setC5402DSPclockto10MHz
*STM#0x4007,CLKMD;
setC5402DSPclockto100MHz
;
(basedonDSKcrystalat20MHz)
*******ConfigureC5402SystemRegisters*******
STM#0x2000,SWWSR;
2waitcycleforIOspace&
0waitcyclefordata&
progspaces
STM#0x0000,BSCR;
setwaitstatesforbankswitch:
64kmembank,extra0cyclebetween
consecutiveprog/dataread
STM#0x1800,ST0;
ST0atdefaultsetting
STM#0x2900,ST1;
ST1atdefaultsetting(note:
INTX=1)
STM#0x00A0,PMST;
MCmode&
OVLY=1,vectorsat0080h
*******SetupTimerControlRegisters*******
STM#0x0010,TCR;
stopon–chiptimer0
STM#0x0010,TCR1;
stopon–chiptimer1
Timer0isusedasmainlooptimer
STM#2499,PRD;
timer0rate=CPUCLK/1/(PRD+1)
=40M/2500=16KHz
*STM#6249,PRD;
ifCPUat100M/6250=16KHz
*******InitializeMcBSP1Registers*******
STMSPCR1,McBSP1_SPSA;
registersubaddrofSPCR1
STM#0000h,McBSP1_SPSD;
McBSP1recv=left–justify
RINTgeneratedbyframesync
STMSPCR2,McBSP1_SPSA;
registersubaddrforSPCR2
XINTgeneratedbyframesync
McBSP1Tx=FREE(clockstops
torunafterSWbreakpoint
STMRCR1,McBSP1_SPSA;
registersubaddrofRCR1
STM#0040h,McBSP1_SPSD;
recvframe1Dlength=16bits
STMRCR2,McBSP1_SPSA;
registersubaddrofRCR2
recvPhase=1
retframe2Dlength=16bits
STMXCR1,McBSP1_SPSA;
registersubaddrofXCR1
setthesameasrecv
STMXCR2,McBSP1_SPSA;
registersubaddrofXCR2
STMPCR,McBSP1_SPSA;
registersubaddressofPCR
STM#000eh,McBSP1_SPSD;
clkandframefromexternal(slave)
FSatpulse–mode(00)
*******FinishDSPInitialization*******
STM#0x0000,IMR;
disableperipheralinterrupts
STM#0xFFFF,IFR;
cleartheintrupts’flags
RET;
returntomain
NOP
*******WaitingforMcBSP0RXFinished*******
IfRxRDY1:
enableMcBSP1Rx
LDMMcBSP1_SPSD,A
AND#0002h,A;
maskRRDYbit
BCIfRxRDY1,AEQ;
keepchecking
return
*******WaitingforMcBSP0TXFinished*******
IfTxRDY1:
enableMcBSP1Tx
maskTRDYbit
BCIfTxRDY1,AEQ;
keepchecking
******************************************
_OpenMcBSP:
rsbxxf
callwait
enableMcBSP0RXforADCdatain
LDMMcBSP1_SPSD,A
OR#0x0001,A
STLMA,McBSP1_SPSD
enableMcBSP0TXforDTMFout
LD#0h,DP;
loaddatapage0
rpt#23
NOP
ssbxxf
CALLIfTxRDY1
STM#0x0101,McBSP1_DXR1
STM#0x0208,McBSP1_DXR1
rsbx xf
NOP
NOP
CALLIfTxRDY1
STM#0x0001,McBSP1_DXR1;
requestsecondarycommunication
CALLIfTxRDY1
STM#0100h,McBSP1_DXR1;
write00htoregister1
STM#0000h,McBSP1_DXR1
rpt#20h
nop
STM#0200h,McBSP1_DXR1;
write00htoregister2
STM#0000h,McBSP1_DXR1
CALLIfTxRDY1
STM#0300h,McBSP1_DXR1;
write00htoregister3
STM#0490h,McBSP1_DXR1;
write00htoregister4
;
bypassinternalDPLL
andselecttheSampleFrequency
STM#0x0001,McBSP1_DXR1
STM#0102h,McBSP1_DXR1;
enabledigitalloopback
STM#0208h,McBSP1_DXR1;
enableanalogloopback
RET
*********************
_CloseMcBSP:
disableMcBSP0RX
AND#0xFFFE,A
disableMcBSP0TX
RPT#5
_READAD50:
stm 0x00ff,ar3
stm 0x3000,ar2
loopa:
CALLIfRxRDY1
ldm McBSP1_DRR1,b
stl b,*ar2+
banzloopa,*ar3-
nop
ret
_WRITEAD50:
stm 0x3100,ar2
loopb:
CALL IfTxRDY1
ldu *ar2+,B
and#0fffeh,b;
masktheLSB
stlmB,McBSP1_DXR1
banz loopb,*ar3-
wait:
stm 20h,ar3
loop1:
stm 020h,ar4
loop2:
banz loop2,*ar4-
banz loop1,*ar3-
ret
.end
A/D模块:
xternvoidInitC5402(void);
InitC5402();
OpenMcBSP();
初始化串口和AD50C
while
(1)
READAD50();
}
}
D/A模块:
{
WRITEAD50();
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 TMSVC 芯片 语音 采集 系统