CH375与中断传输

来源:互联网 发布:flashftp mac 破解版 编辑:程序博客网 时间:2024/05/22 03:04
发表于:2008-3-24 11:26:00,来源于:58.39.48.34 发贴心情:
-----------------------------------------------------------------------------------------------------CH375用作HOST,连HID类的设备,条码扫描枪,利用论坛提供的例程,基本上实现了功能。
现在有几个问题:
1)例程中设定CH375工作在低速模式,用的是
CH375_WR_CMD_PORT(0x0b);    /* 切换使375B进入低速模式 */
CH375_WR_DAT_PORT(0x17);
CH375_WR_DAT_PORT(0xd8);
是不是只针对CH375B,我用CH375A是该命令总是失败。看到CH375数据手册版本3D上有一条SET_USB_SPEED命令,试了一下,可以
CH375_WR_CMD_PORT(0x04);    /* 切换使375B进入低速模式 */
CH375_WR_DAT_PORT(0x01);
不知该命令对那些版本的CH375有效。

2)设备有一个中断In端点用来传输数据。我发现例程中,在完成设备的枚举和设置之后,发送In令牌启动了中断传输,以后单片机在收到CH375读取数据成功的中断后,再发送IN令牌获取下一次的数据。我的问题是:
中断传输应该是USB Host以一定的速度发送In令牌读取数据,CH375的手册上也说明支持中断传输,可是In令牌发送的频率是怎么决定的?按理说端点描述符中有相关的说明,可CH375是怎么知道这个频率的?好像没有针对这个设置CH375的命令。CH375怎么知道In令牌是发送到中断端点还是批量端点,也就是说CH375怎么知道单片机设置的IN令牌是要进行中断传输呢?USB刚接触,还望高手不吝赐教。

 -----------------------------------------------------------------------------------------------------
这人很懒,什么都没留下回  复 [24145]Re:CH375与中断传输
1
普通用户
SCM { M }
等级:20
发表:0   回复:2480
注册时间:2007-3-15 
发表于:2008-3-24 12:03:00,来源于:58.213.73.248 ,发贴心情:
-----------------------------------------------------------------------------------------------------(1)SET_USB_SPEED只是针对CH375B芯片,其余型号不支持该命令
(2)频率是在中断端点描述符中确定的;CH375本身不关心这个频率,也不需要设置命令,是由用户按照设备中断端点描述符中频率值发送IN令牌包;IN令牌包中有端点号,指明操作哪个端点的,CH375本身也不关心具体的传输类型,都是用户决定的,参考ISSUE_TKN_X或ISSUE_TKN命令。
-----------------------------------------------------------------------------------------------------
交流中提高回  复 [24147]Re:CH375与中断传输
2
普通用户
solekid { M }
等级:3
发表:5   回复:4
注册时间:2008-3-12 
发表于:2008-3-24 13:08:00,来源于:58.39.48.34 ,发贴心情:
-----------------------------------------------------------------------------------------------------谢谢。
您的意思我明白了。能不能这样说,CH375处理的是USB协议中提到的Transaction的概念,而Transfer的流程是要用户来保证的?
我是参考了网站提供的常用USB源程序中CH375B芯片做主机操作鼠标键盘的例子程序。看下来觉得程序的流程是:枚举和设置完成之后,发送In令牌启动整个流程,如果设备端响应了该In令牌,完成了一次传输,那么CH375会向CPU申请中断,CPU在中断服务程序中,读取设备发送的数据,紧接着再发In令牌,启动下一次接收。感觉上CPU(或者说用户)是根据设备发送数据的频率来发送In令牌的。这好像与USB中的中断传输有些区别?还是说实际上在例子程序中,CH375向CPU申请中断的频率其实基本是固定,基本上与一个In事务的时间一致?

-----------------------------------------------------------------------------------------------------
这人很懒,什么都没留下回  复 [24149]Re:CH375与中断传输
3
普通用户
solekid { M }
等级:3
发表:5   回复:4
注册时间:2008-3-12 
发表于:2008-3-24 13:32:00,来源于:58.39.48.34 ,发贴心情:
-----------------------------------------------------------------------------------------------------CH375在发送In令牌之后,是不是只有收到数据完成一次In事务才会向CPU申请中断?
-----------------------------------------------------------------------------------------------------
这人很懒,什么都没留下回  复 [24150]Re:CH375与中断传输
4
普通用户
SCM { M }
等级:20
发表:0   回复:2480
注册时间:2007-3-15 
发表于:2008-3-24 13:34:00,来源于:58.213.73.248 ,发贴心情:
-----------------------------------------------------------------------------------------------------(1)各种传输的流程是由用户通过软件实现
(2)我们例程中并没按照中断端点描述符中指定的频率去读中断点,仅供参考。正确的做法是应该
(3)这个说法不准确,示例程序中CH375向CPU申请中断的频率并不是固定的,还与设备本身数据准备的快慢也有关系。如果CH375每发一个IN事务,设备都能立即响应,那么频率自然高;反之,设备都未能立即响应,产生超时,CH375会进行重试N次(N由用户决定),那么频率自然低。
解释的不够详细,建议多看看USB协议
-----------------------------------------------------------------------------------------------------
交流中提高回  复 [24152]Re:CH375与中断传输
5
普通用户
solekid { M }
等级:3
发表:5   回复:4
注册时间:2008-3-12 
发表于:2008-3-24 13:49:00,来源于:58.39.48.34 ,发贴心情:
-----------------------------------------------------------------------------------------------------非常感谢。
-----------------------------------------------------------------------------------------------------
这人很懒,什么都没留下
原创粉丝点击