dfli861
驱动牛犊
驱动牛犊
  • 注册日期2004-05-19
  • 最后登录2004-12-02
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1285回复:3

ISP1581的DMA问题!

楼主#
更多 发布于:2004-09-17 18:41
用ISP1581作数据采集器,因为AD速率在10KSPS-100KSPS之间,想省掉存储器,AD结果经ISP1581的DMA总线直接送到FIFO,边送边传,岂不省事?
使用GDMA从模式,由MCU充当DMA控制器,一边控制AD转换(16位),一边将数据写入ISP1581,不知时序是否能满足要求?
周立功的《ISP1581:高速USB接口器件》P53页:GDMA从机模式时序参数提到Tcy1:读/写周期的最小值是78ns(纳秒),最大值没有要求,是否意味位着:读/写周期想多大就多大!只要能忍受?
如果是这样,用MCU作DMA控制器是没有问题的了?!
使用GDMA从模式,BURST=0,DREQ、EOT高有效
我用AT89C52作DMA控制器,向ISP1581的FIFO写数据(先由HOST产生一个DMA读),在DREQ有效后(DREQ=1),使DACK有效(DACK=0),再使DIOW有效(DIOW=0),然后在DMA总线上放数据(0-5V),在使DIOW失效(DIOW=1),如此重复DIOW的操作,连续写入3个字的数据(如1、2、3,或4、5、6),然而PC读出的数据中只有第一个写入的数据(字):1或者4!
再试着连续写入4个数据,PC读出的数据中还是只有第一个写入的数据!(7或者11)
用仿真器调试,发现:在第一个DIOW有效后(DIOW=0),DREQ=0,ISP1581的DMA请求消失了?!何故?!
再检查DMA传输计数器,低字节写入的数据居然是0!
写入10H,还是PC读出的数据中只有第一个写入的数据!
再检查EOT:高有效,初始化后EOT=1,结果同上!
初始化EOT=0,PC收不到数据了!
另外,如果将手指放到ISP1581上5秒钟,就会明显感到烫手,是否有问题?
我用的是伊甸科技的板子,为了避免冲突,将CPLD卸掉了。
请各位大侠分析一下,是何原因?

dfli
metalwing
驱动中牛
驱动中牛
  • 注册日期2003-10-13
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望58点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-09-17 20:48
读/写周期的最小值是78ns(纳秒),最大值没有要求,是否意味位着:读/写周期想多大就多大!只要能忍受?
读写周期最大只能达到1/78NS.
只传了1个数据是你发送数据的问题.
新手上路,请多关照.
dfli861
驱动牛犊
驱动牛犊
  • 注册日期2004-05-19
  • 最后登录2004-12-02
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-09-19 15:45
谢metalwing!
我不明白:P53页表79参数:读/写周期TCY1最小78NS,最大-,“最大-”是什么意思?

如果是没有最大值,却有最小值?为何不说固定值?

假如说是固定值,是否意味着单片机不可能作DMA控制器,除非频率足够高?
dfli
metalwing
驱动中牛
驱动中牛
  • 注册日期2003-10-13
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望58点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-09-19 17:14
DMA读写周期是由你的DMA控制器决定的,他给你提供一个最小值是说
1581的反应灵敏度.如果周期小于这个值,1581就不能保证能正
常工作(正常读写),这是器件的电气性能的要求,所以给你个最小
值.而最大值则不定,哪怕是1S也可以,但没人这么做吧,呵呵.
新手上路,请多关照.
游客

返回顶部