经过几次调试CY7C68013的板子,我总结出几点经验,以供正在调试68013或试图使用该芯片的朋友参考,也欢迎大家一起讨论。
Cypress公司的usb芯片具有开发简单,文档和例子齐全,驱动不要自己写的特点,非常适合开发周期紧者使用。
对于68013其外围电路主要可以参考该开发包中的电路图,如果你没有买可以之间去公司网站上下。
我使用的是56管脚的因为它已经完全可以满足一般简单数据传输的要求了,它的关键管脚有ifclk,wakeup,reset,d+,d-和电源,地。只要他们对了,主机就可以找到芯片并识别出来。
ifclk,在一般情况下我们使用usb内部的时钟,它可以通过一个大电阻上拉到3.3V.当然你也可以同时接到cpld或FPGA,如果你想使用外部时钟时,但是要注意它只能接5-48MHz的时钟。所以在使用速度可调的FIFO读写时就可能存在可调范围不大的问题,这可以通过同步和异步解决,在同步时它是5-48Mhz,在异步时x-20Mhz(其中x可以很小),在我们的项目中就实现了200khz到48mhz的速度读写FIFO。
wakeup,用来唤醒沉睡中的USB,一般情况下我们也是用100k的电阻上拉到3.3v。只有在你非常注意功耗时才用到。
reset,进行复位,免去了反复插拔设备的麻烦,但是前提是你使用总线供电模式。要注意在reset接地时要保证它与3.3v之间还有一个大电阻,以免直接电源与地相接。
d+,d-是与主机通讯的数据线,当USB设备插上主机时,d+和d-上有一个压差,主机就会发现外围设备,索求pid和vid,载入相应驱动。这儿可能出现两个问题:1、主机发现不了外设2、主机可以发现外设但是不能识别,在usb图标上是一个问号。在第一种情况下主要是d+和d-的问题,因为只要保证接口的4根线是vCC,gnd,d+,d-按要求变即使真没有外设,主机也可以检测到外设,所以如果检测不到,很可能有线接反了;在第二种情况下,原因就比较多了,a,d+,d-线太长了,太细,拐弯太多以致数据出现传输错误,vid和pid无法正确传送,这时可能出现有时可以识别,有时又不能识别。b,由于上面的几个管脚没接好,USB芯片没有正常工作。