好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

EZ-USBFX2(68013)固件研究(6).pdf

2页
  • 卖家[上传人]:飞***
  • 文档编号:47465950
  • 上传时间:2018-07-02
  • 文档格式:PDF
  • 文档大小:10.20KB
  • / 2 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 那么,什么是重枚举呢? 首先,上面的 USB 枚举是对通用 USB 来说的,一般 USB 设备只有枚举过程, 没有重枚举过程也就是说其实,对EZ-USB 系列来说,上面的枚举举实际包含 了 EZ-USB 枚举和重枚举两 个过程: 对 EZ-USB 来说,枚举过程就是 USB 上电复位到加载固件前这段过程,此时 USB 设备地址号为默认的0 号,枚举完成后,驱动为 cypress...eeprom..missing(FX2/FX2LP来说)然后加载固件,进行重枚举,重枚举 完成后,显示驱动为cypress...ez-usb...example 或其他自定义设备 为什么 EZ-USB 有重枚举过程呢?这就是为了可以让主机在前期固件未加载 前自动枚举,识别USB,从而可以从上位机加载固件到68013 的 RAM 中,而无 需使用 ROM,EEPROM,FLASH 等内存实现“软件”架构加载程序代码,随时 修改固件 EZ-USB 如何控制重枚举? 首先, EZUSB 有一个寄存器 USBCS,其中第 1 位 USBCS.1为 Renum控制 枚举重枚举在 USB 上电未加载固件代码前, Renum=0,表示使用“ EZUSB 核 心”对芯片的初始配置,处理主机设备请求,并负责把固件下载到RAM 中,这 个过程就是“枚举”,完成该枚举过程的设备叫做“缺省USB 设备 (地址号 0) ”, 即驱动显示为“ ...missing”的设备。

      当固件被下载到8051 RAM 后,此时 Renum =1,表示使用“增强8051 核心”处理主机设备请求,并按照固件的代码(读取 所有描述符)重新配置USB 设备,这个过程就叫做“重枚举”,完成重枚举后, 显示自定义的 USB 设备“ ...example”,实际是模拟断开与连接的过程 用以下表表示: 处理设备请求Renum8051 动作 枚举EZUSB 核心Renum=08051 置 Renum=1 重枚举8051Renum=18051 重置 Renum =0 在重枚举完成后, 对控制端点 0 的设备请求可以由“ EZUSB 核心”处理或由 “增强 8051核心”处理,有 Renum的值决定芯片上电时 Renum=0, 由“EZUSB 核心”处理; 一旦 8051开始运行,就可以设置 Renum=1,由“增强 8051核心” 处理,表示按照8051 下载的固件代码处理 当然,这时也可以设置Renum=0,让“ EZUSB 核心”处理端点 0 的设备请 求,而让 8051 完成具体的 USB 数据传输,这样做会大大简化8051固件代码 然后再看接下来的代码: 注意,在这段代码之前,EZUSB 已经枚举完成,当然,整个过程是自动的, 我们看不见的。

      #ifndef NO_RENUM if(!(USBCS // renumerate 重列举 } #endif这段代码即告诉 USB 进行重枚举,用软件设置,模拟USB 断开与连接, EZUSB_Discon(TRUE)完成断开连接,具体实现在EZUSB.lib 库中,大概代码是 这样的: void UsbDisconnect(BOOL renum) { if(renum) USBCS |= (bmDISCON | bmRENUM); else USBCS |= bmDISCON; EZUSB_Delay(1500); USBIRQ = 0xff; EPIRQ = 0xff; EZUSB_IRQ_CLEAR(); USBCS } 将 USBCS 寄存器的 DICON 位置 1,断开 USB,同时如果 RENUM 位为 0, 则置 1;然后重新连接 USB // unconditionally re-connect. If we loaded from eeprom we are // disconnected and need to connect. If we just renumerated this // is not necessary but doesn't hurt anything USBCS //重新连接 CKCON = (CKCON // Set stretch // clear the Sleep flag. Sleep = FALSE; //清 sleep标志 这段代码英文意思说的很清楚了,CKCON 还不清楚干什么用的。

      紧接着主机开始读描述符,并进行配置(发送SetConfiguration),加载驱动 等,完成重枚举。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.