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
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