阅读:1597回复:6
求教:关于D12的DMA模式问题
我现在用ADUc812+2KB的SRAM+D12做一个数据采集与传输,思路是这样:先是ADUC812的DMA模式直接把数据保存到2KB的存储器,然后再把2KB上的数据通过D12传到PC机上,我看了北航出的《D12固件编程与驱动开发》上讲,D12的DMA模式允许D12主端点和本地共享存储器间实现数据的 传输,即D12和存储器间可自主进行传输,最大传输数据是64K,我的问题是:ADUC812只有8根数据线,D12与存储器进行DMA的时候,应是812先从存储器得数据,再发到D12的主端点,但812只有256B的RAM,812是不是每次读256B然后发给D12呢?那样的话,好象每次传256B,812就要发一次命令看起来就是这样一个过程:
RAM-》812-》D12,问题是812只有8跟数据线,这样的话看起来就不想上面所说的能连续传64K数据了,对这点我百思不得其解,望那位大家给小弟指点迷津,万分感谢! |
|
沙发#
发布于:2003-09-19 08:04
你用什么东东来做DMA控制器?
|
|
板凳#
发布于:2003-09-19 11:37
clevor,谢谢你的回答,原来我是准备使用ADUC812内自带的DMA控制器,今天我仔细看了ADUC812的说明,他的DMA只能是在A/D转换时使用,
我在网上看到 penere的帖子: “在D12的DMA传输中,本地存储器指的是什么啊,是80c52外挂的片外存储器么,还是指D12的内部缓冲区 dma传输是指USB设备到主机的 还是设备中mcu 到d12的” zhangyong64的帖子: “DMA传输是D12到设备中的存储器的直接数据存取,数据当然是在主机和设备存储器之间交换。太简单了不知对你有无帮助。” 我想知道,要实现zhangyong64的帖子所说的功能,应该如何实现呢?是不是还要再加一个DMA控制器呢?如果要加一个额外的DMA控制器,那岂不是很麻烦,那样的话我觉的DMA就没什么优势了? 各位大侠,对D12的DMA模式是怎么理解的,我还不清楚,望指点一二 |
|
地板#
发布于:2003-09-19 11:43
比如说,D12在DMA下怎样访问外部存储器吗
|
|
地下室#
发布于:2003-09-19 12:44
d12的dma只是mcu 到d12,确实没有什么优势。
|
|
5楼#
发布于:2003-09-19 14:55
谢谢clementzhao,如上所说,那本地共享存储器就是指mcu的RAM娄,那我的MCU的RAM只有256B,也就是说一次DMA只能传256B了,而北航出的《D12固件编程与驱动开发》上讲,D12的DMA模式允许D12主端点和本地共享存储器间实现数据的 传输,即D12和存储器间可自主进行传输,最大传输数据是64K,我觉的这64K就毫无意义了
|
|
6楼#
发布于:2003-09-20 19:10
一种IC不可能适应所有的应用,别太认真。
这个‘64K’是指D12能在DMA方式连续工作的最长‘时间’。考虑到PC端的驱动程序的因素,一次BULK传送的最大数据量就是64K。达到这个数时,PC会和D12重新建立传输连接(分配新的TOKEN)数据总线必须交还MCU,DMA自然也就要停下来。 关键是在存储设备和D12之间建立快速通道,你的方式数据就在MCU里,直接写给D12就是最快的方式,还谈什么DMA? |
|