阅读:1840回复:10
SL811HS不能读写的问题(十万火急)
我把SL811HS映射到ARM的地址空间上,SL811HS和ARM 44b0x是这样连接的
SL811HS 44B0x nWR nWE nRD nOE nCS nGS4 A0 ADR0 nREST nREST M/S GND D0-D7 D0-D7 SL811HS的读写函数是这样的 SL811Write(BYTE adr, BYTE data) { *((* BYTE)0x08000000) = adr; *((* BYTE)0x08000001) = data; } SL811Read(BYTE adr, BYTE data) { *((* BYTE)0x08000000) = adr; return(*((* BYTE)0x08000001)); } 0x0800000是SL811的地址 main()函数里面与SL811hs相关的就是两句; BYTE res; SL811Write(0x40,0x88); res=SL811Read (0x40); 0x40是sl811的存储器,0x88是测试数据。 就这样总是得到 res=0x40,而不是0x88; 如果写成SL811Read (0x50);总是得到0x50; 不知道什么原因,请高手指点 我用试波器看到44B0的读写信号都是正确的,晶振的波形也还可以。 但是不能确定SL811HS是否已经正常工作? 请回复:hdb198@126.com |
|
沙发#
发布于:2004-08-28 13:31
不用搞那麽复杂!并且数据或者地址也是跟着
nWR nWE nRD nOE nCS nGS4 A0 ADR0 等信号走的! (但是你在这里面没表现出来!) |
|
|
板凳#
发布于:2004-08-28 13:40
搞个代码给你,调试过的:
//P0:D0~D7 sbit A0=P2.0; sbit nWR=P2.1; sbit nRD=P2.2; sbit CS=P2.3; Write811(unsigned char Address,unsigned char WRData) { A0=0; P0=Address; nWR=0; ; nWR=1; A0=1; P0=WRData; nWR=0; ; nWR=1; return; } 看起来很繁,但是这是811所要求的时序;read811有同样的方法! |
|
|
地板#
发布于:2004-08-28 14:00
先谢谢,这位兄弟,但是我的sl811hs是映射到arm的地址空间上的,也就是说,A0,nWR,nRD,之类的控制线都是自动产生的。
可以加我的qq:64933453 讨论 |
|
地下室#
发布于:2004-08-31 11:27
楼主,请问你的问题解决了没?我用的是nios,也碰到了和你类似的问题,如能得到你的指点,真是我的荣幸:)
|
|
5楼#
发布于:2004-08-31 15:59
我用MCF5249读写811也遇到了类似的问题,希望和你讨论
|
|
6楼#
发布于:2004-11-11 09:55
顶一下,89c52无法读写ram,郁闷
|
|
7楼#
发布于:2004-11-11 17:49
还没搞定?
|
|
|
8楼#
发布于:2004-11-12 09:52
我也是811, arm7 44b0 40mhz
调试时连续写正常,单步读,写正常,但free run (连续读,让程序跑起来)连续读不正常,第一字节正常,后面的数据都和第一字节值相同。连续读时每字节都是是先写地址再读。 请大侠们回答!!!! 救命!!!! |
|
9楼#
发布于:2004-11-13 09:53
我也是811, arm7 44b0 40mhz 44b0+811多少钱?还不如用2410 |
|
10楼#
发布于:2004-11-13 10:51
我用单片机+811开发,请教
|
|
|