【DSP实验】实验三 音频 DSP 片上资源应用

三. 实验内容

1.定时器应用

(1)参考例程…\Analog Devices\VisualDSP 5.0\214xx\Examples\ ADSP-21489

EZ-Board\Core Timer_C,在\Analog Devices\VisualDSP 5.1.2\214xx\Examples\ADSP-21489 EZ-Board\21489 AD1939 C Block-Based Talkthru 48 or 96 kHz 程序中添加一个定时器;
(2)对定时器中断进行计时,对以下两种声音播放状态每 3 秒切换一次。为验证效果, 在计算机上播放的声音源文件左、右声道内容要不同。

在这里插入图片描述

2.DSP 的 CPU 工作时钟设置

(1)通过对程序中的*pPMCTL 数据更改来调整 CPU 工作时钟。(提示:可对

init_PLL_SDRAM.c 的 pmctlsetting= PLLM16|PLLD4|SDCKR2_5|DIVEN 语句进行参数设置)

(2)听音判断各声道声音的切换间隔是否有变化,分析原因。

3.更改程序,实现 96kHz、192kHz 采样。

4.音频接口数据路由实验

请更改程序,实现从输入接口 2L、2R 进来的声音通过输出接口 3L、3R 播放。

5.数据存储实验

(1)参考 VisualDSP++安装目录下的“Primes_C_from_ExternalMemory”例程,在 SDRAM

中存储 in.dat 文件的数据,将其搬移到片内 RAM 中。

(2)在片内 RAM 中存储 in.dat 文件的数据,将其搬移到片内 RAM 其他地址上。

(3)用定时器测出上述两种数据搬移所需的时间并进行对比。

四.实验报告要求

1、整理各个实验内容的步骤、实验结果。

2、分析定时器参数对定时时间的影响,寄存器设置对 CPU 时钟的影响,寄存器设置对采样 率的影响,如何实现 4 进 8 出的声音路由,片内外存储器读取数据所需时长。
3、实验体会、注意事项。

三、实验内容
1、定时器
(1)参考例程…\Analog Devices\VisualDSP 5.0\214xx\Examples\ ADSP-21489 EZ-Board\Core Timer_C,在\Analog Devices\VisualDSP 5.1.2\214xx\Examples\ADSP-21489 EZ-Board\21489 AD1939 C Block-Based Talkthru 48 or 96 kHz 程序中添加一个定时器;
在这里插入图片描述

                      图3-1 左右声道切换示意图

(2)对定时器中断进行计时,对以下两种声音播放状态每 3 秒切换一次。为验证效果,在计算机上播放的声音源文件左、右声道内容要不同。
实现代码如下:
Main.c
①中断服务程序:

1.	//定时器中断服务程序  
2.	void timer_isr (int sig)  
3.	{  
4.	    timer_count++;   
5.	    if(timer_count==3000)    //每次计数到3s后对timer_count和flag处理               
6.	    {  
7.	        timer_count=0;  
8.	        flag =! flag;        //flag标志,表示3s切换一次  
9.	    }  
10.	}  

②设置中断和定时器

1.	//设置中断为SIG_TMZ,中断函数为timer_isr  
2.	interrupts (SIG_TMZ, timer_isr);  
3.	//400000 / 400M = 1ms,tcount设置为400000,每400000也即1ms触发一次中断  
4.	timer_set(400000, 400000);  
5.	//开启定时器  
6.	timer_on(); 

blockProcess_audio.c
①设置随标志位的改变而转变声道的处理函数

1.	//输入输出处理函数  
2.	void process_audioBlocks()  
3.	{  
4.	    if(!flag)    //默认情况下左声道输入的音乐输出到左声道和右声道  
5.	    {  
6.	        memcopy(fBlockA.Rx_L1, fBlockA.Tx_L1, NUM_SAMPLES);  
7.	        memcopy(fBlockA.Rx_L1, fBlockA.Tx_R1, NUM_SAMPLES);  
8.	    }  
9.	    else         //3s 后切换成右声道输入的音乐输出到左声道和右声道  
10.	    {  
11.	        memcopy(fBlockA.Rx_R1, fBlockA.Tx_L1, NUM_SAMPLES);  
12.	        memcopy(fBlockA.Rx_R1, fBlockA.Tx_R1, NUM_SAMPLES);  
13.	    }  
14.	}  

具体代码及报告如下:
https://download.csdn.net/download/weixin_39589455/18655385

分析非常详尽,且含工程文件:
在这里插入图片描述

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

别出BUG求求了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值