发表于: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 ,发贴心情: ----------------------------------------------------------------------------------------------------- 非常感谢。 ----------------------------------------------------------------------------------------------------- 这人很懒,什么都没留下