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;
nin=(long)souraddr%65536;
bcount=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,//pointertodataarray2,//lengthofdatatobetransmitted1,//masterorslaverCODEC_ADDR,//slaveaddresstotransmitto1,//transfermodeofoperation30000//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,//pointertodataarray2,//lengthofdatatobetransmitted1,//masterorslaverCODEC_ADDR,//slaveaddresstotransmitto1,//transfermodeofoperation30000//timeoutforbusbusy);delay(1000);/*设置AIC23各部分均工作*/i2c_status=I2C_write(power_down_control,//pointertodataarray2,//lengthofdatatobetransmitted1,//masterorslaverCODEC_ADDR,//slaveaddresstotransmitto1,//transfermodeofoperation30000//timeoutforbusbusy);/*设置AIC23的数字接口*/i2c_status=I2C_write(digital_audio_inteface_format,//pointertodataarray2,//lengthofdatatobetransmitted1,//masterorslaverCODEC_ADDR,//slaveaddresstotransmitto1,//transfermodeofoperation30000//timeoutforbusbusy);/*设置AIC23模拟通路*/i2c_status=I2C_write(analog_aduio_path_control,//pointertodataarray2,//lengthofdatatobetransmitted1,//masterorslaverCODEC_ADDR,//slaveaddresstotransmitto1,//transfermodeofoperation30000//timeoutforbusbusy);/*设置数字通路*/i2c_status=I2C_write(digital_audio_path_control,//pointertodataarray2,//lengthofdatatobetransmitted1,//masterorslaverCODEC_ADDR,//slaveaddresstotransmitto1,//transfermodeofoperation30000//timeoutforbusbusy);/*设置AIC23的采样率*/i2c_status=I2C_write(sample_rate_control,//pointertodataarray2,//lengthofdatatobetransmitted1,//masterorslaverCODEC_ADDR,//slaveaddresstotransmitto1,//transfermodeofoperation30000//timeoutforbusbusy);/*设置耳机音量*/i2c_status=I2C_write(left_volume[8],//pointertodataarray2,//lengthofdatatobetransmitted1,//masterorslaverCODEC_ADDR,//slaveaddresstotransmitto1,//transfermodeofoperation30000//timeoutforbusbusy);i2c_status=I2C_write(right_volume[8],//pointertodataarray2,//lengthofdatatobetransmitted1,//masterorslaverCODEC_ADDR,//slaveaddresstotransmitto1,//transfermodeofoperation30000//timeoutforbusbusy);/*设置Line输入的音量*/i2c_status=I2C_write(left_line_input_volume_control,//pointertodataarray2,//lengthofdatatobetransmitted1,//masterorslaverCODEC_ADDR,//slaveaddresstotransmitto1,//transfermodeofoperation30000//timeoutforbusbusy);i2c_status=I2C_write(right_line_input_volume_control,//pointertodataarray2,//lengthofdatatobetransmitted1,//masterorslaverCODEC_ADDR,//slaveaddresstotransmitto1,//transfermodeofoperation30000//timeoutforbusbusy);/*启动AIC23*/i2c_status=I2C_write(digital_interface_activation,//pointertodataarray2,//lengthofdatatobetransmitted1,//masterorslaverCODEC_ADDR,//slaveaddresstotransmitto1,//transfermodeofoperation30000//timeoutforbusbusy);}voidvolume_control(){i2c_status=I2C_write(left_volume[volume],//pointertodataarray2,//lengthofdatatobetransmitted1,//masterorslaverCODEC_ADDR,//slaveaddresstotransmitto1,//transfermodeofoperation30000//timeoutforbusbusy);i2c_status=I2C_write(right_volume[volume],//pointertodataarray2,//lengthofdatatobetransmitted1,//masterorslaverCODEC_ADDR,//slaveaddresstotransmitto1,//transfermodeofoperation30000//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;
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)
k=1;
else
souraddr=stopaddr;
deminaddr=tempaddr;
startaddr=souraddr;
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,//pointertodataarray2,//lengthofdatatobetransmitted1,//masterorslaverCODEC_ADDR,//slaveaddresstotransmitto1,//transfermodeofoperation30000//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,//pointertodataarray2,//lengthofdatatobetransmitted1,//masterorslaverCODEC_ADDR,//slaveaddresstotransmitto1,//transfermodeofoperation30000//timeoutforbusbusy);delay(1000);/*设置AIC23各部分均工作*/i2c_status=I2C_write(power_down_control,//pointertodataarray2,//lengthofdatatobetransmitted1,//masterorslaverCODEC_ADDR,//slaveaddresstotransmitto1,//transfermodeofoperation30000//timeoutforbusbusy);/*设置AIC23的数字接口*/i2c_status=I2C_write(digital_audio_inteface_format,//pointertodataarray2,//lengthofdatatobetransmitted1,//masterorslaverCODEC_ADDR,//slaveaddresstotransmitto1,//transfermodeofoperation30000//timeoutforbusbusy);/*设置AIC23模拟通路*/i2c_status=I2C_write(analog_aduio_path_control,//pointertodataarray2,//lengthofdatatobetransmitted1,//masterorslaverCODEC_ADDR,//slaveaddresstotransmitto1,//transfermodeofoperation30000//timeoutforbusbusy);/*设置数字通路*/i2c_status=I2C_write(digital_audio_path_control,//pointertodataarray2,//lengthofdatatobetransmitted1,//masterorslaverCODEC_ADDR,//slaveaddresstotransmitto1,//transfermodeofoperation30000//timeoutforbusbusy);/*设置AIC23的采样率*/i2c_status=I2C_write(sample_rate_control,//pointertodataarray2,//lengthofdatatobetransmitted1,//masterorslaverCODEC_ADDR,//slaveaddresstotransmitto1,//transfermodeofoperation30000//timeoutforbusbusy);/*设置耳机音量*/i2c_status=I2C_write(left_volume[8],//pointertodataarray2,//lengthofdatatobetransmitted1,//masterorslaverCODEC_ADDR,//slaveaddresstotransmitto1,//transfermodeofoperation30000//timeoutforbusbusy);i2c_status=I2C_write(right_volume[8],//pointertodataarray2,//lengthofdatatobetransmitted1,//masterorslaverCODEC_ADDR,//slaveaddresstotransmitto1,//transfermodeofoperation30000//timeoutforbusbusy);/*设置Line输入的音量*/i2c_status=I2C_write(left_line_input_volume_control,//pointertodataarray2,//lengthofdatatobetransmitted1,//masterorslaverCODEC_ADDR,//slaveaddresstotransmitto1,//transfermodeofoperation30000//timeoutforbusbusy);i2c_status=I2C_write(right_line_input_volume_control,//pointertodataarray2,//lengthofdatatobetransmitted1,//masterorslaverCODEC_ADDR,//slaveaddresstotransmitto1,//transfermodeofoperation30000//timeoutforbusbusy);/*启动AIC23*/i2c_status=I2C_write(digital_interface_activation,//pointertodataarray2,//lengthofdatatobetransmitted1,//masterorslaverCODEC_ADDR,//slaveaddresstotransmitto1,//transfermodeofoperation30000//timeoutforbusbusy);}voidvolume_control(){i2c_status=I2C_write(left_volume[volume],//pointertodataarray2,//lengthofdatatobetransmitted1,//masterorslaverCODEC_ADDR,//slaveaddresstotransmitto1,//transfermodeofoperation30000//timeoutforbusbusy);i2c_status=I2C_write(right_volume[volume],//pointertodataarray2,//lengthofdatatobetransmitted1,//masterorslaverCODEC_ADDR,//slaveaddresstotransmitto1,//transfermodeofoperation30000//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;
stand_replaysound();
if(stand_stop==1)
display5();
while(stand_stop==1)
if(repeat==1)
display6();
souraddr=startaddr;
deminaddr=stopaddr;
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,//pointertodataarray2,//lengthofdatatobetransmitted1,//masterorslaverCODEC_ADDR,//slaveaddresstotransmitto1,//transfermodeofoperation30000//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,//pointertodataarray2,//lengthofdatatobetransmitted1,//masterorslaverCODEC_ADDR,//slaveaddresstotransmitto1,//transfermodeofoperation30000//timeoutforbusbusy);delay(1000);/*设置AIC23各部分均工作*/i2c_status=I2C_write(power_down_control,//pointertodataarray2,//lengthofdatatobetransmitted1,//masterorslaverCODEC_ADDR,//slaveaddresstotransmitto1,//transfermodeofoperation30000//timeoutforbusbusy);/*设置AIC23的数字接口*/i2c_status=I2C_write(digital_audio_inteface_format,//pointertodataarray2,//lengthofdatatobetransmitted1,//masterorslaverCODEC_ADDR,//slaveaddresstotransmitto1,//transfermodeofoperation30000//timeoutforbusbusy);/*设置AIC23模拟通路*/i2c_status=I2C_write(analog_aduio_path_control,//pointertodataarray2,//lengthofdatatobetransmitted1,//masterorslaverCODEC_ADDR,//slaveaddresstotransmitto1,//transfermodeofoperation30000//timeoutforbusbusy);/*设置数字通路*/i2c_status=I2C_write(digital_audio_path_control,//pointertodataarray2,//lengthofdatatobetransmitted1,//masterorslaverCODEC_ADDR,//slaveaddresstotransmitto1,//transfermodeofoperation30000//timeoutforbusbusy);/*设置AIC23的采样率*/i2c_status=I2C_write(sample_rate_control,//pointertodataarray2,//lengthofdatatobetransmitted1,//masterorslaverCODEC_ADDR,//slaveaddresstotransmitto1,//transfermodeofoperation30000//timeoutforbusbusy);/*设置耳机音量*/i2c_status=I2C_write(left_volume[8],//pointertodataarray2,//lengthofdatatobetransmitted1,//masterorslaverCODEC_ADDR,//slaveaddresstotransmitto1,//transfermodeofoperation30000//timeoutforbusbusy);i2c_status=I2C_write(right_volume[8],//pointertodataarray2,//lengthofdatatobetransmitted1,//masterorslaverCODEC_ADDR,//slaveaddresstotransmitto1,//transfermodeofoperation30000//timeoutforbusbusy);/*设置Line输入的音量*/i2c_status=I2C_write(left_line_input_volume_control,//pointertodataarray2,//lengthofdatatobetransmitted1,//masterorslaverCODEC_ADDR,//slaveaddresstotransmitto1,//transfermodeofoperation30000//timeoutforbusbusy);i2c_status=I2C_write(right_line_input_volume_control,//pointertodataarray2,//lengthofdatatobetransmitted1,//masterorslaverCODEC_ADDR,//slaveaddresstotransmitto1,//transfermodeofoperation30000//timeoutforbusbusy);/*启动AIC23*/i2c_status=I2C_write(digital_interface_activation,//pointertodataarray2,//lengthofdatatobetransmitted1,//masterorslaverCODEC_ADDR,//slaveaddresstotransmitto1,//transfermodeofoperation30000//timeoutforbusbusy);}voidvolume_control(){i2c_status=I2C_write(left_volume[volume],//pointertodataarray2,//lengthofdatatobetransmitted1,//masterorslaverCODEC_ADDR,//slaveaddresstotransmitto1,//transfermodeofoperation30000//timeoutforbusbusy);i2c_status=I2C_write(right_volume[volume],//pointertodataarray2,//lengthofdatatobetransmitted1,//masterorslaverCODEC_ADDR,//slaveaddresstotransmitto1,//transfermodeofoperation30000//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;
repeatsound();
if(record==1)
i2c_status=I2C_write(analog_mic_path_control,//pointertodataarray
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);
while(record)
if(replay==1)
DMA_stop(mhDmaRcv);
deminaddr=(unsignedint*)(addr-1024);
if((unsignedint*)addr>=deminaddr)
record=0;
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);
DMA_FSETH(mhDmaXmt,DMACCR,ENDPROG,1);
DMA_FSETH(mhDmaXmt,DMACCR,AUTOINIT,0);
DMA_start(mhDmaXmt);
while(!
transferComplete)
//wr_1602(comm_1602,0xc7);
//wr_1602(dat_1602,0x30+volume);
voidaic_init()
/*resetAIC23*/
i2c_status=I2C_write(reset,//pointertodataarray
delay(1000);
/*设置AIC23各部分均工作*/
i2c_status=I2C_write(power_down_control,//pointertodataarray
/*设置AIC23的数字接口*/
i2c_status=I2C_write(digital_audio_inteface_format,//pointertodataarray
/*设置AIC23模拟通路*/
/*设置数字通路*/
i2c_status=I2C_write(digital_audio_path_control,//pointertodataarray
/*设置AIC23的采样率*/
i2c_status=I2C_write(sample_rate_control,//pointertodataarray
/*设置耳机音量*/
i2c_status=I2C_write(left_volume[8],//pointertodataarray
i2c_status=I2C_write(right_volume[8],//pointertodataarray
/*设置Line输入的音量*/
i2c_status=I2C_write(left_line_input_volume_control,//pointertodataarray
i2c_status=I2C_write(right_line_input_volume_control,//pointertodataarray
/*启动AIC23*/
i2c_status=I2C_write(digital_interface_activation,//pointertodataarray
voidvolume_control()
i2c_status=I2C_write(left_volume[volume],//pointertodataarray
i2c_status=I2C_write(right_volume[volume],//pointertodataarray
voidstand_recordsound()
MCBSP_rrdy(hMcbsp)){};
aic23data=MCBSP_read16(hMcbsp);
*souraddr++=aic23data;
MCBSP_write16(hMcbsp,aic23data);
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;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1