6416与aic23进行语言数据采集和处理的程序beta版
2012-10-11 17:42
726 查看
本文实现从aic32的line-input获得音频数据并在line-output播放,使用McBSP和EDMA来高效的传输数据,避免DSP的高负载。
数据传输:
codec与DSP通过McBSP2传输数据。EDMA配置为存储每个到达McBSP2的16比特signed语音采样数据在内存缓冲区内,之后会被处理。处理之后EDMA控制器回送数据到McBSP2进行发送。
McBSP1设置为配置/控制AIC23。AIC23从McBSP1接收串行配置参数如音量、采样率和数据格式。
可以使用乒乓数据缓冲和linked-EDMA传输来更方便高效的传输数据。单个数据缓冲来接收发送数据很不方便,因为要避免新到达数据覆盖正在进行传输的数据。乒乓数据缓冲使用两个数据缓冲,当乓缓冲正在填满时,乒缓冲肯定不会被覆盖,可以对其进行处理。可以使用接收发送各两个共四个缓冲进行乒乓传输。
在这种情况下,对于每个缓冲,EDMA控制器的配置都要有所不同。当一个缓冲填满后,EDMA控制器产生一个中断,中断处理程序/interrupt-handler必须在下一个音频采样数据到达之前为下一个缓冲重新加载配置。EDMA的linked-transfer特性可以轻松的做到这一点:每个配置都预先设置,在当前配置结束后EDMA控制器自动加载下一个配置;这样同样产生中断信号,但它仅用来通知DSP可以处理数据了。唯一的约束条件是,当前缓冲填满之前所有的音频数据必须处理结束;这段时间远远大于音频采样间隔。应用这种方法,系统更容易达到实时处理要求。
程序说明:
程序运行过程中,DSP/BIOS首先初始化,main()函数作为主进程启动。本文中,它主要实现程序初始化并打开EDMA数据传输。当main()函数运行结束后,由DSP/BIOS接管,为中断程序服务。
当一个缓冲填满后, edmaHwi()中断服务子程序/ISR被调用,其中pingOrPong 状态变量标识此缓冲是乒或乓。dmaHwi把缓冲标记标识为相对的/相反的缓冲,并调用软中断进程processBuffer 处理音频数据。
其他程序:blinkLED()当对应的开关按下时以2Hz频率闪灯,是周期为500ticks的周期进程。load()在另一个对应的开关按下时模拟20-25%的虚载荷,是周期10ms的周期进程。
数据传输:
codec与DSP通过McBSP2传输数据。EDMA配置为存储每个到达McBSP2的16比特signed语音采样数据在内存缓冲区内,之后会被处理。处理之后EDMA控制器回送数据到McBSP2进行发送。
McBSP1设置为配置/控制AIC23。AIC23从McBSP1接收串行配置参数如音量、采样率和数据格式。
可以使用乒乓数据缓冲和linked-EDMA传输来更方便高效的传输数据。单个数据缓冲来接收发送数据很不方便,因为要避免新到达数据覆盖正在进行传输的数据。乒乓数据缓冲使用两个数据缓冲,当乓缓冲正在填满时,乒缓冲肯定不会被覆盖,可以对其进行处理。可以使用接收发送各两个共四个缓冲进行乒乓传输。
在这种情况下,对于每个缓冲,EDMA控制器的配置都要有所不同。当一个缓冲填满后,EDMA控制器产生一个中断,中断处理程序/interrupt-handler必须在下一个音频采样数据到达之前为下一个缓冲重新加载配置。EDMA的linked-transfer特性可以轻松的做到这一点:每个配置都预先设置,在当前配置结束后EDMA控制器自动加载下一个配置;这样同样产生中断信号,但它仅用来通知DSP可以处理数据了。唯一的约束条件是,当前缓冲填满之前所有的音频数据必须处理结束;这段时间远远大于音频采样间隔。应用这种方法,系统更容易达到实时处理要求。
程序说明:
程序运行过程中,DSP/BIOS首先初始化,main()函数作为主进程启动。本文中,它主要实现程序初始化并打开EDMA数据传输。当main()函数运行结束后,由DSP/BIOS接管,为中断程序服务。
当一个缓冲填满后, edmaHwi()中断服务子程序/ISR被调用,其中pingOrPong 状态变量标识此缓冲是乒或乓。dmaHwi把缓冲标记标识为相对的/相反的缓冲,并调用软中断进程processBuffer 处理音频数据。
其他程序:blinkLED()当对应的开关按下时以2Hz频率闪灯,是周期为500ticks的周期进程。load()在另一个对应的开关按下时模拟20-25%的虚载荷,是周期10ms的周期进程。
相关文章推荐
- 基因数据处理17之使用scala对BWA运行结果进行各阶段程序时间提取和统计求和
- 数据处理程序语言中的基本数据类型
- 探空仪测得数据按照分层报表要求进行处理(程序)
- C#程序从Excel表格中读取数据并进行处理
- 对PC某串口接收的外部数据进行处理操作的简单C程序 VC++6.0
- (转载)你好,C++(23) 4.4.2 工资程序成长记:用数组处理批量数据,用循环结构执行重复动作
- 数据处理程序语言中的基本数据类型
- NLTK:一个先进的用来处理自然语言数据的Python程序
- 数据处理程序语言中的基本数据类型
- 上位机接收数据,并进行处理的一段程序
- 大数据采集、清洗、处理:使用MapReduce进行离线数据分析完整案例
- 【语言处理与Python】11.3数据采集
- 抓取网页中的内容、如何解决乱码问题、如何解决登录问题以及对所采集的数据进行处理显示的过程
- 你好,C++(23) 4.4.2 工资程序成长记:用数组处理批量数据,用循环结构执行重复动作
- c#程序调试时,写入/读出数据于Excel处理
- Android中创建一个使用ListView以及用BaseAdapter进行数据适配的程序
- APUE 7-9 进行命令处理程序的典型骨架部分
- HttpHandler(一般处理程序)进行增删改查
- 汇编语言实验:编写0号中断处理程序
- 视频采集处理之YUV数据格式