阅读:1285回复:3
ISP1581的DMA问题!
用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卸掉了。 请各位大侠分析一下,是何原因? |
|
|
沙发#
发布于:2004-09-17 20:48
读/写周期的最小值是78ns(纳秒),最大值没有要求,是否意味位着:读/写周期想多大就多大!只要能忍受?
读写周期最大只能达到1/78NS. 只传了1个数据是你发送数据的问题. |
|
|
板凳#
发布于:2004-09-19 15:45
谢metalwing!
我不明白:P53页表79参数:读/写周期TCY1最小78NS,最大-,“最大-”是什么意思? 如果是没有最大值,却有最小值?为何不说固定值? 假如说是固定值,是否意味着单片机不可能作DMA控制器,除非频率足够高? |
|
|
地板#
发布于:2004-09-19 17:14
DMA读写周期是由你的DMA控制器决定的,他给你提供一个最小值是说
1581的反应灵敏度.如果周期小于这个值,1581就不能保证能正 常工作(正常读写),这是器件的电气性能的要求,所以给你个最小 值.而最大值则不定,哪怕是1S也可以,但没人这么做吧,呵呵. |
|
|