找回密码
 立即注册
查看: 2288|回复: 11

新手请教关于硬件IIC, XDATA问题

[复制链接]

3

主题

4

回帖

37

积分

新手上路

积分
37
发表于 2023-6-26 14:34:12 | 显示全部楼层 |阅读模式
勿喷,业余爱好者,从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?
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:59
  • 最近打卡:2025-06-16 10:04:37
已绑定手机

21

主题

476

回帖

2280

积分

版主

积分
2280
QQ
发表于 2023-6-26 17:18:11 | 显示全部楼层
1.IIC寄存器跟XRAM没有特别讲究的,IIC DAM传输就是通过XRAM进行数据收发。
2.keil memory model设置large xdata,变量默认设置到xdata区域。

3.暂时没用过,要坐等其他大佬来解答一下
www.STCAI.com
回复 支持 反对

使用道具 举报 送花

3

主题

4

回帖

37

积分

新手上路

积分
37
发表于 2023-6-26 18:31:57 | 显示全部楼层
STC8H8K*** 发表于 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,我再研究看看
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:503
  • 最近打卡:2025-06-19 09:53:01
已绑定手机

29

主题

349

回帖

2003

积分

金牌会员

机长

积分
2003
发表于 2023-6-26 20:15:55 | 显示全部楼层
1.png

如上图所示,sdcc编译mcs51时默认是--model-small,地址总线拢共才只有8位,当然只能访问data和idata了。
业余撸代码,专业开飞机 https://gitee.com/STC-MCU
回复 支持 反对

使用道具 举报 送花

3

主题

4

回帖

37

积分

新手上路

积分
37
发表于 2023-6-26 22:55:07 | 显示全部楼层
hsr*** 发表于 2023-6-26 20:15
如上图所示,sdcc编译mcs51时默认是--model-small,地址总线拢共才只有8位,当然只能访问data和idata了。 ...

感谢解惑,请问大佬知道在PlatformIO里怎么配置sdcc编译的时候用large模式吗?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:503
  • 最近打卡:2025-06-19 09:53:01
已绑定手机

29

主题

349

回帖

2003

积分

金牌会员

机长

积分
2003
发表于 2023-6-26 23:18:19 | 显示全部楼层
wang20*** 发表于 2023-6-26 22:55
感谢解惑,请问大佬知道在PlatformIO里怎么配置sdcc编译的时候用large模式吗? ...

我是外行,不是大佬。我没用过PlatformIO,用的是VSCode+eide+sdcc
业余撸代码,专业开飞机 https://gitee.com/STC-MCU
回复 支持 反对

使用道具 举报 送花

11

主题

340

回帖

939

积分

荣誉版主

积分
939
发表于 2023-7-15 10:50:42 | 显示全部楼层
编译选项加上 --model-large
我用VSC+EIDE+SDCC测试
large.png

当然也可以加上其他设置大小的选项
回复 支持 反对

使用道具 举报 送花

11

主题

340

回帖

939

积分

荣誉版主

积分
939
发表于 2023-7-15 10:51:23 | 显示全部楼层
当然也可以加上其他设置大小的选项  --model-large --xram-size 8192 --iram-size 256 --code-size 65536
回复 支持 反对

使用道具 举报 送花

11

主题

340

回帖

939

积分

荣誉版主

积分
939
发表于 2023-7-15 16:03:29 | 显示全部楼层
测试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板子
  [env:STC8H8K64U]
  platform = intel_mcs51
  board = STC8H8K64U
  build_flags = --model-large      
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:401
  • 最近打卡:2025-06-19 11:34:56

12

主题

126

回帖

1803

积分

金牌会员

积分
1803
发表于 2023-9-23 22:51:08 | 显示全部楼层
熊*** 发表于 2023-7-15 16:03
测试PlatformIO方式
解决方法:
1,新建link_large.py文件,放在和platformio.ini文件同一个目录。

版主有时间开个帖吗?讲下VSCode编辑单片机程序的编辑,编译插件什么的

点评

上网查呀,我也是按照网上的资料弄的。  详情 回复 发表于 2023-9-24 11:22
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-20 05:06 , Processed in 0.534779 second(s), 114 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表