阅读:1514回复:11
有没有南京的朋友,来南理工帮我调调程序(关于PDIUSBD12的枚举)),小弟不胜感激!!!
有没有南京的朋友,来南理工帮我调调程序(关于PDIUSBD12的枚举),小弟不胜感激!!!
[编辑 - 7/8/03 by djsnake] |
|
沙发#
发布于:2003-07-09 10:56
搜一下,这里有很多很多关于枚举的贴子
我就是从那里一步步走到成功的 不懂得就贴出现象来,我们帮你分析。 |
|
板凳#
发布于:2003-07-09 15:14
在我的硬件中,D12的A0通过10K电阻接地,RESET_N通过10K电阻接VCC,用示波器观测数据线上也有波形,但是主机还是发现不了未知设备,而且晶振输出端CLKOUT的输出值为48M,好像函数void reconnect_USB(void)根本没有执行,弄得我这几天很是郁闷!!!!相关函数如下:
void reconnect_USB(void) { unsigned long clk_cnt; D12SUSPD = 0; disconnect_USB(); //for( clk_cnt=0;clk_cnt<100000;clk_cnt++); if(clk_cnt<15000) { clk_cnt++; } connect_USB(); } void connect_USB(void) { // reset event flags DISABLE; bEPPflags.value = 0; ENABLE; D12_SetMode(D12_NOLAZYCLOCK | D12_SOFTCONNECT,D12_SETTOONE | D12_CLOCK_12M ); } void disconnect_USB(void) { // Initialize D12 configuration D12_SetMode(D12_NOLAZYCLOCK, D12_SETTOONE | D12_CLOCK_12M); } void D12_SetMode(unsigned char bConfig ,unsigned char bClkDiv) { if(bEPPflags.bits.in_isr==0) { DISABLE; } outportb(D12_COMMAND,0xF3); //set mode command outportb(D12_DATA,bConfig); //INCLUDE CONFIGRATION BITS outportb(D12_DATA,bClkDiv); //INCLUDE THE CLOCK DIVISIONG FACTOR TYPE if(bEPPflags.bits.in_isr==0) ENABLE; } void outportb(unsigned char port,unsigned char val) { unsigned char xdata *ext_address; ext_address=0xff00+port; *ext_address=val; } |
|
地板#
发布于:2003-07-09 15:23
兄弟,你的程序根本就没改啊,怎么可能输出是12M呢?需要在outportb(D12_COMMAND,0xF3); //set mode command 下面加上设置成12M的语句的。你再试试吧,应该没问题了。
|
|
地下室#
发布于:2003-07-09 16:35
void D12_SetMode(unsigned char bConfig ,unsigned char bClkDiv)仅仅是一个供调用的函数而已,真正设置softconnect和12M是在connect()和disconnect()函数中,在这两个函数中我已经设置了。
|
|
5楼#
发布于:2003-07-09 16:39
sorry,看的时候马虎了,会不会是硬件上的问题啊,比如上拉和下拉电阻。
|
|
6楼#
发布于:2003-07-09 17:16
谢谢,我再查查吧
|
|
7楼#
发布于:2003-07-10 08:39
看看HCT123用的是不是有问题吧。
|
|
8楼#
发布于:2003-07-10 09:34
我还没有用到74HC123
|
|
9楼#
发布于:2003-07-10 09:43
我建议你把HCT123加上再试试,估计是你现在的时序有问题.
|
|
10楼#
发布于:2003-07-10 10:37
我现在可以发现未知设备,晶振输出也是正确的,但还是枚举不成功
|
|
11楼#
发布于:2003-07-10 10:41
你的HCT123是按照D12板子的连接的吗?
|
|