设为首页 加入收藏

TOP

USB学习笔记连载(二十):FX2LP如何实现高速和全速切换(转载)
2017-10-10 12:22:31 】 浏览:2223
Tags:USB 学习 笔记 连载 二十 FX2LP 如何 实现 高速 全速 切换 转载

 

CYPRESS的USB外设控制器CY7C68013A是一款广泛应用于USB打印机,手机,存储设备,USB测试等多个领域的经典产品。该产品符合USB2.0协议规范,支持full speed和high speed两种速度模式,并且配有8051的MCU,带有IO,IIC,UART,定时器等功能。由于该芯片是市场上唯一支持high speed模式的芯片,所以一上市后,就获得了广泛的关注。

关于CY7C68013A的开发,CYPRESS提供了完整的程序架构,一般的应用只需要理解了它的软件架构以及寄存器的含义,然后根据自己的需求修改寄存器初始化值,并且修改USB的相关描述符即可实现。并且CYPRESS提供了较多的例程以及上位机,方便参考和调试,加快了开发的进度。

但是在开发的过程中,如果你想实现将你的CY7C68013A设备速度模式变为可切换,那你可能就要纠结和痛苦了。因为你查遍了它的DATASHEET和TRM手册也不会发现有相关的介绍。

但是请不要急,看完这篇帖子,你就能够实现了。

首先,在CY7C68013A的所有例程中,默认情况下,都是将设备枚举成高速模式的。那么如果想实现将其默认枚举成全速设备的话,应该怎么做呢?那就需要修改其中的寄存器值了。怎么改,改哪里呢?CY7C68013A的实现方法有点weird。因为他不是像别的MCU那样在程序中配置了某个寄存器的值就可以实现的,他是通过修改KEIL软件的配置实现的。准确的说是在KEIL调用Hex2bix文件,实现将HEX的文件转换为IIC文件时通过修改转换的参数来实现的。即将KEIL配置中的命令改成

c:\cypress\usb\bin\hex2bix -c 0x80 -i-f 0xC2 -o bulkloop.iic bulkloop.hex。

如果不加-c 0x80命令,那么CY7C68013A就会默认枚举成高速,加上-c 0x80就默认枚举成全速。

那么在实现将设备默认枚举为全速后,如果在程序中将USB断开了一次,CY7C68013A又会变成了高速模式,此时想要切换速度模式,又需要怎么做呢?很简单,只需要这样(大招来了):

USBCS |= bmDISCON;      // just disconnect from USB

CT1&=0x02;     //0x02保证程序重启后可以保持在全速,//0x00保证在高速

                                     EZUSB_Delay(1500);  

                                     USBCS&=~bmDISCON;      // reconnect USB

                                     USBCS|=  bmRENUM;          //EZUSB_Discon(TRUE);

即修改寄存器CT1的值就好了。这个寄存器就是控制速度模式的寄存器。但是翻遍了TRM手册,也没有关于这个寄存器的介绍,为什么呢?那是因为这个寄存器是不合法的,准确说是这个寄存器是CYPRESS公司开发的时候,在TEST时候使用的。所以没有公布。以上内容希望对大家有帮助。(本段代码只能参考例程中关于寄存器的文件fx2regs.h)

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇USB学习笔记连载(十六):USB数.. 下一篇USB学习笔记连载(二十一):CY7C..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目