astrostar
驱动牛犊
驱动牛犊
  • 注册日期2003-10-29
  • 最后登录2005-11-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1750回复:15

SL811HS的USB_A_DONE突然不产生中断了

楼主#
更多 发布于:2004-02-18 20:10
小弟的SL811HS读U盘的开发,在连续读一个几兆文件时,突然检测不到USB_A_DONE中断了,读出的文件有时候是几百KB,有时候也能达到几MB。对于一个几十K的文件能全部读出来,请高手指点一下迷津!
是硬件问题,还是软件问题可能性较大呢?

最新喜欢:

ww7002ww7002
xxg
xxg
驱动小牛
驱动小牛
  • 注册日期2002-02-28
  • 最后登录2005-12-12
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-02-18 23:41
这种不稳定的情况确实很头痛,不好解决,因素可能是硬件,也可能是软件.
  欢迎光临:http://eden.51.net
jiangyiyong
驱动大牛
驱动大牛
  • 注册日期2002-11-28
  • 最后登录2004-08-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-02-19 08:43
把你的中断处理代码贴出来看看
我来自中国 抵制日货
lxb_gd
驱动太牛
驱动太牛
  • 注册日期2002-01-16
  • 最后登录2018-06-02
  • 粉丝0
  • 关注0
  • 积分72408分
  • 威望362391点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2004-02-19 09:00
1.最好是有源晶振。
2.软件要有错误处理机制,这个是最难的
astrostar
驱动牛犊
驱动牛犊
  • 注册日期2003-10-29
  • 最后登录2005-11-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-02-19 10:05
我使用的是48M无源晶振,主控是DSP。
等待中断源码如下:
while( SLAVE_FOUND && (!UsbDoneFlag) );
    if(!SLAVE_FOUND)
        return FALSE;

中断源码如下:
interrupt void ext_int0( )                  
{
    u16 intr;
    // disable interrupt
    asm(" SSBX INTM");
    UsbDoneFlag = FALSE;
    //read IntStatus;
    intr = rd811hs(IntStatus);
    wr811hs(IntStatus,INT_CLR); //clear interrupt status
    if(intr&USB_A_DONE)
     UsbDoneFlag = TRUE;
    else if(intr&INSERT_REMOVE)
     SLAVE_FOUND = FALSE;
    // enable interrput  
    asm(" RSBX INTM");
}

请大家帮我看看!
jiangyiyong
驱动大牛
驱动大牛
  • 注册日期2002-11-28
  • 最后登录2004-08-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-02-19 13:36
你能确保数据确实送出去了吗
我来自中国 抵制日货
astrostar
驱动牛犊
驱动牛犊
  • 注册日期2003-10-29
  • 最后登录2005-11-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-02-19 17:15
刚才实验居然将一个3M的文件全部正确读出来了。
在实验中发现,将U盘拔出时候,会产生中断。
我现在在考虑如何用软件进行错误处理。
jiangyiyong
驱动大牛
驱动大牛
  • 注册日期2002-11-28
  • 最后登录2004-08-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-02-19 17:21
恭喜恭喜
我来自中国 抵制日货
astrostar
驱动牛犊
驱动牛犊
  • 注册日期2003-10-29
  • 最后登录2005-11-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-02-21 15:18
    我发现了一个现象,在检测不到USB_A_DONE的时候,用示波器观察发现SOF信号消失了。执行一下UsbReset,复位一下USB引擎,并没有复位SL811HS芯片,也没有改变其寄存器的值,SOF又出现了,USB_A_DONE也有了,但是这时候设备要重新枚举。

各位大侠,能否指点一下。
dragon_hn
驱动中牛
驱动中牛
  • 注册日期2002-05-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分297分
  • 威望40点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-02-21 15:39
如果你是用仿真器,有可能是你的电脑机箱-仿真器-开发板电源不共地,造成电源干扰.我在试验的时候用一根导线把三者连接起来,成功地解决了不稳定问题.

[编辑 -  2/21/04 by  dragon_hn]
www.dragon-2008.com 欢迎交流
jiangyiyong
驱动大牛
驱动大牛
  • 注册日期2002-11-28
  • 最后登录2004-08-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-02-21 17:17
如果你是用仿真器,有可能是你的电脑机箱-仿真器-开发板电源不共地,造成电源干扰.我在试验的时候用一根导线把三者连接起来,成功地解决了不稳定问题.

[编辑 -  2/21/04 by  dragon_hn]


真的吗,我试试
我来自中国 抵制日货
jiangyiyong
驱动大牛
驱动大牛
  • 注册日期2002-11-28
  • 最后登录2004-08-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-02-21 17:18
   我发现了一个现象,在检测不到USB_A_DONE的时候,用示波器观察发现SOF信号消失了。执行一下UsbReset,复位一下USB引擎,并没有复位SL811HS芯片,也没有改变其寄存器的值,SOF又出现了,USB_A_DONE也有了,但是这时候设备要重新枚举。

各位大侠,能否指点一下。


我想问题可能就是在这,我好象以前也碰到过
我来自中国 抵制日货
astrostar
驱动牛犊
驱动牛犊
  • 注册日期2003-10-29
  • 最后登录2005-11-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-02-21 22:38
小弟有点糊涂,请问如何将机箱的地和仿真器连起来?

电路板和仿真器有公共地的。
astrostar
驱动牛犊
驱动牛犊
  • 注册日期2003-10-29
  • 最后登录2005-11-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-02-23 09:25
小弟找到原因了,果然是仿真器的干扰问题,现在问题解决了。
利用SL811读U盘开发成功!

在此谢谢jiangyiyong建议我用中断方式处理SL811,
谢谢dragon_hn提醒我干扰的问题,
谢谢lxb_gd建议我用有源晶振!

Thanks a lot!
jiangyiyong
驱动大牛
驱动大牛
  • 注册日期2002-11-28
  • 最后登录2004-08-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2004-02-23 11:14
你是如何解决干扰问题的??
我来自中国 抵制日货
astrostar
驱动牛犊
驱动牛犊
  • 注册日期2003-10-29
  • 最后登录2005-11-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2004-02-23 13:00
我是从U盘上读文件用fwrite( )写到PC机上,由于仿真器和DSP不停交换数据,频率又较高,所以仿真器电缆上有干扰信号。
现在去掉fwrite( ),就一切OK了。
游客

返回顶部