发新帖我要提问
12
返回列表
打印
[51单片机]

xdata 储存问题

[复制链接]
手机看帖
扫描二维码
随时随地手机跟帖
21
datouyuan| | 2016-9-19 19:56 | 只看该作者 回帖奖励 |倒序浏览
应该可以吧.
我没看C8051F340的规格书,你读写0x8000~0x80ff 时,A15引脚应该会有输出.你读写0x0000~0x00ff 时,A0~A7会不会有输出?

使用特权

评论回复
22
popeye021| | 2016-9-20 08:38 | 只看该作者
两只岸上的鱼 发表于 2016-9-19 19:43
是否可以 不拉A15   我还是以0x8000~0x80ff 去读写
让FPGA做下处理   只去判断后16位地址。 ...

不增加地址线的话,只要有读写的地址低八位是00~ff的时候,也会对FPGA进行操作的。

使用特权

评论回复
23
yhn1973| | 2016-9-20 08:53 | 只看该作者
两只岸上的鱼 发表于 2016-9-19 19:20
现在有个问题MCU与FPGA对接,FPGA就当外部RAM使用,因管脚不够,所以mcu地址线只拉了8根,只有256个字节  ...

这个在C8051F340上不会覆盖,有个SFR要设置一下,内部RAM用XDATA,外部RAM用PDATA(对应汇编是MOVX A,@R0),这样只用8根地址线就可以,连A15都不用

使用特权

评论回复
24
两只岸上的鱼|  楼主 | 2016-9-20 08:57 | 只看该作者
yhn1973 发表于 2016-9-20 08:53
这个在C8051F340上不会覆盖,有个SFR要设置一下,内部RAM用XDATA,外部RAM用PDATA(对应汇编是MOVX A,@R0 ...

您知道在哪个SFR吗?看了一些资料说在使用PDATA时会有可能出现BUG

使用特权

评论回复
25
两只岸上的鱼|  楼主 | 2016-9-20 09:01 | 只看该作者
popeye021 发表于 2016-9-20 08:38
不增加地址线的话,只要有读写的地址低八位是00~ff的时候,也会对FPGA进行操作的。
...

这点我没有想到,CPU与FPGA之间有一根CS 只有当CS = 1 时 才去读写操作0x8000-0x80ff,读写完之后CS=0;
这样是不是就可以避免在读写00-ff 时对FPGA操作?

使用特权

评论回复
26
popeye021| | 2016-9-20 09:17 | 只看该作者
本帖最后由 popeye021 于 2016-9-20 09:18 编辑
两只岸上的鱼 发表于 2016-9-20 09:01
这点我没有想到,CPU与FPGA之间有一根CS 只有当CS = 1 时 才去读写操作0x8000-0x80ff,读写完之后CS=0;
...

可以的。
其实只要片外只有FPGA接总线的话,cs都可以不要

使用特权

评论回复
27
两只岸上的鱼|  楼主 | 2016-9-20 09:33 | 只看该作者
popeye021 发表于 2016-9-20 09:17
可以的。
其实只要片外只有FPGA接总线的话,cs都可以不要

芯片里面也有一个4K的片外,怕与FPGA这个片外RAM产生覆盖情况,总线又不够。  

使用特权

评论回复
28
yhn1973| | 2016-9-20 09:59 | 只看该作者
两只岸上的鱼 发表于 2016-9-20 08:57
您知道在哪个SFR吗?看了一些资料说在使用PDATA时会有可能出现BUG

外部存储器接口配置寄存器EMI0CF,工作在非复用方式、不带块选择的分片方式,把外部存储器接口控制寄存器EMI0CN设置为0xFF,就可以内部RAM用XDATA,外部RAM用PDATA,外部RAM只用8个地址线和8个数据线,连373地址锁存器都不用

使用特权

评论回复
29
两只岸上的鱼|  楼主 | 2016-9-20 10:06 | 只看该作者
yhn1973 发表于 2016-9-20 09:59
外部存储器接口配置寄存器EMI0CF,工作在非复用方式、不带块选择的分片方式,把外部存储器接口控制寄存器 ...

我去资料上面看看

使用特权

评论回复
30
ddllxxrr| | 2016-9-20 10:37 | 只看该作者
两只岸上的鱼 发表于 2016-9-19 09:58
补充:
在有些代码中看到,没有外扩RAM器件。也有出现xdata 定义变量,如何正确的去理解这个xdata定义? ...

有些单片机本身就有这个XDATA比如说STC

使用特权

评论回复
31
ddllxxrr| | 2016-9-20 10:39 | 只看该作者
不可以,还有一个堆栈在里边,你不可以全用,这样程序会蹦溃的

使用特权

评论回复
32
幸福至上| | 2016-9-20 12:30 | 只看该作者
xdata就是指的扩展RAM,不管是片内的还是片外的。我用的STC15系列,片上就有256+4K的RAM,这4K就需要通过声明变量为xdata类型来访问,比如:unsigned char xdata temp,此时的temp就被划分到了4K字节的片上扩展RAM。至于MCU外接RAM,STC51系列可以通过寄存器设置选择是否使用内部扩展RAM.如果不使用内部扩展RAM,则xdata就存储在和芯片连接的外部RAM芯片里,一般51能够支持的扩展RAM空间为64Kbyte。如果使能了内部扩展RAM,则xdata数据中的前4K字节会存放在片内扩展RAM,多余的就只能存放在片外RAM,但此时片外RAM最多只能存放64K-4K=60K字节的数据了,应该是受限于地址总线宽度吧。总之,xdata就是放在扩展RAM里的,至于实际是放在片内还是片外扩展RAM,就看你的扩展RAM设置以及编译时的数据划分了。

使用特权

评论回复
33
两只岸上的鱼|  楼主 | 2016-9-21 08:12 | 只看该作者
幸福至上 发表于 2016-9-20 12:30
xdata就是指的扩展RAM,不管是片内的还是片外的。我用的STC15系列,片上就有256+4K的RAM,这4K就需要通过声明 ...

谢谢,很有用 ,我在看看资料

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则