usbboy
驱动牛犊
驱动牛犊
  • 注册日期2002-04-03
  • 最后登录2002-11-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1764回复:9

关于FIRMWARE 问题

楼主#
更多 发布于:2002-08-19 11:42
各位好:
    我看了CY自带的FIRMWARE的程序匡架,关于电源管理我有几个问题想不通,想请教一下.
                if (Sleep)
   {
     if(TD_Suspend())
        {
        Sleep = FALSE;      do
            {
          EZUSB_Susp();
            }
                while(!Rwuen && EZUSB_EXTWAKEUP());
                
     .
     EZUSB_Resume();
     TD_Resume();
        }  
   }

上述程序就是电源管理程序,SLEEP是通过Suspend中断来置1的,表示将进入挂起状态,但是下面if(TD_Suspend())里面的TD_Suspend()这个函数在CY的程序总什么都没做.直接返回1.我知道这个函数还有什么作用呢,还有EZUSB_Susp();这个函数,我没有找到它的原程序.USB资料上说,要把进入Suspend状态必须SETB PCON.0操作,那么这个操作是在上面哪个函数完成的呢?????????
    还有下面的Resume,EZUSB_Resume();TD_Resume();两个函数好象也什么事都没做.Resume所发生的中断也就是把中断清了.
    那么USB是怎样从Suspend跳出来的呢?????
     真实把我弄糊涂了,请高手给指点一下吧
sunkai
驱动中牛
驱动中牛
  • 注册日期2002-12-31
  • 最后登录
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-08-19 11:59
这一整段可以统统不要,去掉
usbboy
驱动牛犊
驱动牛犊
  • 注册日期2002-04-03
  • 最后登录2002-11-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-08-19 14:13
那电源管理怎么处理呢!!
sunkai
驱动中牛
驱动中牛
  • 注册日期2002-12-31
  • 最后登录
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-08-19 16:53
不用管也行,不相信?试试就知道了。
usbboy
驱动牛犊
驱动牛犊
  • 注册日期2002-04-03
  • 最后登录2002-11-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-08-19 17:16
SUNKAI:谢谢你的回答,可是不用管那就少了一些功能呀!
还有我正想请教你一个问题呢!
就是关于DATA0,DATA1,的问题.我有点一知半解的.
我看底层代码是这样写的.
if (EPIO[IN3BUF_ID].cntrl & bmEPBUSY)
   {
      TOGCTL = 0x08 | IN3BUF_ID;
      WRITEDELAY();
      if (TOGCTL & 0x80)
         TOGCTL |= 0x20;
      else                                        
         TOGCTL |= 0x40;
}
我也能看懂,这段代码是不是传输出错后由主机来调用呢!
sunkai
驱动中牛
驱动中牛
  • 注册日期2002-12-31
  • 最后登录
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-08-20 08:58
库函数源代码在:\\Cypress\\USB\\Target\\Lib\\下.EZUSB_Resume(),EZUSB_Susp()是库函数.
TD_Suspend(),TD_Resume()是自定义函数,是空非空由你决定,表示在挂起之前和恢复之后你想要做什么,也可以什么也不做,不难理解.
sunkai
驱动中牛
驱动中牛
  • 注册日期2002-12-31
  • 最后登录
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-08-20 10:38
SUNKAI:谢谢你的回答,可是不用管那就少了一些功能呀!
还有我正想请教你一个问题呢!
就是关于DATA0,DATA1,的问题.我有点一知半解的.
我看底层代码是这样写的.
if (EPIO[IN3BUF_ID].cntrl & bmEPBUSY)
   {
      TOGCTL = 0x08 | IN3BUF_ID;
      WRITEDELAY();
      if (TOGCTL & 0x80)
         TOGCTL |= 0x20;
      else                                        
         TOGCTL |= 0x40;
}
我也能看懂,这段代码是不是传输出错后由主机来调用呢!

有电源管理当然好,没有也行,一般情况禁止挂起应该可以吧,除非便携式系统或者要求必须做.代码一段我好像也见过,但是找不着了,没有上下文我也不好说.
usbboy
驱动牛犊
驱动牛犊
  • 注册日期2002-04-03
  • 最后登录2002-11-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-08-20 11:27
好象我问的这些问题大家都不太注意,但是这些应该是后期开发比较重要的呀.SUNKAI,我做的就是便协式的.
sunkai
驱动中牛
驱动中牛
  • 注册日期2002-12-31
  • 最后登录
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-08-20 11:34
做电源管理也没啥呀,你把自定义的两个函数添上代码就行乐,其他的也不要自己做,库函数替你做了
usbboy
驱动牛犊
驱动牛犊
  • 注册日期2002-04-03
  • 最后登录2002-11-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-08-20 18:01
关注
游客

返回顶部