1. Win7 64下開發

  需下載 CySuiteUSB_3_4_7_B204 http://www.cypress.com/?rID=34870

  使用C:\Cypress\Cypress Suite USB 3.4.7\Driver\bin\wlh\x64下的驅動,並修改inf文件,如下:

  

1 ;for x64 platforms
2 [Device.NTamd64]
3 ;%VID_04B4&PID_8613.DeviceDesc%=CyUsb, USB\VID_04B4&PID_8613
4 
5 TO:
6 
7 ;for x64 platforms
8 [Device.NTamd64]
9 %VID_04B4&PID_8613.DeviceDesc%=CyUsb, USB\VID_04B4&PID_8613

 

2. 固件編寫,需注意修改VID和PID,修改位置為dscr.a51文件中的DeviceDescr字段,下圖加粗部分:VID = 04B4 PID = 8613

DeviceDscr:   
      db   DSCR_DEVICE_LEN      ;; Descriptor length
      db   DSCR_DEVICE   ;; Decriptor type
      dw   0002H      ;; Specification Version (BCD)
      db   00H        ;; Device class
      db   00H         ;; Device sub-class
      db   00H         ;; Device sub-sub-class
      db   64         ;; Maximum packet size
      ;dw   0B404H      ;; Vendor ID
      ;dw   0410H      ;; Product ID (Sample Device)
      dw   0B404H      ;; Vendor ID
      dw   1386H      ;; Product ID (Sample Device)
      dw   0000H      ;; Product version ID
      db   1         ;; Manufacturer string index
      db   2         ;; Product string index
      db   0         ;; Serial number string index
      db   1         ;; Number of configurations

 

3. Slave FIFO同步異步選擇

IFCONFIG寄存器b3 ASYNC  0為同步,1為異步

 

Name 

 Description

b7 

b6 

b5 

b4 

b3 

b2 

b1 

b0 

Default 

Access 

 IFCONFIG

Interface Configuration 

IFCLKSRC 

3048MHZ 

IFCLKOE 

IFCLKPOL 

ASYNC 

GSTATE 

IFCFG1 

IFCFG0 

10000000 

RW 

4. Slave fifo 方式中,FLAGA-FLAGD用於定義端點FIFO狀態

下表第一行中,FLAGB應等於FF

Cypress USB 芯片固件修改_時鐘週期

 

5. PKTEND is an input used to commit the FIFO packet data to the endpoint

 

6. 重要經驗

我也做過類似的東西,給點我的教訓給你吧。同樣的方案,但是沒有遇到你這樣的問題,如果確定是fifo空標的問題,你可以檢查一下是不是固件原因,另外,最好把out端點空標編固定為flagX,如果不這樣的話,非得用a0a1選通端點,才能對應的表示端點滿空信號,有可能你看到的是端點切換所對應的空標變化.同步信號我們是從ifclk引出到fpga的,另外發一個字節的數下來也不保險,如果你拿這個字去表示地址或者做控制用,萬一丟了或者讀錯了怎麼辦?可以充滿了,讀出來比較了再丟.還有,數發下來後,空標變化之後再計數幾個時鐘週期以後去取數.

 

http://wenku.baidu.com/view/a58e456925c52cc58bd6bef1

http://bbs3.driverdevelop.com/simple/?t100075.html