leadphone
驱动牛犊
驱动牛犊
  • 注册日期2002-11-28
  • 最后登录2008-09-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1273回复:7

大侠们一定来帮帮我啊!!!

楼主#
更多 发布于:2004-05-27 10:18
isp1581的DMA部分是不是只是为主机DMA VENDOR命令准备的???
只能对主机发来的DMA VENDOR命令做出响应???

人命关天,望各路高手不吝做答,小弟给您作揖了 :(
leadphone
驱动牛犊
驱动牛犊
  • 注册日期2002-11-28
  • 最后登录2008-09-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-05-27 10:45
顶到有人来帮
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-05-27 12:05
你可以发一个vendor命令还声明一个dma传输的开始,然后用另一个vendor命令来声明一个dma传输的结束。

当然也可以不这样做,你可以设置对epxin端点的第一个nak产生中断,这样上位机读取数据时马上就可以有一个中断产生,你在这个中断里启动dma,之后的中断就是数据的ack中断了,当然也有可能还会出现第一个nak中断,这都标志端点为空,没有大碍。
leadphone
驱动牛犊
驱动牛犊
  • 注册日期2002-11-28
  • 最后登录2008-09-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-05-27 14:27
我是设备只接收数据
按照你的第二种方法,我可以不对host端软件进行任何修改而进行dma传输了?
然后设置对epxout端点的第一个nak产生中断???
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-05-27 15:50
设备直接收数据的话那更简单,因为设备接收到数据后会发送ack给主机,这个ack会产生中断,你在这个中断里启动dma传输,把数据从端点读走就是了,至于怎么读你自己决定。
leadphone
驱动牛犊
驱动牛犊
  • 注册日期2002-11-28
  • 最后登录2008-09-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-05-27 16:05
设备直接收数据的话那更简单,因为设备接收到数据后会发送ack给主机,这个ack会产生中断,你在这个中断里启动dma传输,把数据从端点读走就是了,至于怎么读你自己决定。

请问这个ACK触发INTERUPT寄存的器哪一位?

我一收数据就触发RX1(我在描述符里BULK接收端点用的RX1),却收不到DMA中断。
另外既然在描述符里说明了接收端点,那怎么才能使接收到的数据进入到DMA里设置的端点呢?端点描述符里可没有DMA端点这一类啊。
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-05-27 17:04
应该是rx1中断,其他的我就不清楚了,我对dma方式了解的很少。实在抱歉
leadphone
驱动牛犊
驱动牛犊
  • 注册日期2002-11-28
  • 最后登录2008-09-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-05-27 17:36
我明白你的意思了
你的意思是:还是BULK方式来收数据,只是收进FIFO的数据往设备内存里写的时候用DMA。我看DATASHEET DMA部分的寄存器好像不是给这种方式用的,我也不知道自己理解的对不对。这也就是我第一个贴子里问的问题。

任老大你对我的帮助实在太大了,所以千万别说客气话。我已经很感谢了!!!

期待其他高手释疑。
游客

返回顶部