阅读:1094回复:6
各位侠客我感觉自己碰见的问题比较的简单,就是解决不了了,您能解决吗?
资源:cy68013开发板,控制面板,厂家附带的例子
问题: 1。如何把EP2设置为输入端口? 2。如何把数据用内部mpu写向EP6端口? 各位侠客也给了建议,可我总是不能成功, 开发过这类的高手您可以实现吗? |
|
|
沙发#
发布于:2003-10-27 11:24
1,你那个“输入”是对谁说的,是 OUT 端点的意思吗?如果是把下面几行加入加入TD_Init()函数:
EP2CFG = 0xA2; SYNCDELAY; EP2BCL = 0x80; // arm EP2OUT by writing byte count w/skip. SYNCDELAY; EP2BCL = 0x80; SYNCDELAY; 其实ep2默认的就是out端点。 2, 参考cy的例子bulkloop或者bulksrc,你想要的内容在TD_Poll()函数里。 |
|
板凳#
发布于:2003-10-27 11:56
默认的EP2是输出(即host to usb)
我要把EP2改为输入(usb to host) 改了描述符和EP2CFG都不好使 还有一问题: 要ARM一个通道,比如EP2 就要向这个相应的计数器EP2BCL里写一个数字 请问这个数字是随便写的吗? 随便写的这个数字在以后的应用中比如(bulkloop里) 又把EP2BCL和EP2BCH都复制给count, 那这个count里的值是什么东西? 好象很乱 [编辑 - 10/27/03 by fengzhongzhige] |
|
|
地板#
发布于:2003-10-27 16:33
除了在TD_Init()里设置相应寄存器外,
还要在dscr.a51里修改端口描述符,把ep2传输方向改为IN。 在bulkloop例子中,EP2BCL = 0x80 来re-arm端口,是为了使buffer立即准备接收下一个OUT封包。参见技术手册的P8-13。 至于count是用来计算接收到多少字节的OUT数据count = (EP2BCH << 8) + EP2BCL;然后将这些放入IN端口的缓冲里啊。 [编辑 - 10/27/03 by zhanggy_zju] |
|
地下室#
发布于:2003-10-27 17:34
其实我就是这样改的 初始和 描述符都改了可用控制面板栗的getpip按钮一看ep2还是输出....????
/************ 在bulkloop例子中,EP2BCL = 0x80 来re-arm端口,是为了使buffer立即准备接收下一个OUT封包。参见技术手册的P8-13。 至于count是用来计算接收到多少字节的OUT数据count = (EP2BCH << 8) + EP2BCL;然后将这些放入IN端口的缓冲里啊。*/////// 可是上一步已经给EP2BCL赋值了,这样怎么能精确的知道接受多少个字节? |
|
|
5楼#
发布于:2003-10-27 19:04
奇怪,我自己试了一下没什么问题啊。
你确定在dscr.a51里把高速和全速的端口描述符都改了吗? EP2CFG的DIR位确定为1吗? [编辑 - 10/27/03 by zhanggy_zju] |
|
6楼#
发布于:2003-10-28 08:02
好了,十分的感谢,我决定给你50分以表内心感激,原因是没改全速的描述符,可我用的是高速的usb2.0,为什么还要改全速的哪个描述副?????。(奇怪,怎么给分?以前发的帖子下面有一个给分的选项,这个怎么没有?)
还有一点就是:即使改对了,但是还要把那个USB插头拔下来,然后重新插上,重新download新改过的.hex,才可见修改过后的效果,不知道是不是和斑竹说过的可能没再枚举有没有关系?可一download,控制面板显示mcu已经复位了,应该是枚举了吧? [编辑 - 10/28/03 by fengzhongzhige] [编辑 - 10/28/03 by fengzhongzhige] [编辑 - 10/28/03 by fengzhongzhige] |
|
|