CH375B作主机键盘反应慢问题[原创][求助]

我现在用CH375B与51单片机采用并口的连接方式,主要用于读出USB键盘的值,程式是在贵司提供的例程的基础上修改的,见附件,主要有下面的问题: 1。要按键盘上的键10秒钟左右,CH375才产生中断给单片机,也就是说要按住键盘10秒钟以上才能得到键盘的值,松开手后又要等10秒左右才回到全部是0,查了很长时间(差不多1个星期了,还是找不到原因),请帮忙看一下是怎么回事。(我的USB键盘是好的,在电脑上可以用) 作过以下的尝试: 1。程式完全一样,如果接USB鼠标,能很快的得到鼠标的值,很正常! 2,程式完全一样,如果在点亮USB键盘上的灯之后马上按下键盘的键,能很快显示出键值,但松开后,也是要等10秒左右才回到全部是0 UploadImages/2008122910192750.txtUploadImages/2008122910192750.txt

是不是鼠标正常而键盘不正常?如果是这样的话换个键盘测试一下看看结果 NUM LOCK,CAPS LOCK,SCROLL LOCK这三个键目前还不支持,无法点亮LED 修改了一个程序请测试UploadImages/2008122911164840.rar


编译时产生错误如下: Build target 'Target 1' assembling STARTUP.A51... compiling ch375_host_int_para.c... CH375_HOST_INT_PARA.C(158): error C141: syntax error near 'tog', expected ')' CH375_HOST_INT_PARA.C(160): error C202: 'tog': undefined identifier Target not created

在前面加了unsigned char tog和unsigned char endp_int之后还是提示如下的表达示错误 void toggle_recv1( BOOL1 tog ) 将BOOL1去掉之后可以编译通过,但效果还是与原来的一样


将BOOL1换成bit就可以编译过去了 另外你换过键盘测试过吗?这个程序我们一直在用,应该没有多大问题, 你这样测试一下,你用串口输出来监视键值,先不用液晶显示.


又换了一个键盘,按10秒也没有用 ,我再不用液晶显示试一下


用串口还是一样的,下面是直接用串口读出的值(下面的值是一上电没有按任何键的值) 12 01 00 02 00 00 00 08 f2 04 00 04 44 01 01 02 00 01 config 09 02 22 00 01 01 00 a0 32 config 2 09 02 22 00 01 01 00 a0 32 09 04 00 00 01 03 01 01 00 09 21 11 01 00 01 22 41 00 07 05 81 03 08 00 0a set idle report 05 01 09 06 a1 01 05 07 19 e0 29 15 00 25 01 01 75 01 95 08 81 02 95 01 08 81 01 95 03 01 01 01 05 08 19 01 29 03 91 02 95 05 01 91 01 95 06 06 08 15 00 26 00 05 05 05 07 19 00 2a 00 81 00 00 c0 set report set report failed


下面是用不着Bus Hound取得的值,与上面的有些不同 25.0 CTL 80 06 00 01 00 00 12 00 GET DESCRIPTOR 1.1.0 25.0 DI 12 01 00 02 00 00 00 08 ........ 1.2.0 f2 04 00 04 44 01 01 02 ....D... 1.2.8 00 01 .. 1.2.16 25.0 CTL 80 06 00 02 00 00 09 00 GET DESCRIPTOR 2.1.0 25.0 DI 09 02 22 00 01 01 00 a0 .."..... 2.2.0 32 2 2.2.8 25.0 CTL 80 06 00 02 00 00 22 00 GET DESCRIPTOR 3.1.0 25.0 DI 09 02 22 00 01 01 00 a0 .."..... 3.2.0 32 09 04 00 00 01 03 01 2....... 3.2.8 01 00 09 21 11 01 00 01 ...!.... 3.2.16 22 41 00 07 05 81 03 08 "A...... 3.2.24 25.0 CTL 00 09 01 00 00 00 00 00 SET CONFIG 4.1.0 25.0 CTL 21 0a 00 00 00 00 00 00 SET IDLE 5.1.0 25.0 CTL 81 06 00 22 00 00 81 00 GET DESCRIPTOR 6.1.0 25.0 DI 05 01 09 06 a1 01 05 07 ........ 6.2.0 19 e0 29 e7 15 00 25 01 ..)...%. 6.2.8 75 01 95 08 81 02 95 01 u....... 6.2.16 75 08 81 01 95 03 75 01 u.....u. 6.2.24 25.0 CTL 21 09 00 02 00 00 01 00 SET REPORT 7.1.0 25.0 DO 01 . 7.2.0 26 DO 00 01


下面是用不着Bus Hound取得的值,与上面的有些不同 这句应是:下面是用Bus Hound取得的值,与上面的有些不同

不同点在3.2.24以后


是一样的,没什么区别,你看到的少了一些数据是由于MAX PHASE设置过小,从而无法显示.设置大点就可以正常显示了.你的程序在 if(set_report()!=1); printf("set report failed\n"); 多了一个;号.所以会显示set report failed.现在用串口测试结果如何?


用并口去掉;就不显示set report failed,但现象还是与原来的一样!

今天白天出了一天差,晚上接了一下串口的,测试时没有反应,灯都不亮了, 怀疑是波特率设定的不对,看规格书375的波特率在默认状态下是9600, 因此将单片机也设定成了9600(试过单片机用9600可正常的发送数据)。 又用如下的指令将波特率设定成了9600, void CH375_SET_BAUDRATE() { /* 设定波特率 */ delay2us(); CH375_CMD_PORT=0x02; delay2us(); CH375_CMD_PORT=0x02; delay2us(); CH375_CMD_PORT=0xb2; //9600 delay2us(); 还是不行,现在太晚了,明天再试!


你原来不是用的并口吗?用串口的话要设置为9位的,并且printf一定要去掉.


用串口方式,可以将键盘上的LED点亮了,但是按一下按键之后再按就没有反应了,先不调这个了 又收到了两片374的样品,再用374试一下


我也在做这个实验,刚拿到模块,CH375B做主机的一个测试.


如果试验成功了,不妨将原理图及整个工程发表上来,我也学习一下,现在正在用374在调,用的程式也是在网站上的例子,但其中的H文件都是到处找的,现在灯点亮了,但不停的产生中断,如下面所示,正找原因,感觉要用375或374还得花时间研究一下USB方面较深的知识。 00 00 80 00 d5 00 00 f0 00 04 8f ff 00 ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 28 cc 54 67 62 48 04 90 16 bb 12 5e 54 68 38 25 e8 20 f0 58 03 81 57 76 28 b8 04 c4 6e 4a 28 5a Start CH374 Host Reset Device Start Low-Speed Device GetDeviceDescr: device_status=14 12 01 00 02 00 00 00 08 F2 04 00 04 44 01 01 02 00 01 address_status=14 09 02 22 00 09 02 22 00 01 01 00 A0 32 09 04 00 00 01 03 01 01 00 09 21 11 01 00 01 22 41 00 07 05 81 03 08 00 0A hid_des_leng=41 endp_in_addr=08 endp_out_addr=00 config_status=14 SetUsbConfig_success Set_Idle Set_idle success Get_Hid_Des HID_Desc: 05 01 09 06 a1 01 05 07 19 e0 29 e7 15 00 25 01 75 01 95 08 81 02 95 01 75 08 81 01 95 03 75 01 05 08 19 01 29 03 91 02 95 05 75 01 91 01 95 06 75 08 15 00 26 ff 00 05 07 19 00 2a ff 00 81 00 c0 Set_Report Set_Report success s:20 s:20 s:20 s:20 s:20 s:20 s:20 s:20 s:20 s:20 s:20 s:20 s:20 s:20 s:20 s:20 s:20 s:20 s:20 s:20 s:20 s:20 s:20 s:20 s:20 s:20 s:20 下面全部都是S:20;中断指示灯不停的闪亮


如果试验成功了,不妨将原理图及整个工程发表上来,我也学习一下,现在正在用374在调,用的程式也是在网站上的例子,但其中的H文件都是到处找的,现在灯点亮了,但不停的产生中断,如下面所示,正找原因,感觉要用375或374还得花时间研究一下USB方面较深的知识。 00 00 80 00 d5 00 00 f0 00 04 8f ff 00 ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 28 cc 54 67 62 48 04 90 16 bb 12 5e 54 68 38 25 e8 20 f0 58 03 81 57 76 28 b8 04 c4 6e 4a 28 5a Start CH374 Host Reset Device Start Low-Speed Device GetDeviceDescr: device_status=14 12 01 00 02 00 00 00 08 F2 04 00 04 44 01 01 02 00 01 address_status=14 09 02 22 00 09 02 22 00 01 01 00 A0 32 09 04 00 00 01 03 01 01 00 09 21 11 01 00 01 22 41 00 07 05 81 03 08 00 0A hid_des_leng=41 endp_in_addr=08 endp_out_addr=00 config_status=14 SetUsbConfig_success Set_Idle Set_idle success Get_Hid_Des HID_Desc: 05 01 09 06 a1 01 05 07 19 e0 29 e7 15 00 25 01 75 01 95 08 81 02 95 01 75 08 81 01 95 03 75 01 05 08 19 01 29 03 91 02 95 05 75 01 91 01 95 06 75 08 15 00 26 ff 00 05 07 19 00 2a ff 00 81 00 c0 Set_Report Set_Report success s:20 s:20 s:20 s:20 s:20 s:20 s:20 s:20 s:20 s:20 s:20 s:20 s:20 s:20 s:20 s:20 s:20 s:20 s:20 s:20 s:20 s:20 s:20 s:20 s:20 s:20 s:20 下面全部都是S:20;中断指示灯不停的闪亮


这个线路连接图在哪里有?程序中是用的P1口,不用P0作为数据总线吗?

我只找到了CH375中文手册(一),那中文手册(二)在哪里呢?先谢谢各位了。


只有登录才能回复,可以选择微信账号登录