yang_zi_jiang
驱动牛犊
驱动牛犊
  • 注册日期2007-06-24
  • 最后登录2009-05-26
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望30点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
阅读:1550回复:5

USB设备读数据的问题,IN令牌收到后状态怎么变化?

楼主#
更多 发布于:2008-01-11 13:06
具体情况是这样:我用lpc2148做usb通讯,采用bulk模式传输.现在pc发送读数据后,就一直等待数据.我的理解是,在固件里面,应该是在收到IN令牌包后,立刻给pc返回数据.而pc收到数据后会返回ACK,lpc2148收到ACK后才产生中断.问题是:我想知道的是lpc2148收到IN令牌后,状态会怎样变化?因为好象是不进中断的.我想根据这个状态变化决定什么时候给pc返回数据.
    
yang_zi_jiang
驱动牛犊
驱动牛犊
  • 注册日期2007-06-24
  • 最后登录2009-05-26
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望30点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2008-01-11 13:14
我没有usb分析仪,所以都不知道IN令牌是否收到.但是,当我把发送数据放到循环里面不停的发给pc时,pc那边的应用程序就能收到数据.这说明之前pc端应用程序死等应该收到了IN令牌,实际上是由于固件里没有返回数据.但是我的发送函数肯定不能一直放到循环里面发送的,我是想等收到IN令牌后再发送.
liaojf
驱动牛犊
驱动牛犊
  • 注册日期2005-12-18
  • 最后登录2008-03-20
  • 粉丝0
  • 关注0
  • 积分503分
  • 威望52点
  • 贡献值0点
  • 好评度50点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2008-01-16 13:56
收到IN令牌后应该能进中断的,可能没有设置好USB中断
熟悉USB设备端
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
地板#
发布于:2008-01-18 16:02
设置该端点的中端使能了吗?
没有的话就查询中断相关寄存器,查询到有该IN端点的中断就进入处理数据程序
IoManager
驱动牛犊
驱动牛犊
  • 注册日期2007-05-04
  • 最后登录2008-12-29
  • 粉丝1
  • 关注1
  • 积分185分
  • 威望35点
  • 贡献值0点
  • 好评度30点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2008-01-20 12:25
HOST 发出IN后,USB接口芯片首先擦看缓冲区中是否有数据,如果有数据,那么传输数据,然后通知MCU中断;否则返回NAK,不通知MCU中断。所以问题可能在Host发送IN之前,你的缓冲区没有刷新。
yang_zi_jiang
驱动牛犊
驱动牛犊
  • 注册日期2007-06-24
  • 最后登录2009-05-26
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望30点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2008-01-31 08:43
谢谢楼上几位,几天没来看.这个问题我已经解决了.我用的是DMA传输方式,就是缓冲区的数据没有准备好,导致IN令牌收到后返回NAK,而2148的dma模式下传输不成功是不会产生中断的,所以感觉没进去.顺便问一下,这里怎么给分,我找了好久都没找到啊?
游客

返回顶部