首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

请教s12单片机外扩ram问题

请教s12单片机外扩ram问题

型号是mc9s12dj64,需要外接一块总线通讯器spc3,其实就是一块双口ram,选择的是窄扩展模式,地址暂定为0x1000~0x15ff。目前的问题是通过仿真器无法将程序烧写到flash中,后来将模式改为单芯片模式 就可以正常烧写了,通过阅读版上的帖子,怀疑可能是开发环境没设置好,比如prm文件中还要定义外部ram的地址,
后来在ram.prm中修改如下:
SEGMENTS
MY_RAM = READ_WRITE 0x0400 TO 0x0BFF; /* 2K */
MY_PSEUDO_ROM = READ_ONLY 0x0C00 TO 0x0FFF; /* 1K */
SPC3_RAM =READ_WRITE 0X1000 TO 0X15FF
END
PLACEMENT
_PRESTART, STARTUP,
ROM_VAR, STRINGS,
NON_BANKED,DEFAULT_ROM,
COPY INTO MY_PSEUDO_ROM;
DEFAULT_RAM INTO MY_RAM;
EXT_RAM INTO SPC3_RAM
/* EEPROM_DATA INTO EEPROM; */
END


然后在main.c中

#pragma DATA_SEG EXT_RAM
SPC3 spc3;// SPC3是一个结构体,定义了器件的内部结构
#pragma DATA_SEG DEFAULT

还是烧不进去

请问是什么原因阿,是不是我还遗漏了某些寄存器设置?

同时还有一些问题要请教:
1、外部ram级别最低,如何保证它不被flash重叠呢?是不是设置romhm?
2、0x1000~0x15ff这个地址可用马?

3x
哇强陈 终于给我回复了 等的好心急阿
你的意思是我调试的时候把MODA MODB配置成single chip 模式?
等调完了 程序定型了再改回扩展模式?那样调试和最终运行的结果会不会有偏差?

强陈,我用单片模式已经可以仿真了。但是我怀疑是否真的写入到外部ram,因为有些值写进去后读出来是对的,但有些是有问题的。会不会单片机把它划到了一块内部ram中呢?我是按照顶楼的格式定义的外部ram,应该没问题吧?

还有一个问题,我想把e_clock展宽,怎么做?单片模式下是无效的

非常谢谢 期待您的回复
热心的强陈!!回复好快
请问改那个寄存器阿?看了半天资料没找到阿
我刚才拔了锁存器374,data1里边外ram的值仍然有,可见写外ram没成功,很可能是s12划了一块内部ram
强陈 搞不定阿 改了mode 还是不行
没有锁存器 照样能读出ram的值
你能传一份应用窄扩展模式的工程例子马 参考一下
太感谢了 我调着试试
论坛上热心肠好多阿
还是有一点问题,如果直接用wizard建一个工程 空内容 ,晶振24m,eclk输出12m,可按bmbmi的方法,eclk直接输出高电平了,没有脉冲阿。那没有时钟,数据怎么能写入外ram呢?
头大了!!
斑竹能帮我看一下工程吗?到底我的程序能访问外ram吗?
http://bbs.chinaecnet.com/uploadImages/jianxue.rar
参考bmbmi 只有几句话,eclk一直为高
我的cpu是mc9s12dj64 cw4.6教学版,p&e的bdm
今天突然想到扩展模式的初始化是不是应该放在start12.c中?
您的意思是ECLK只有进行读写操作时才会有输出?
可是我用wizard建的空工程运行后ECLK一直有脉冲阿
恩,也就是说ESTR设置为自由时钟ECLK一直有输出,否则读写时才有。
还有一个问题想麻烦一下您,扩展模式下bdm调试窗口中,data1也就是全局变量的值准确吗? 对外ram读写时,寄存器少的话读出来的值还是对的,多了的话就不对了
刚才调了一下,是程序有问题
呵呵 不好意思
返回列表