新手请教关于硬件IIC, XDATA问题
勿喷,业余爱好者,从keil转到Linux VS+PlatformIO+sdcc,stc8h8k64u, 遇到个问题,定义变量时用xdata关键字分配到xram,用硬件IIC发送数据就出问题,切换到data或者idata就正常。请问这个xram和iic寄存器有什么讲究吗?
keil编译时选择memory mode - large xdata,编译出来也正常,keil会自动分配吗?
再请问大佬platformio的sdcc能不能像keil一样编译时指定memory mode - large xdata?
1.IIC寄存器跟XRAM没有特别讲究的,IIC DAM传输就是通过XRAM进行数据收发。
2.keil memory model设置large xdata,变量默认设置到xdata区域。
3.暂时没用过,要坐等其他大佬来解答一下 STC8H8K64U 发表于 2023-6-26 17:18
1.IIC寄存器跟XRAM没有特别讲究的,IIC DAM传输就是通过XRAM进行数据收发。
2.keil memory model设置large...
非常感谢,我在keil里面指定内存模式为large没问题,sdcc就不行,用的FwLib STC8这个库,ssd1306就是不显示,把IIC的总线速度设置为32以上屏幕闪一下就没了,如果ssd的驱动函数变量用idata或者data就没问题,IIC总线速度能到3,1.2MHz,我再研究看看
如上图所示,sdcc编译mcs51时默认是--model-small,地址总线拢共才只有8位,当然只能访问data和idata了。
hsrzq 发表于 2023-6-26 20:15
如上图所示,sdcc编译mcs51时默认是--model-small,地址总线拢共才只有8位,当然只能访问data和idata了。 ...
感谢解惑,请问大佬知道在PlatformIO里怎么配置sdcc编译的时候用large模式吗? wang2012216 发表于 2023-6-26 22:55
感谢解惑,请问大佬知道在PlatformIO里怎么配置sdcc编译的时候用large模式吗? ...
我是外行,不是大佬。我没用过PlatformIO,用的是VSCode+eide+sdcc 编译选项加上 --model-large
我用VSC+EIDE+SDCC测试
当然也可以加上其他设置大小的选项
当然也可以加上其他设置大小的选项--model-large --xram-size 8192 --iram-size 256 --code-size 65536 测试PlatformIO方式
解决方法:
1,新建link_large.py文件,放在和platformio.ini文件同一个目录。
link_large.py内容:
Import("env")
env.Append(LINKFLAGS=["--model-large"])
2.platformio.ini文件修改,增加build_flags = --model-large
我测试STC8H8K64U板子
platform = intel_mcs51
board = STC8H8K64U
build_flags = --model-large
熊仔 发表于 2023-7-15 16:03
测试PlatformIO方式
解决方法:
1,新建link_large.py文件,放在和platformio.ini文件同一个目录。
版主有时间开个帖吗?讲下VSCode编辑单片机程序的编辑,编译插件什么的
页:
[1]
2