完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
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:cypressu***binhex2bix -c 0x80 -i-f 0xC2 -o bulkloop.iic bulkloop.hex。 如果不加-c 0x80命令,那么CY7C68013A就会默认枚举成高速,加上-c 0x80就默认枚举成全速。(本段内容可以参考TRM手册55页内容) 那么在实现将设备默认枚举为全速后,如果在程序中将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) |
|
相关推荐
4个回答
|
|
很好,顶一个,good
|
|
|
|
很好,有机会试一下!
|
|
|
|
很好,有机会试一下!
|
|
|
|
干货。期待试一试。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
求助大佬们,装了补丁的pads9.5,页面还是有这种问题怎么办?
8343 浏览 1 评论
5621 浏览 1 评论
PADS Layout 在Bottom层添加测试点,被盖了绿油(同样的操作TOP层没有被绿油覆盖),怎么设置才能去掉绿油?
6181 浏览 1 评论
10426 浏览 0 评论
PADS DRC报焊盘之间距离过小,焊盘间距为7,但是规则的安全间距为5
18069 浏览 2 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 10:32 , Processed in 0.556810 second(s), Total 47, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号