阅读:3328回复:24
是我弱还是片子有问题?
我用philips的D12,这个片子的中断应该是低电平有效,那常态就应该是高电平啊,可它死活就是高不上去,上拉电阻我也接了(10k)
郁闷 |
|
沙发#
发布于:2004-11-11 10:29
非常感谢!我试试!
|
|
|
板凳#
发布于:2004-11-11 10:28
非常感谢!
|
|
|
地板#
发布于:2004-11-10 12:53
何必这么费劲,使用AN2131或CY7c68013 非常方便.开发难度教小
|
|
地下室#
发布于:2004-11-10 10:52
原先的板子走线较乱,后来我按照ZLG给的原理图画了块测试板,就51+d12,器件焊上就好了。与原来的板子比较,D+、D-走线短了(原来的走线将近9cm);cs接到P1口(原来的cs接在P2口,访问外部地址方式访问d12,硬件检测也是正常的);还有就是原来使用的是6clocks的单片机。原来的板子不行,给我感觉就是没有布好。我现在的工作没机会跟ARM打交道,对ARM了解不多,现在只是在看书阶段,不过地址不冲突,应该没有问题。
|
|
5楼#
发布于:2004-11-10 00:07
egrias!再次请教一下!
您说的D+与D-走线大概有多长? 这点会引起总线挂起,而使INT_N引脚一直为低码? 我现在将D12的CS引脚同时接到了ARM芯片的 外部I/O设备的片选上面和外部ROM的片选信号上面会不会这样有影响呢? |
|
|
6楼#
发布于:2004-11-09 16:16
我用1581好像也有这个问题存在,中断有一段时间然后就没有了,然后又有了。中断没有时INT脚一直为低。不知道为什么?
|
|
7楼#
发布于:2004-11-09 14:31
D12我没有深入了解。当初要开发一个USB接口,我也是刚开始接触研发工作,前辈弄了一段时间没弄好,就丢了给我。我沿用了前辈留下的板子,弄了半个多月,枚举就是通不过。考虑到当初要求的速度不快,使用PL2303HX了事了。后来闲着就弄了弄D12,发现其实很简单,使用周立功提供的电路原理图就可以了,提供的源程序改改就好用。当初没搞定,可能是板子布局不好,D+、D-走线过长,总线老是被挂起导致枚举通不过。
|
|
8楼#
发布于:2004-11-08 21:44
本站就有下载呀!兄弟!
znsoft的开发板! void outportb(unsigned short nPort, unsigned char nVal) { #ifdef PARALLEL_BUS // These statements are very obscure for a newbie of C51. // A good way to understand them is reading the assembly language. unsigned char xdata *exAddress; exAddress = nPort; *exAddress = nVal; #else P1 &= 0xf1; // Enable D12 IC_D12_A0 = nPort & 0x01 ? 1 : 0; // If the LSB of nPort is 1, the following data is a command, otherwise a data IC_D12_WR = 0; // Write command/data to D12 P0 = nVal; // Transfer command/data to D12 IC_D12_WR = 1; // Disable writing P1 |= 0x0e; // Disable D12 #endif } unsigned char inportb(unsigned short nPort) { unsigned char nVal; #ifdef PARALLEL_BUS // Pls refer to the comments above unsigned char xdata *exAddress; exAddress = nPort; nVal = *exAddress; #else // Pls refer to the comments above. // Only converts the write action to read. P1 &= 0xf1; // Enable D12 IC_D12_A0 = nPort & 0x01 ? 1 : 0; IC_D12_RD = 0; nVal = P0; IC_D12_RD = 1; P1 |= 0x0e; // Disable D12 #endif return nVal; } |
|
|
9楼#
发布于:2004-11-08 15:45
哪位大虾能把硬件提取层的两个函数贴出来参考一下(:inportb和outportb),不胜感激!
|
|
10楼#
发布于:2004-11-07 00:14
egrias!您好!
我用的是ARM50M与D12连接,除了硬件问题还有没有可能是时序的问题? |
|
|
11楼#
发布于:2004-11-07 00:11
你的程序有点问题!
你再仔细看看! |
|
|
12楼#
发布于:2004-11-06 09:44
各位大虾帮看一下,下面是USB固件里的硬件提取层的两个函数是否有错?为什么每次进入unsigned char inportb( unsigned char A0)后,C口一设为输入,读到的就全部变为‘00000000’,到底是什么问题?我用的是PIC单片机和D12。
void outportb(unsigned char A0, unsigned char data) { int i; TRISC=0x00; //C口设为输出 RB4=0b1; //禁止写D12 RB2=(A0==0x01)?1:0;//A0=1,输出命令,A0=0,输出数据 PORTC=data; //命令字放到C口 RB4=0b0; //写D12使能 RB4=0b1; //禁止写D12 } unsigned char inportb( unsigned char A0) { int i; unsigned char data; TRISC=0xff; //C口设为输入 RB2=(A0==0x01)?1:0; //A0=0,是数据 RB3=0b1; //读D12禁止 RB3=0b0; //(通过C口)读D12使能 data=PORTC; // 使data=C口上读入的值 RB3=0b1; //读D12禁止 return data; //返回data } |
|
13楼#
发布于:2004-11-05 15:10
这是硬件的问题还是我读D12时的软件程序有问题
|
|
14楼#
发布于:2004-11-05 15:07
egrias 大吓,我想问一下,我的D12的VDD电压是由外部供电有3.1V左右,V3。3管脚有2。9V左右,但我读不到ID,读到的只有00。
你能告诉我你的QQ吗,我想现在就问你,谢谢了: |
|
15楼#
发布于:2004-11-05 13:25
检查一下硬件电路。
=========================================================== 测试硬件的方法有三种, 一种是通过0xFD命令读取特征字,连续的两个字节(我的是 0x1210,不管系统在什么状态下,不管是不是处于中断状态 下,都可以读取)。 第二种是通过设置CLKOUT的输出频率,通过示波器来观察 CLKOUT端的输出波形,是不是和自己设定的一致。 第三种是通过V3.3脚的电压,如果此脚输出是3.3V则电路没问 题。 =========================================================== |
|
16楼#
发布于:2004-11-05 10:22
楼上的大吓,我现在的问题和你的一样,你解决了吗?能交流一下吗,我的QQ是394725250。
|
|
17楼#
发布于:2004-11-02 16:36
现在的问题是,我向D12当中发0xF4命令,他返回的还是0xF4,从这点上看应该是CS地址不正确造成的吧?
|
|
|
18楼#
发布于:2004-11-01 16:45
呵呵……
我也用遇过这个问题的!也郁闷了很久的,也试过很多的方法的,后来才知道其实很简单的哦! 只要在初始化后调用一下中断函数,就可以使他变成高电平了!几乎很多人都遇过这个问题的,都是用这样的方法解决的!不信的话,你自己试一下就知道拉! |
|
19楼#
发布于:2004-11-01 14:56
这个问题我现在也遇到了,可是上拉电阻我也接了,寄存器我也都读过,可是我读的值都是写入的命令值呀!例如:0xf4,0xf0..等等!
各位老大,是不是我的片选地址有问题? 我使用的是SUNSAMG4510B 和d12 连接,外部供电! 这个问题困扰我一个星期了!急死偶了! 还请各位老大多多执教! |
|
|
上一页
下一页