阅读:1225回复:9
求教各位老大,D12写正常,但是读不正常!!
本人在测试对D12的读写控制时,写是正常的,可是在通过对D12的chip ID读的过程当中发现只有一次读正确过,程序始终都没有改变过,之后就再也读不正确了,不知道是什么原因。
还忘各位老大,给小弟点建议! |
|
|
沙发#
发布于:2004-12-03 14:46
你上次不是说是时序的问题吗?
你的芯片已经能工作了,肯定是软件的问题 另外,问大哥你一下,我的D12的clkout在没插上仿真头的时候是有4m输出的,插上仿真头之后就编程低电平而不是2.5v了,请赐教是怎么回事 |
|
|
板凳#
发布于:2004-12-03 15:22
我的读写有一次可以正常工作了,就说明软件原因的可能是不是比较低?
另外,关于您的板子插上仿真头之后,变成低电平是什么引脚?其他的引脚是什么状态? 如果方便可以给我写信:rongfeel@163.com 我的msn:rongfeel@msn.com 我们可以共同交流! |
|
|
地板#
发布于:2004-12-03 16:39
那你用其他命令试试啊,比如F3h,设置时钟频率
|
|
|
地下室#
发布于:2004-12-06 09:27
不好意思!
今天才上网! 我已经用0XF3设置过了,频率正确! |
|
|
5楼#
发布于:2004-12-06 10:54
我根你的情况一样,chipid读正确一次后,再也读不对了
我哭,呜呜呜呜呜呜 这么难的东西,为什么也要我一个女生做?! |
|
|
6楼#
发布于:2004-12-06 11:05
我发现我的问题了,是因为我读的时间不一样,我的程序是这样的:
D12_ReadChipID(); /*D12初始化************/ D12_ReadInterruptRegister(); D12_ReadCurrentFrameNumber(); D12_ReadEndpointStatus(4); D12_ReadEndpointStatus(5); D12_ReadLastTransactionStatus(0); D12_ReadLastTransactionStatus(1); D12_ReadLastTransactionStatus(2); D12_ReadLastTransactionStatus(3); 因为我第二次运行的时候,是运行到第三条语句才去D12_ReadChipID()函数里面看读出的值,但是这些函数内部变量都是用i,j,执行到下面语句时,D12_ReadChipID()里面的i,j已经被冲掉了 你的是不是范了我的错呢? |
|
|
7楼#
发布于:2004-12-06 11:48
我查了几天,我的代码和读写时序都是符合要求的,
而且我读CHIP ID 并不是都是错,有一次读正确过。所以....郁闷呀! 那次读正确的情况是这样的:我当时用示波器查看D12的片选引脚和读引脚的电平状况,无意中读就正确了。(我的读测试是通过循环读CHIP ID进行测试的)。 以下是本段程序:中间没有延时。 while(1) //11-30 test the rd_n clk { outportb(D12_COMMAND,0xFD); chipID = inportb(D12_DATA); chipID += (inportb(D12_DATA) << 8); printf("Get the USB D12 chip ID is : 0x%x \r\n",first); //0x1012 } |
|
|
8楼#
发布于:2004-12-08 17:35
刚开始我也是这样的,不过后边就好了。你可以连续读两次,看看有没有什么规律,我的情况是,发现读出来跟前一次有些错位,确认是时序的问题。不知道你的是不是时序问题,可以改变时钟频率试试看。
|
|
9楼#
发布于:2004-12-09 15:43
我的目前读写都正常了,现在遇到了枚举的问题!
能否交流一下! 非常感谢回复! |
|
|