jiangliq_2000
驱动牛犊
驱动牛犊
  • 注册日期2003-07-31
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1597回复:6

求教:关于D12的DMA模式问题

楼主#
更多 发布于:2003-09-18 11:44
我现在用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数据了,对这点我百思不得其解,望那位大家给小弟指点迷津,万分感谢!
clevor
驱动牛犊
驱动牛犊
  • 注册日期2003-06-26
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分115分
  • 威望12点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-09-19 08:04
你用什么东东来做DMA控制器?
jiangliq_2000
驱动牛犊
驱动牛犊
  • 注册日期2003-07-31
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于: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模式是怎么理解的,我还不清楚,望指点一二

jiangliq_2000
驱动牛犊
驱动牛犊
  • 注册日期2003-07-31
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-09-19 11:43
比如说,D12在DMA下怎样访问外部存储器吗
clementzhao
驱动大牛
驱动大牛
  • 注册日期2003-05-08
  • 最后登录2009-02-20
  • 粉丝0
  • 关注0
  • 积分28分
  • 威望63点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-09-19 12:44
d12的dma只是mcu 到d12,确实没有什么优势。
jiangliq_2000
驱动牛犊
驱动牛犊
  • 注册日期2003-07-31
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-09-19 14:55
谢谢clementzhao,如上所说,那本地共享存储器就是指mcu的RAM娄,那我的MCU的RAM只有256B,也就是说一次DMA只能传256B了,而北航出的《D12固件编程与驱动开发》上讲,D12的DMA模式允许D12主端点和本地共享存储器间实现数据的 传输,即D12和存储器间可自主进行传输,最大传输数据是64K,我觉的这64K就毫无意义了
clevor
驱动牛犊
驱动牛犊
  • 注册日期2003-06-26
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分115分
  • 威望12点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-09-20 19:10
一种IC不可能适应所有的应用,别太认真。
这个‘64K’是指D12能在DMA方式连续工作的最长‘时间’。考虑到PC端的驱动程序的因素,一次BULK传送的最大数据量就是64K。达到这个数时,PC会和D12重新建立传输连接(分配新的TOKEN)数据总线必须交还MCU,DMA自然也就要停下来。
关键是在存储设备和D12之间建立快速通道,你的方式数据就在MCU里,直接写给D12就是最快的方式,还谈什么DMA?
游客

返回顶部