打印

CY7C638xx非控制端点的使用

[复制链接]
2686|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
bobby_yang2010|  楼主 | 2010-4-1 20:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 bobby_yang2010 于 2010-4-1 22:28 编辑

最近要开发一个类似于USB HID键盘的设备,只不过我们还要从HOST接收一些液晶显示内容,所以我将它定义为一个厂商自定义设备。
      看了几天CY7C638xx的数据手册和PSOC USB模块中的代码,感觉控制端点(端点0)部分的代码基本上看明白了,因为端点0的模式寄存器中,有SETUP,IN,OUT这几个标志,HOST发什么请求一下就明白。端点1和端点2的模式寄存器中,就没有这个标志,只有bit3-0这四个模式位,但仔细看数据手册中的模式表,也就是在IN/OUT中写入相应的值来响应主机的请求,但对于什么时候是IN,什么时候是OUT我还是不明白。后来在官方网站的“参考设计”中下载一个“USB鼠标参考设计”,仔细看了其中的代码,发现鼠标的什么按键,滚轮,光学传感器的X/Y都是定期的送到报告包中,再USB_LoadEP(ep,s,c)宏,通过端点1的IN通道送给HOST。具体实现就是将数据送到端点1的FIFO中,然后再修改模式寄存器,指示HOST数据已经送入FIFO,等到下次HOST查询时,把数据取走。
       我不明白的是,如果我想接收主机的数据应如何做,也就是如何区分HOST发给端点1/2的IN/OUT包?我在USB模块代码中找到,可以通过void USB_EnableOutEP(BYTE)将端点1/2设置为输出端点,然后再BYTE USB_bGetEPState(BYTE)查询HOST是否有数据过来,再BYTE USB_bGetEPCount(BYTE)查询有多少个数据,最后再从FIFO中把数据取走。但是端点1我是要作为IN/OUT两个通道的,什么时候我应void USB_EnableOutEP(BYTE)将端点1/2设置为输出端点?

补充:CY7C638xx的端点1/2是不是只能配置成输入端点或输出端点,而不能一个端点配置成输入/输出两个通道?如果是这样,那我上面提的问题就不再是问题了!

沙发
jxin| | 2010-4-3 13:33 | 只看该作者
1,2 一个端点只能配制成一种,要么输入要么输出

使用特权

评论回复
板凳
happytiger2010| | 2010-4-3 21:18 | 只看该作者
找本书看看

使用特权

评论回复
地板
llljh| | 2010-4-4 22:34 | 只看该作者
看来楼主刚入门啊

使用特权

评论回复
5
ylz2004| | 2012-8-7 09:31 | 只看该作者
看到回复很蛋痛,没一个正而八经就问题提出点建议性意见的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

1

帖子

1

粉丝