牛人
点赞  2009-9-27 15:13
学习了~
点赞  2009-9-27 16:43
好贴 收藏!
点赞  2009-9-27 16:49
对于这个问题我只能用“郁闷”;来说了。
因为FAE那边也是2440,他跑同一个程序,他的波形很好,我的就不行,真是郁闷透顶。
发给FAE检查,他说没有啥问题,现在和外部的硬件是无关的,仅仅是GPIO而已
点赞  2009-9-27 19:35
这么简单的问题.............就是卡住了,郁闷不已。
点赞  2009-9-27 19:36
FAE那边测试如下程序
// GPF3 setting
rGPFCON &=~(1<<7);// set as output pin
rGPFCON |=(1<<6);

rGPFUP &=~(1<<3); // enable pullup

// GPG1 setting
rGPGCON &=~(1<<3);// set as output pin
rGPGCON |=(1<<2);

rGPGUP &=~(1<<1); // enable pullup

// GPG9 setting
rGPGCON &=~(1<<19);// set as output pin
rGPGCON |=(1<<18);

rGPGUP &=~(1<<9); // enable pullup

// GPG10 setting
rGPGCON &=~(1<<21);// set as output pin
rGPGCON |=(1<<20);

rGPGUP &=~(1<<10); // enable pullup

while(1)
{
//SDA_H;
//SCL_H;
//Cs_H;
//rReset_H;
rGPGDAT |=(1<<1); // set GPG1=1
rGPGDAT |=(1<<9); // set GPG9=1
rGPGDAT |=(1<<10); // set GPG10=1

rGPFDAT |=(1<<3); // set GPF3=1

for(i=0;i<300;i++);
//SDA_L;
//SCL_L;
//Cs_L;
//rReset_L;
rGPGDAT &=~(1<<1); // set GPG1=0
rGPGDAT &=~(1<<9); // set GPG9=0
rGPGDAT &=~(1<<10); // set GPG10=0

rGPFDAT &=~(1<<3); // set GPF3=0
for(i=0;i<300;i++);
}


在while(1)中可以产生112K的方波。

我在我的立宇泰板子上测试居然是三角形的,并且其他IO会受影响。

只是测试工程不同,但是代码是一样的。

现在真的找不到什么原因,郁闷透顶。

这个频率不高啊。咋我的立宇泰2440板子就死活不行呢?
点赞  2009-9-28 15:57
会不会是硬件问题
点赞  2009-9-28 16:27
引用: 引用 33 楼 paul_chao 的回复:
引用 31 楼 paul_chao 的回复:
3. GPxDAT 的动作是 Read-Modify-Write, GPIO 若 driving 能力不强时, 则状态改变的 slope 可能过大, 故未作适当的 delay 再去读时就有可能会读到还未完全转态的状态.


想想解释的不清楚, 再多说一遍
s2440IOP->GPFDAT &=0xFB;
s2440IOP->GPFDAT &=0xFE;

LZ 要的是在 GPIO PF bit 2 先输出 0, 而後再将 bit0 输出 0, 若假设 GPF2 其转态速度为 1 mV/nS, 该指令执行时间为 500nS, 则 BIT2 输出 0 後最多再 500nS, 其就会再读一遍 GPFDAT, 则此时该电位为 3.3V - (1mV/nS * 500nS) = 3.3V - 0.5V = 2.8V, 故仍为 high.

所以 LZ 要解此问题, 应将其 code 改为
C/C++ codeDWORD dwGPFDAT= s2440IOP->GPFDAT;
dwGPFDAT&=~(1<<2);
s2440IOP->GPFDAT= dwGPFDAT;
dwGPFDAT&=~(1<<0);
s2440IOP->GPFDAT= dwGPFDAT;

或是想办法将 GPF2 的转态速度增加为 10 mV/nS.

Paul, Chao @ Techware


paul chao 啊,我郁闷啊。

我的立宇泰2440不行,但是在mini2440 却行,我服了!

搞四天了,现在发现可能是一些设置问题。
我在ADS 下关闭和打开MMU都是一样的结果。

嘿嘿,各位有没有好的建议,遇到这么简单的郁闷问题,实在是幸福,嘿嘿。
点赞  2009-9-28 16:28
引用: 引用 46 楼 csdeny 的回复:
会不会是硬件问题


这个不是,因为我系统起来后,还用作挂起都没有问题。
点赞  2009-9-28 16:28
那把mini2440的系统在立宇泰2440上跑试下
点赞  2009-9-28 16:51
I2C bus, 是三角波還是鋸齒波??

I2C  bus 有 pull-high resister, 若是 rising time 太長, 則將其 pull-high resister 減小, 若是 falling time 太長, 則將其 pull-high resister 增加. 若是 rising time & falling time 都很長, 那..............


点赞  2009-9-28 17:09
I2C bus, 是三角波还是锯齿波??

I2C  bus 有 pull-high resister, 若是 rising time 太长, 则将其 pull-high resister 减小, 若是 falling time 太长, 则将其 pull-high resister 增加. 若是 rising time & falling time 都很长, 那..............

[img=http://forum.eeworld.net/PointForum/ui/scripts/eeworld/Plugin/003/monkey/25.gif][/img][img=http://forum.eeworld.net/PointForum/ui/scripts/eeworld/Plugin/003/monkey/50.gif[/img]

替您老默哀三分钟.

Paul, Chao @ Techware
点赞  2009-9-28 17:12
I/O口模拟IIC的调示注意几点:
1.IO口的方向;
2.时序要对头;
3.适当调试延时;
4.器件地址写正确;
5.ACK信号有没有正确应答;
6.接上拉电阻;

出现非矩型波我认为是延时或IO的方向的问题.

点赞  2009-9-28 17:42
GPxDAT 的动作是 Read-Modify-Write,

设置为 output 时,读取的是寄存器值,不是管脚状态。
点赞  2009-9-28 18:14
管脚上是不是有电容比较大?


点赞  2009-9-28 18:30
引用: 引用 54 楼 shenmou 的回复:
管脚上是不是有电容比较大?


多谢你提醒,我的确结了电容,在不行的开发板上!

难道真的是这个原因!
点赞  2009-9-28 22:52
极有可能啊。

因为我把主频再次调高,也不影响,
这次是张教训了!

明天把这些焊接下来试试。
点赞  2009-9-28 22:56
引用: 引用 54 楼 shenmou 的回复:
管脚上是不是有电容比较大?


哈哈,果然是这个问题啊,

是这样的,我的是买的开发板,我直接用接按钮的GPIO引出,没有想到这个按钮两端接了电容。

现在我的问题所有都解决了。
LCD也点亮了。嘿嘿。搞定NEC LCD,恭喜。

没有想到这个电容会这么可怕,牛B。
会导致这样的问题,真是领教了!

多谢各位,加分壹佰,明天揭帖!
点赞  2009-9-29 12:46
好帖,学习了
点赞  2009-10-10 17:51
123
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复