![]() |
|
||||||||||||||
| . 网站首页 . 新闻 . 新品 . 方案 . 专访 . 活动 . DSP . EDA . 评测 . 技术文库 . 会员区 . 商城 . 服务导航 . 邮购 . 资源 . | ||
|
||
|
|||||
| DMA的自动初始化 | |||||
作者:Free 文章来源:本站原创 点击数: 更新时间:2008-2-29 ![]() |
|||||
|
最近一个老项目的程序出了问题,在某种特定的情况下声音输出会中断。这个项目使用的芯片是C5416,声音输出使用的是DMA4。经过调试发现声音 中断之后,DMCTR4寄存器的数值为初始化时的值:0x007f。这说明DMA4根本没有传输数据到McBSP的DX寄存器中去。这个问题我遇到过很多 次,原因如下:DMA4的传输的启动由McBSP控制,当McBSP的DX寄存器中的数据被McBSP读取之后, McBSP通知DMA传输下一个数据。如果DMA初始化时DX寄存器已经被读取,那么DMA就永远等不到McBSP的通知了,这样DMA就停止了。更具体 一点,让我们考虑DMA传输完当前传输块的最后一个数据之后,DSP内都会发生些什么情况: 1. 传输块的最后一个数据被DMA复制到McBSP的DX寄存器中 上面是正常运作时的情况,由于McBSP的传输是非常快的,例如如果是传输双声道44.1kHz的声音信号的话,那么McBSP一秒钟传输88.2k个数据,每两个数据之间的间隔大约是0.00001秒。也就是说,上面的从步骤1到步骤4的时间间隔必须小于这传输时间。 1. 传输块的最后一个数据被DMA复制到McBSP的DX寄存器中 所以,DMA停止传输的根本原因是DSP无法及时地更新DMA的设置。这是一个普遍的问题,因此TI公司早就有解决方案了,解决办法就是使用DMA的自动初始化。 1. 传输块的最后一个数据被DMA复制到McBSP的DX寄存器中 |
|||||
| 欢迎点击进入:TI德州中文网 (国内唯一针对TI应用的中文技术网站) 文章录入:admin 责任编辑:admin | |||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | |||||
| 最新热点 | 最新推荐 | 相关文章 | ||
| McBSP的DX引脚的状态 McBSP串口实验多媒体动画教程 Mcbsp&Codec的程序范例 MCBSP转UART的 (用6711DSK) … McBSP设定问题 McBSP 可以当作 UART吗? |
| 网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |
| | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 | 管理登录 | | |||
|
|