DSP实验音频控制.docx
- 文档编号:10361905
- 上传时间:2023-02-10
- 格式:DOCX
- 页数:23
- 大小:76.74KB
DSP实验音频控制.docx
《DSP实验音频控制.docx》由会员分享,可在线阅读,更多相关《DSP实验音频控制.docx(23页珍藏版)》请在冰豆网上搜索。
DSP实验音频控制
实验四:
音频
1、实验原理
多通道缓冲串口McBSP概述
•全双工通信
•双缓冲数据寄存器,允许连续的数据流。
•收发独立的帧信号和时钟信号
•可以与工业标准的编/解码器,以及其它串行A/D、D/A接口
•数据传输可以利用外部时钟、或是片内的可编程时钟。
•利用DMA为McBSP服务时,串口数据读写具有自动缓冲能力。
•可与多达128个通道进行收发;
•支持传输的数据字长可以是8bit、12bit、16bit、20bit、24bit、32bit
•内置u律和A律压扩硬件。
•对8bit数据的传输,可选择LSB先传,还是MSB先传。
•可设置帧同步信号和数据时钟信号的极性。
•内部传输时钟和帧同步信号可编程程度高。
2、硬件资源和在片外围电路
硬件资源:
CPU、LED、按键、显示屏、耳机和麦克插孔、电阻、电容等
在片外围电路:
时钟发生器、定时器、通用输入/输出口(GPIO)、主机接口(EHPI)、外部存储器接口(EMIF)、DMA控制器等
3、参数设置
配置CE0和CE1寄存器的存储类型为16位宽的SDRAM;
DST(SRC)=xx10,目的(源)为EMIF;
DST(SRC)=xx10,目的(源)为外设;
DST(SRC)AMODE=00,目的(源)地址为固定地址;
DST(SRC)AMODE=01,目的(源)地址在每个数据单元传输完成后自动加1;
AIC23的波特率设置,0x23采样率为44.1K,0x0c采样率为8K;
4、实验流程图
5、程序
课通过改变12864字符得到自己想要编写或改变的中文字符。
voidmain(void)
{
i2c_status=1;
/*InitializeCSLlibrary-ThisisREQUIRED!
!
!
*/
/*初始化CSL库*/
CSL_init();
CHIP_RSET(XBSR,0x0a01);
GPIO_RSET(IODIR,0xFF);//GPIO方向寄存器IODIR,0,配置为输入,1,配置为输出,此处将0~7管脚全部配置成输出
/*设置系统的运行速度为144MHz*/
PLL_config(&myConfig);
/*初始化DSP的外部SDRAM*/
EMIF_config(&emiffig);
lcd_init();
display1();
/*向SDRAM中写入数据*/
souraddr=(unsignedint*)0x020000;
tempaddr=(unsignedint*)0x020000;
deminaddr=(unsignedint*)0x3fffff;
addr=0x20000;
temp_addr=0x20000;
/*InitializeI2C,usingparametersininitstructure*/
/*初始化I2C的格式*/
//I2C_config(&Config);
//I2C_start();
//I2C_getConfig(&Config1);
/*I2Cisundetreset*/
I2C_RSET(I2CMDR,0);
/*设置预分频寄存器,I2C的modeclockis10MHz*/
delay(100);
I2C_RSET(I2CSAR,0x001A);
I2C_RSET(I2CMDR,0x0620);
I2C_setup(&I2Cinit);
/*设置I2C的Materclock*/
I2C_RSET(I2CCLKL,100);
I2C_RSET(I2CCLKH,100);
I2C_getConfig(&testI2C);
aic_init();
DMA_init();
/*初始化McBSP1*/
hMcbsp=MCBSP_open(MCBSP_PORT1,MCBSP_OPEN_RESET);
/*设置McBSP1*/
MCBSP_config(hMcbsp,&Mcbsp1Config);
/*启动McBSP0*/
MCBSP_start(hMcbsp,
MCBSP_RCV_START|MCBSP_XMIT_START,
0);
LBDS1=0x0fff;
/*回放音频*/
nin=0;
n=0;
k=0;
volume=8;
temp_volume=8;
while(TRUE)
{
dealkey();
if(stand_record==1)
{
i2c_status=I2C_write(analog_aduio_path_control,//pointertodataarray
2,//lengthofdatatobetransmitted
1,//masterorslaver
CODEC_ADDR,//slaveaddresstotransmitto
1,//transfermodeofoperation
30000//timeoutforbusbusy
);
display2();
souraddr=(unsignedint*)0x20000;
deminaddr=(unsignedint*)0x3fffff;
nin=(long)souraddr%65536;
bcount=0;
k=0;
while(souraddr { dealkey(); stand_recordsound(); if(volume! =temp_volume) { wr_lcd(comm,0x9a); wr_lcd(dat,0x3a);//": " wr_lcd(dat,0x30+volume); volume_control(); temp_volume=volume; } } } if(stand_replay==1) { display4(); if(k==0) { souraddr=(unsignedint*)0x20000; k=1; } else { souraddr=stopaddr; deminaddr=tempaddr; } startaddr=souraddr; nin=(long)souraddr%65536; bcount=((long)souraddr>>16)-2; while(souraddr { dealkey(); stand_replaysound(); if(volume! =temp_volume) { wr_lcd(comm,0x9a); wr_lcd(dat,0x3a);//": " wr_lcd(dat,0x30+volume); volume_control(); temp_volume=volume; } } } if(stand_stop==1) { display5(); while(stand_stop==1) dealkey(); } if(repeat==1) { display6(); souraddr=startaddr; deminaddr=stopaddr; nin=(long)souraddr%65536; bcount=((long)souraddr>>16)-2; while(souraddr { dealkey(); repeatsound(); if(volume! =temp_volume) { wr_lcd(comm,0x9a); wr_lcd(dat,0x3a);//": " wr_lcd(dat,0x30+volume); volume_control(); temp_volume=volume; } } } if(record==1) { i2c_status=I2C_write(analog_mic_path_control,//pointertodataarray 2,//lengthofdatatobetransmitted 1,//masterorslaver CODEC_ADDR,//slaveaddresstotransmitto 1,//transfermodeofoperation 30000//timeoutforbusbusy ); display7(); numTransfers=0; addr=(Uint32)tempaddr; dstAddrHi=(Uint16)(addr>>15)&0xFFFFu; dstAddrLo=(Uint16)(addr<<1)&0xFFFFu; DMA_RSETH(mhDmaRcv,DMACDSAU,dstAddrHi); DMA_RSETH(mhDmaRcv,DMACDSAL,dstAddrLo); DMA_RSETH(mhDmaRcv,DMACEN,N); DMA_RSETH(mhDmaRcv,DMACFN,1); /*Setprogrammationbitto1,ENDPROG=1)*/ DMA_FSETH(mhDmaRcv,DMACCR,ENDPROG,1); /*EnableDMAchanneltobegintransfer*/ DMA_start(mhDmaRcv); deminaddr=(unsignedint*)0x3fffff; while(record) { dealkey(); if(replay==1) { DMA_stop(mhDmaRcv); deminaddr=(unsignedint*)(addr-1024); } if((unsignedint*)addr>=deminaddr) { record=0; replay=1; } } } if(replay==1) { replay=0; transferComplete=0; display8(); addr1=(Uint32)tempaddr; dstAddrHi=(Uint16)(addr1>>15)&0xFFFFu; dstAddrLo=(Uint16)(addr1<<1)&0xFFFFu; DMA_RSETH(mhDmaXmt,DMACSSAU,dstAddrHi); DMA_RSETH(mhDmaXmt,DMACSSAL,dstAddrLo); DMA_RSETH(mhDmaXmt,DMACEN,N); DMA_RSETH(mhDmaXmt,DMACFN,numTransfers); /*Setprogrammationbitto1,ENDPROG=1)*/ DMA_FSETH(mhDmaXmt,DMACCR,ENDPROG,1); DMA_FSETH(mhDmaXmt,DMACCR,AUTOINIT,0); DMA_start(mhDmaXmt); while(! transferComplete) { dealkey(); if(volume! =temp_volume) { //wr_1602(comm_1602,0xc7); //wr_1602(dat_1602,0x30+volume); wr_lcd(comm,0x9a); wr_lcd(dat,0x3a);//": " wr_lcd(dat,0x30+volume); volume_control(); temp_volume=volume; } } } } } voidaic_init() { /*resetAIC23*/ i2c_status=I2C_write(reset,//pointertodataarray 2,//lengthofdatatobetransmitted 1,//masterorslaver CODEC_ADDR,//slaveaddresstotransmitto 1,//transfermodeofoperation 30000//timeoutforbusbusy ); delay(1000); /*设置AIC23各部分均工作*/ i2c_status=I2C_write(power_down_control,//pointertodataarray 2,//lengthofdatatobetransmitted 1,//masterorslaver CODEC_ADDR,//slaveaddresstotransmitto 1,//transfermodeofoperation 30000//timeoutforbusbusy ); /*设置AIC23的数字接口*/ i2c_status=I2C_write(digital_audio_inteface_format,//pointertodataarray 2,//lengthofdatatobetransmitted 1,//masterorslaver CODEC_ADDR,//slaveaddresstotransmitto 1,//transfermodeofoperation 30000//timeoutforbusbusy ); /*设置AIC23模拟通路*/ i2c_status=I2C_write(analog_aduio_path_control,//pointertodataarray 2,//lengthofdatatobetransmitted 1,//masterorslaver CODEC_ADDR,//slaveaddresstotransmitto 1,//transfermodeofoperation 30000//timeoutforbusbusy ); /*设置数字通路*/ i2c_status=I2C_write(digital_audio_path_control,//pointertodataarray 2,//lengthofdatatobetransmitted 1,//masterorslaver CODEC_ADDR,//slaveaddresstotransmitto 1,//transfermodeofoperation 30000//timeoutforbusbusy ); /*设置AIC23的采样率*/ i2c_status=I2C_write(sample_rate_control,//pointertodataarray 2,//lengthofdatatobetransmitted 1,//masterorslaver CODEC_ADDR,//slaveaddresstotransmitto 1,//transfermodeofoperation 30000//timeoutforbusbusy ); /*设置耳机音量*/ i2c_status=I2C_write(left_volume[8],//pointertodataarray 2,//lengthofdatatobetransmitted 1,//masterorslaver CODEC_ADDR,//slaveaddresstotransmitto 1,//transfermodeofoperation 30000//timeoutforbusbusy ); i2c_status=I2C_write(right_volume[8],//pointertodataarray 2,//lengthofdatatobetransmitted 1,//masterorslaver CODEC_ADDR,//slaveaddresstotransmitto 1,//transfermodeofoperation 30000//timeoutforbusbusy ); /*设置Line输入的音量*/ i2c_status=I2C_write(left_line_input_volume_control,//pointertodataarray 2,//lengthofdatatobetransmitted 1,//masterorslaver CODEC_ADDR,//slaveaddresstotransmitto 1,//transfermodeofoperation 30000//timeoutforbusbusy ); i2c_status=I2C_write(right_line_input_volume_control,//pointertodataarray 2,//lengthofdatatobetransmitted 1,//masterorslaver CODEC_ADDR,//slaveaddresstotransmitto 1,//transfermodeofoperation 30000//timeoutforbusbusy ); /*启动AIC23*/ i2c_status=I2C_write(digital_interface_activation,//pointertodataarray 2,//lengthofdatatobetransmitted 1,//masterorslaver CODEC_ADDR,//slaveaddresstotransmitto 1,//transfermodeofoperation 30000//timeoutforbusbusy ); } voidvolume_control() { i2c_status=I2C_write(left_volume[volume],//pointertodataarray 2,//lengthofdatatobetransmitted 1,//masterorslaver CODEC_ADDR,//slaveaddresstotransmitto 1,//transfermodeofoperation 30000//timeoutforbusbusy ); i2c_status=I2C_write(right_volume[volume],//pointertodataarray 2,//lengthofdatatobetransmitted 1,//masterorslaver CODEC_ADDR,//slaveaddresstotransmitto 1,//transfermodeofoperation 30000//timeoutforbusbusy ); } voidstand_recordsound() { while(! MCBSP_rrdy(hMcbsp)){}; aic23data=MCBSP_read16(hMcbsp); *souraddr++=aic23data; MCBSP_write16(hMcbsp,aic23data); while(! MCBSP_xrdy(hMcbsp)){}; //nin=(long)souraddr%65536; nin++; if(nin==0) { //bcount=((long)souraddr>>16)-2; souraddr=(unsignedint*)blockaddr[bcount]; bcount++; } if(stand_complete==1) { deminaddr=souraddr;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 实验 音频 控制