既然OC已经通过USB3.0接口识别了我的FX2LP最小系统,我打算做一下bulkloop例程。
第一步自然是向default FX2LP中写入bulkloop的固件程序:
利用Suite中的USB Control Center程序可以刷写RAM, D:\Cypress\Cypress Suite USB 3.4.7\Firmware\Bulkloop 里面有转换好的固件程序——bulkloop.hex文件。
Figure 1
刷写成功(图2)!,设备的名字随着绑定inf文件中的PIDVID的更换而改变。RAM中的程序是掉电丢失,所以如果断开USB重连的话,会发现设备的名字又变成了default设备的名字,也就是上图1中的名字。
Figure 2
这个名字是我在inf文件中给04B4&1004设备特地起的:
Figure 3
现在可以打开Suite自带的封装好的bulkloop.exe程序进行测试:
Figure 4
测试的结果:利用EP2输出,然后利用EP6读回。
Figure 5
同样,利用USB Control Center也可以测试bulkloop,下图中,利用EP2发送一组数据,然后利用EP6读回一组数据:
Figure 6
如果Transfer Data-IN点多了,返回错误;如果Transfer Data_OUT点多了,也会返回错误。借此可以理解TD_Init函数中对端点进行配置时,所提到的"Double",这里不深入解释。
Figure 7
问题是,不同于多数教程中所提到的,我使用了USB Control Center来完成实验,而没有使用USB Console。原因是我的USB Console没有显示我插入的设备:
Figure 8 同一时刻的USB Control Center 和USB Console
总结一下实验流程:
Default FX2LP→安装cyusb.sys→FX2LP被识别成Cypress USB Generic Driver (3.4.7.000)FRANK64【RAM中没有固件】→用Control Center刷写bulkloop固件到RAM→安装cyusb.sys→FX2LP被识别成bulkloop,VID_04B4&PID_1004【RAM中有bulkloop固件】→利用Control Center进行读写实验
这里解释一下,为什么两次安装的驱动都是cyusb.sys:因为官方只提供了这么一个Win Vista x64驱动——cyusb.sys,而且官方的例程都是基于此驱动的。我在对应的cyusb.inf文件中分别添加了04B4&8613和04B4&1004两种设备(固件)的信息,在首次安装驱动的时候,sys文件和inf文件就已经被拷贝到系统目录中,所以第二次需要安装驱动的时候,系统几乎是瞬间就找到匹配的inf,并自动完成了驱动安装。
关于遗留问题:在网上看到有人说:"Control Center只能使用EZ驱动,Console只能使用CY驱动。"可我遇到的状况是,使用了CY驱动,但只有Control Center可以工作,Console不能工作。谁能解释一下原因?