这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » S3C4510访问外部端口的奇怪问题

共5条 1/1 1 跳转至

S3C4510访问外部端口的奇怪问题

菜鸟
2005-05-03 20:35:29     打赏

各位用过S3C4510的朋友: 用S3C4510B CPU (uCLinux)扩展一外部设备,用外部I/O Bank2 地址3fd8020,当用C编程读其地址时,用示波器观察nECS2和nOE 时,发现:

1个读操作,出现4个nECS2和4个nOE:

____ _ _ _ _______________ nECS2 \____/ \____/ \____/ \____/ ______ ____ ____ ____ _________________ nOE \_/ \_/ \_/ \_/

工作频率:50MHz,nECS2负脉冲宽度是150ns,间隔55ns.

此时的端口宽度设的是32位,我以为是它的问题,改成16位位宽时, 脉冲竟变成了8个,改成8位位宽时,脉冲是16个,我干脆将DS2设 成00,结果读3fd8020时,脉冲一直持序下去不停了,程序也退不 出来了。

更糟的是:如果连序读该地址,后序的语句好象并未产生nECS2信 号,要延时一段时间后才能再产生nECS2!!!!! 程序大致如下:

void xdelay(int k) { while(k>0) { k--; } }

.... k=200000; for(i=0;i<256;i++) { ubuf[i]=MyPort; <=MyPort是我的端口3fd8020 xdelay(k); } .... 上面程序中的k设小了就不行,也就是说,不延时就可能只产生4个 nECS2脉冲.

看4510B的datasheet文件,不应出现这样的现象啊,请大家帮我 看看是不是哪里设错了?




关键词: S3C4510     访问     外部     端口     奇怪     问题    

菜鸟
2005-05-04 19:57:00     打赏
2楼
关掉这段地址的Cache

菜鸟
2005-05-06 03:25:00     打赏
3楼

谢谢,果然是Cache的事,按手册将A26置‘1’关掉Cache,即将0x3fd8020改成0x7fd8020访问就好了。

非常感谢!望其他朋友也注意这个问题!


菜鸟
2005-05-16 00:27:00     打赏
4楼
我也想知道

菜鸟
2005-05-16 21:24:00     打赏
5楼

不是哪个寄存器,而是把你要访问的地址的A26位置成1就可以了。

比如你要读0x3fd8020地址,改成读0x7fd8020就行了。在硬件译码上它们是同一个地方,只是后者是直接访问的,

不通过Cache.


共5条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]