DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 121|回复: 0
打印 上一主题 下一主题

DSP和音频AD/DA的硬件设计

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-27 14:05:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

                      AD50和DSP的硬件连接有多种方法,但使用最多的是DSP的缓冲串口和AD50连接方法。这种连接方法可使一个缓冲串口与多个AD50芯片连接(一个缓冲串口最多与3个AD50芯片连接)。
  DSP为主设备、AD50为从设备的连接方法如图1所示。图中AD50的时钟信号由C5409的定时器0的输出提供,时钟频率可以通过修改定时器0的设置而改变。AD50的FC引脚连接到C5409的XF(通用I/O引脚),用于控制第二次串行通信。AD50的DIN(数据输人引脚)和D0UT(数据输出引脚)分别接C5409缓冲串口0的DX0和DR0引脚。AD50的SCLK(移位时钟输出)连接C5409的CLKR0(缓冲串口0的接收时钟引脚),帧同步信号FS连接C5409缓冲串口0的FRX0。



  图2 两个AD50和DSP的连接
  DSP一般不能同时连接两个都是从设备的AD50芯片,但如果使用了PLD(逻辑器件)就可以实现连接两个从设备的AD50,具体的连接方法如图3所示。



  图3 两个从AD50和DSP的连接
  语音数据传输到DSP的MCBSP。MCBSP和CPU的通信有3种方式。
  (1)每收到或发送一个单元,置标志位,CPU轮询此标志位。
  (2)每收到或发送一个单元,给CPU发送中断。
  (3)通过DMA收到或发送完一组单元,再给CPU中断。
  采用DMA的方式,即串口每发送或接受到一个单元,都会自动触发DMA将其搬送到一个内部的缓冲区(Buffer),等Buffer满了再通过中断方式告诉CPU处理。这时DMA最好采用自动缓冲(ABU,Auto Buffering)模式,在这种模式下,DMA会在两个Buffer(其实是一个大Buffer的前一半和后一半)之间自动切换,每个Buffer满了(接收)或空了(发送)都会给CPU发出中断,在CPU处理这个Buffer的时候,DMA会自动去操作另一个Buffer。采用这种方式可以有效防止Buffer中的数据在串口速率较高时被新数据冲掉的问题。
  在DMA的中断服务程序中为了可靠可以把这个Buffer的数据再拷贝到另一个待处理的空间,即两级Buffer,然后置标志位,CPU在主程序中查询标志位然后作出相应的处理。DMA操作的Buffer可以通过寄存器配置,Buffer的大小和起始位置应设置正确。在指定Buffer的起始位置时应该注意,起始位置应该为大于Buffer大小的下一个2的整数幂的倍数。例如,在8KB、16bit采样的情况下,以20ms数据为Buffer大小,那么一次处理的数据是8000×32×0,02=5120bit-320Word。所以,DMA的Buffer应为640Word(两个320Word Buffer)大小,而Buffer的起始地址应该为1024=210>640的整数倍,如0x7000,0x7400……
  欢迎转载,信息来源维库电子市场网(www.dzsc.com)
            
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-11-16 10:55 , 耗时 0.084206 秒, 19 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表