跪求~CH375B做主机用串口方式连单片机的键盘、鼠标例程~[求助]

求~CH375B做主机用串口方式连单片机的键盘、鼠标例程~

我现在通过串口方式使用CH375B做主机来操作键盘,板子已经做好,程序写到了配置USB设备这里,CMD_AUTO_SETUP命令用过,返回Ox14,说明事务成功了吧?接下来建立连接就出现了问题,我不知道自动配置的时候是默认使用哪个端点?用CMD_ISSUE_TKN_X建立连接的时候,CH375会不断地返回0x28或0x2e。 之前取得的描述符为: 设备: 12 12 01 00 01 00 00 00 08 B4 04 00 01 01 00 01 02 00 01 设备 12 12 01 10 01 00 00 00 08 3C 41 03 20 00 02 01 02 00 01 键盘 12 12 01 10 01 00 00 00 08 41 12 77 11 00 02 00 00 00 01 鼠标 PHILIPS

配置: 22 09 02 22 00 01 01 00 A0 32 09 04 00 00 01 03 01 02 00 09 21 00 01 00 01 22 34 00 07 05 81 03 08 00 0A 鼠标 PHILIPS 22 09 02 22 00 01 01 04 A0 32 09 04 00 00 01 03 01 01 05 09 21 00 01 00 01 22 3F 00 07 05 81 03 08 00 0A 设备 22 09 02 22 00 01 01 04 A0 23 09 04 00 00 01 03 01 01 05 09 21 10 01 00 01 22 41 00 07 05 81 03 08 00 18 键盘 参考了“CH375B芯片做主机操作鼠标、键盘的例子程序.c”以后,我自己试着修改了一下例程,发现并不是简单的改几个小地方就可以的,还存在许多问题(我发现原例程里面就存在问题……在枚举部分)。 希望可以在“CH375B芯片做主机操作鼠标、键盘的例子程序.c”的基础上,做一个串口方式的例程。 另外,希望给一个配置包的分析说明文件,因为不知道每一个字符的含义就没有办法正确配置(协议的翻译稿最好)。 我的邮箱个人信息保护,已隐藏方便的话发给我吧,或者直接把关键点回复下来,多谢

自动配置和端点没关系的. 流程基本不变,你只要去修改对375的三个读写子函数就可以了.就参考你用的文件就行了.


例程说是查询中断,结果发现不是查询方式的,开了EX0。 如果改读函数的话,就涉及到RI和INT0中断冲突的问题,因为具体怎么配置时序不是像你们这样的专业是很难一点点试出来的,开了串口中断收375的数据,还要考虑INT0处理中断的函数,根本不是简单的改改就能完成的(不信你可以改改试试,并不像想象中的那么简单),至少我改了以后发现基本上大部分的函数我都改过,不该时序就对不上了,总是死在某个地方,所以才请教你们给一份串口的例程,这本就应该提供的,不是吗?现在大量的时间都耗在研究USB芯片上,烦啊! 给一份串口例程吧,拜托了!


首先我们可以修改,提供给您串口操作的相关程序. 解释一下,没有必要用中断去收CH375的数据,因为单片机是主动方,也就是说,当MCU控制发起一次事务的时候,有没有数据你是可以知道的,比如去接收键盘数据,只有你让键盘传数据,键盘才会上传的,平时MCU也不会收到数据的,所以串口是完全没有必要用中断方式的. 下面贴出串口操作的相关程序,您把读写子函数按照下面的程序替换,操作一下看看: void CH375_PORT_INIT( ) { SCON = 0xD0; 设置串口为9位数据 设置波特率和其它串口参数 }

void xWriteCH375Cmd( UINT8 mCmd ) { TI = 0; TB8 = 1; SBUF = mCmd; while ( TI == 0 ); }

void xWriteCH375Data( UINT8 mData ) { TI = 0; TB8 = 0; SBUF = mData; while ( TI == 0 ); }

UINT8 xReadCH375Data( void ) { while ( RI == 0 ); RI = 0; return( SBUF ); }

void mInitSTDIO( ) { SCON = 0x50; PCON = 0x80; TMOD = 0x20; TH1 = 0xf3; /* 24MHz晶振, 9600bps */ TR1 = 1; TI = 1; } 另外如果您对我解释的还有不明白的话,您还可以电话咨询,02552638370,我们会给您详细的解答.


非常感谢您的回复,我之前自己做的时候也是这么做的,但是就是不知道哪里出了问题,总是就是没反映。。。没办法,我只能改成总线连接方式了,这样就可以直接用例程了,呵呵 经过调试,基本功能已经没有问题了,现在是卡在了USB设备的配置上了,今天我又发了一个新帖子,希望您能够去看一下,看看我的USB设备到底应该如何配置呢? 再次由衷地感谢您的回复,谢谢!


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