ulzwcapd 发表于 2025-3-19 09:14:36

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

1、我的一个项目之前是使用12C5624AD芯片的,但是后面更换成了相同封装的STC12C5628AD。
2、这两款芯片资源基本相同,如下图,唯一的却别是EEPROM上,
   24AD的是4k,而28AD是使用IAP方式实现的。

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


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

问:
1、请问是否有大神知道正常使用EEPROM和使用IAP方式实现的操作上有什么不同吗?
   我看STC-ISP(V6.67)软件上没有做区分呀!
2、有没有哪个大神调试过STC12系列的IAP功能的?


国芯人工智能 发表于 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>[本文内容由国芯人工智能辅助生成,仅供参考]

神农鼎 发表于 2025-3-19 09:25:47

STC12C5428AD 的 程序FLASH是全开放让你IAP 任意修改,
请修改 24K 以后的地址空间



深圳国芯人工智能有限公司-工具软件

21cnsound 发表于 2025-3-19 09:42:02

EEPROM的地址不一样

DebugLab 发表于 2025-3-19 09:54:22

IAP操作要加上24K的offset就和12C5624一样使用了
MOVC读是绝对地址,不用修改

ulzwcapd 发表于 2025-3-19 11:23:11

神农鼎 发表于 2025-3-19 09:25
STC12C5428AD 的 程序FLASH是全开放让你IAP 任意修改,
请修改 24K 以后的地址空间


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

ulzwcapd 发表于 2025-3-19 11:28:52

神农鼎 发表于 2025-3-19 09:25
STC12C5428AD 的 程序FLASH是全开放让你IAP 任意修改,
请修改 24K 以后的地址空间


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

神农鼎 发表于 2025-3-19 11:31:59

建议改成管脚兼容的 STC12H1K28-LQFP32/SOP28/SOP20
https://www.stcaimcu.com/data/download/Datasheet/STC12H.pdf

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

ulzwcapd 发表于 2025-3-19 11:51:37

DebugLab 发表于 2025-3-19 09:54
IAP操作要加上24K的offset就和12C5624一样使用了
MOVC读是绝对地址,不用修改

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

神农鼎 发表于 2025-3-19 11:53:47

ulzwcapd 发表于 2025-3-19 11:51
是的,请问是否有办法在程序开始运行的时候判断时24AD还是28AD呢?

自己ISP烧录时,写个参数进去
页: [1] 2
查看完整版本: 12C56系列兼容问题 IAP EEPROM | 已解决