zxl
zxl
驱动牛犊
驱动牛犊
  • 注册日期2002-07-02
  • 最后登录2004-11-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1999回复:3

请教高手:D12初始化过程,能推荐译一本书或某个电子文档,指明具体章节,我去仔细看,也非常感谢!

楼主#
更多 发布于:2002-10-30 11:21
请教高手:帮我解释一下,主程序在执行到while( TRUE )之前,即D12初始化阶段稍微详细一点的流程吗?

大致要调用那几个函数?怎样个顺序?

谢谢 高手指点!能推荐译一本书或某个电子文档,指明具体章节,我去仔细看,也非常感谢!
Parker
驱动牛犊
驱动牛犊
  • 注册日期2002-09-29
  • 最后登录2007-10-11
  • 粉丝0
  • 关注0
  • 积分110分
  • 威望11点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-10-30 13:29
这是摘抄的:

在编写USB的单片机程序时,需要注意:

① 单片机的中断应设置为电平触发;中断后一定要读上次传输状态寄存器(命令40-45H),以清 除中断寄存器中的中断标志。这样,PDIUSBD12的中断输出才能变回高电平,这一点非常重要。
② 在接收到Setup包后,一定要调用ACK setup命令重新使能端口0。
③ 在向IN端点写完数据后,一定调用Validate Buffer(命令FAH),指明缓冲区中的数据有效,可以发送到主机。
④ 当读完数据后,一定调用Clear Buffer(命令F2H),以保证可以接收新的包。
⑤ 可以通过调用Read Chip ID(命令FDH)检查PDIUSBD12是否工作。该命令要读两个字节数 据。

USB初始化过程为:

① Set Address Enable;
② Set Endpoint Enable(此时LED亮);
③ Disconnect;
④ delay(1~2 s);
⑤ Connect(即用43h参数调用Set Mode,此时LED灭);
⑥ Read Interrupt Register。

  完成初始化工作后,就可作其它的前台工作了,并在前台判断是否有 Setup包(通过一个变量,当中断服务程序检测到有Setup包时,设置该变 量),然后执行响应的控制传输。

详细请看:

http://www.driverdevelop.com/forum/viewthread.php?tid=14068
不以物喜,不以己悲。
zxl
zxl
驱动牛犊
驱动牛犊
  • 注册日期2002-07-02
  • 最后登录2004-11-08
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-10-30 14:37
太感谢你了,我立刻去看看你说的那个网页。
咱们搞技术的,遇到难题,就希望能有人一针见血的指出:你看什么东西就行了。

看什么东西,我都不怕,多晦涩的英文也没有关系,关键是“定位”
的准,否则大海捞针,太郁闷了!

谢谢!
719704155
驱动牛犊
驱动牛犊
  • 注册日期2010-05-24
  • 最后登录2010-06-13
  • 粉丝1
  • 关注0
  • 积分7分
  • 威望51点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2010-05-24 16:20
回 1楼(Parker) 的帖子
你好,非常高兴能看到关于USB初始化的帖子。我刚接触这方面,也遇到了一个问题,在USB初始化过程中,其中
① Set Address Enable;
② Set Endpoint Enable(此时LED亮);
③ Disconnect;
④ delay(1~2 s);
以上都正常,但是执行到Connect时灯没有灭而且主机没有任何反映,不知道为什么?
还有43h参数具体是什么?
谢谢!
游客

返回顶部