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

12C56系列兼容问题 IAP EEPROM | 已解决

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-03-19 09:14:36
已绑定手机

1

主题

4

回帖

23

积分

新手上路

积分
23
发表于 2025-3-19 09:14:36 | 显示全部楼层 |阅读模式
1、我的一个项目之前是使用12C5624AD芯片的,但是后面更换成了相同封装的STC12C5628AD。
2、这两款芯片资源基本相同,如下图,唯一的却别是EEPROM上,

     24AD的是4k,而28AD是使用IAP方式实现的。
截图202503190900009538.jpg
3、程序里面有使用EEPROM功能,现在的情况是:
(1)程序不做修改,在24AD里面能正常运行;能下载到28AD芯片里面,但是无法正常运行;
(2)修改EEPROM部分的驱动代码,使用STC-ISP(V6.67)生成的示例代码还是一样的现象;
截图202503190911475357.jpg

(2)屏蔽掉EEPROM的3个字节读、写、片擦除函数里面的处理,下载到28AD里面,能正常长运行;

问:
1、请问是否有大神知道正常使用EEPROM和使用IAP方式实现的操作上有什么不同吗?

     我看STC-ISP(V6.67)软件上没有做区分呀!
2、有没有哪个大神调试过STC12系列的IAP功能的?



回复

使用道具 举报 送花

3

主题

1160

回帖

1031

积分

等待验证会员

积分
1031
发表于 2025-3-19 09:18:00 | 显示全部楼层
关于STC12C56系列芯片的IAP EEPROM兼容性问题,以下是分析与建议:<br><br>1. 芯片差异:STC12C5624AD与STC12C5628AD的主要区别在于EEPROM的实现方式。24AD使用传统EEPROM,而28AD通过IAP(In-Application Programming)技术模拟EEPROM。这种差异可能导致访问方式和时序上的不同,从而影响程序的正常运行。<br><br>2. 问题分析:  <br>   - 程序在24AD上运行正常,说明非EEPROM部分代码无问题。  <br>   - 在28AD上无法正常运行,且使用STC-ISP生成的示例代码后仍无效,表明问题可能出在IAP EEPROM的访问逻辑或初始化配置上。  <br>   - 屏蔽EEPROM功能后程序正常,进一步确认EEPROM相关代码是问题的根源。<br><br>3. 解决方案:  <br>   - 检查IAP初始化:确保IAP功能的时钟配置、访问权限及地址范围正确。  <br>   - 调整访问时序:IAP模拟的EEPROM可能需要不同的读写时序,参考STC官方手册调整延时或状态检查。  <br>   - 验证数据完整性:在写入和读取时增加校验机制,确保数据操作正确。  <br>   - 更新驱动代码:使用最新的STC-ISP工具生成驱动代码,并确保与芯片型号匹配。<br><br>4. 建议:在开发过程中,针对不同芯片的资源特性进行针对性适配,尤其是涉及底层硬件的功能模块,确保代码的兼容性和稳定性。<br><br>通过以上调整,应能解决STC12C5628AD的EEPROM兼容性问题。<br><br>[本文内容由国芯人工智能辅助生成,仅供参考]
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15613
发表于 2025-3-19 09:25:47 | 显示全部楼层
STC12C5428AD 的 程序FLASH是全开放让你  IAP 任意修改,
请修改 24K 以后的地址空间


截图202503190951009337.jpg
深圳国芯人工智能有限公司-工具软件
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:452
  • 最近打卡:2025-05-01 06:20:50
已绑定手机

13

主题

1257

回帖

2971

积分

金牌会员

积分
2971
发表于 2025-3-19 09:42:02 | 显示全部楼层
EEPROM的地址不一样
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-01 07:10:25
已绑定手机

76

主题

4833

回帖

8343

积分

超级版主

DebugLab

积分
8343
发表于 2025-3-19 09:54:22 | 显示全部楼层
IAP操作要加上24K的offset就和12C5624一样使用了
MOVC读是绝对地址,不用修改
DebugLab
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-03-19 09:14:36
已绑定手机

1

主题

4

回帖

23

积分

新手上路

积分
23
发表于 2025-3-19 11:23:11 | 显示全部楼层
神*** 发表于 2025-3-19 09:25
STC12C5428AD 的 程序FLASH是全开放让你  IAP 任意修改,
请修改 24K 以后的地址空间

刚刚确认了一下,看了EEPROM的开始地址,
发现原来的是0x0000,改成0x6000(24K)恢复正常了。感谢

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-03-19 09:14:36
已绑定手机

1

主题

4

回帖

23

积分

新手上路

积分
23
发表于 2025-3-19 11:28:52 | 显示全部楼层
神*** 发表于 2025-3-19 09:25
STC12C5428AD 的 程序FLASH是全开放让你  IAP 任意修改,
请修改 24K 以后的地址空间

在代码运行的时候,有没有方法可以识别当前的芯片是24AD还是28AD吗?
根据识别到的信号去设置EEPROM地址,这样这两个芯片的代码就能完全兼容了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15613
发表于 2025-3-19 11:31:59 | 显示全部楼层
建议改成管脚兼容的 STC12H1K28-LQFP32/SOP28/SOP20
https://www.stcaimcu.com/data/download/Datasheet/STC12H.pdf

ISP 烧录时自己选择可以更改的 IAP 空间大写,不全开放,
IAP 逻辑地址从0开始/不是程序区的 0

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-03-19 09:14:36
已绑定手机

1

主题

4

回帖

23

积分

新手上路

积分
23
发表于 2025-3-19 11:51:37 | 显示全部楼层
Debu*** 发表于 2025-3-19 09:54
IAP操作要加上24K的offset就和12C5624一样使用了
MOVC读是绝对地址,不用修改

是的,请问是否有办法在程序开始运行的时候判断时24AD还是28AD呢?

点评

老型号不建议用于新设计 建议换新型号如8H系列,新型号的15字节ID可以直接读到型号 [attachimg]88568[/attachimg] 12C5624AD和12C5628AD: 全球唯一ID位置不同,FLASH不去操作空白区域默认应该是0xFF,去这两个位  详情 回复 发表于 2025-3-19 12:05
自己ISP烧录时,写个参数进去  详情 回复 发表于 2025-3-19 11:53
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15613
发表于 2025-3-19 11:53:47 | 显示全部楼层
ulzw*** 发表于 2025-3-19 11:51
是的,请问是否有办法在程序开始运行的时候判断时24AD还是28AD呢?

自己ISP烧录时,写个参数进去
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 04:27 , Processed in 0.162976 second(s), 108 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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