找回密码
 立即注册
查看: 2147|回复: 18

STC8A8K32S4A12单片机RAM和ROM芯片序列号均未读取出来

[复制链接]

该用户从未签到

6

主题

23

回帖

108

积分

注册会员

积分
108
发表于 2022-11-26 17:00:02 | 显示全部楼层 |阅读模式
本帖最后由 梦里水乡 于 2022-11-27 10:43 编辑

RAM读取方式: ID = (char idata *)0xf1;
ROM读取方式:ID = (char code *)0x7ff9;
参看的是ISP中给的例程程序,但是两种方式都未将芯片ID号读出来,请问哪位用过这个功能 ,我感觉是本人代码的问题,但是,查了很久没找到原因




经过两天的折腾,STC8A8K32S4A12的ID号读取出来了,心得体会如下,如论坛里的某位高人所说:
1)ROM中ID没法仿真调试读出ID号,得通过串口将读取的信息发送出来;
2)RAM中的ID号可以通过仿真的方式读取;
后续尝试读取STC8A8KD4的ID,到时候再更新,据说那个更容易些。
体会:慢慢来不要着急,多向论坛里的老师请教,卡壳的地方就是自己水平提升的地方。

RAM.jpg
ROM.jpg
回复 送花

使用道具 举报

该用户从未签到

552

主题

9492

回帖

1万

积分

管理员

积分
14057
发表于 2022-11-26 17:53:49 | 显示全部楼层
你换 STC8A8K64D4, 这个是取代 STC8A4K32S4的型号,新产品的 ID 已存在专门的只读寄存器 xsfr中
  • TA的每日心情
    开心
    7 天前
  • 签到天数: 16 天

    [LV.4]偶尔看看III

    16

    主题

    724

    回帖

    2578

    积分

    超级版主

    积分
    2578
    发表于 2022-11-26 20:00:49 | 显示全部楼层
    对于STC8A8K32S4A12单片机,仿真时不支持从RAM和ROM读取芯片序列号
    请直接下载运行,然后从串口送电脑查看

    该用户从未签到

    6

    主题

    23

    回帖

    108

    积分

    注册会员

    积分
    108
     楼主| 发表于 2022-11-26 20:21:51 | 显示全部楼层
    zhp 发表于 2022-11-26 20:00
    对于STC8A8K32S4A12单片机,仿真时不支持从RAM和ROM读取芯片序列号
    请直接下载运行,然后从串口送电脑查看
    ...

    RAM中是可以读出来的,但是ROM不知道怎么访问程序存储器区域

    该用户从未签到

    6

    主题

    23

    回帖

    108

    积分

    注册会员

    积分
    108
     楼主| 发表于 2022-11-26 20:25:32 | 显示全部楼层
    神农鼎 发表于 2022-11-26 17:53
    你换 STC8A8K64D4, 这个是取代 STC8A4K32S4的型号,新产品的 ID 已发在只读存储器 xsfr中 ...

    我用的STC8A8K32S4A12开发了很久了,只能后续更换了,程序中ID = (char code*)0x7FF9;(char code)这是访问程序存储器区域的地址0X7FF9吗?我按ID = (char code*)0x7FF9这个程序读出来的全是空值
  • TA的每日心情
    开心
    7 天前
  • 签到天数: 16 天

    [LV.4]偶尔看看III

    16

    主题

    724

    回帖

    2578

    积分

    超级版主

    积分
    2578
    发表于 2022-11-26 20:35:05 | 显示全部楼层
    本帖最后由 zhp 于 2022-11-26 20:37 编辑
    梦里水乡 发表于 2022-11-26 20:21
    RAM中是可以读出来的,但是ROM不知道怎么访问程序存储器区域

    我不知道你说的可以读出是否是在仿真时
    不给还是建议不要在仿真时进行测试,因为RAM中ID号数据可能会被仿真监控程序初始化为0而无法读取

    另外ROM区,对于STC8A8K32S4A12这个型号,只要你是正常ISP下载,ROM地址7FF9H~7FFFH就应该能读取ID
    (注意:仿真时,ROM区的ID号也依然会被仿真监控程序擦除掉,所以不能在仿真时进行测试)

    该用户从未签到

    6

    主题

    23

    回帖

    108

    积分

    注册会员

    积分
    108
     楼主| 发表于 2022-11-26 21:14:08 | 显示全部楼层
    zhp 发表于 2022-11-26 20:35
    我不知道你说的可以读出是否是在仿真时
    不给还是建议不要在仿真时进行测试,因为RAM中ID号数据可能会被仿 ...

    噢,这意思啊,1)ROM中的ID读取,我用单步调试仿真的方式,没读到ROM中的ID,读取的全是0XFF,您的意思是先将程序ISP下载完,然后用串口将读取的ROM中ID传出来?仿真的情况下ROM中的ID读不出,是这意思吗?
    2)读RAM中的ID我确实通过仿真器单步调试读取成功的,但是同样单步调试在ROM中不行。

    该用户从未签到

    6

    主题

    23

    回帖

    108

    积分

    注册会员

    积分
    108
     楼主| 发表于 2022-11-26 21:21:13 | 显示全部楼层
    zhp 发表于 2022-11-26 20:35
    我不知道你说的可以读出是否是在仿真时
    不给还是建议不要在仿真时进行测试,因为RAM中ID号数据可能会被仿 ...

    手册的188页注明RAM中的ID可能会被修改,ROM 中的ID是不会被修改的,而且建议加密时,用ROM中的ID,所以我理解ROM 中的ID是固定不变的,不会被修改的,即使在仿真的情况先,ROM中的ID数据也在吧。不知道这么理解不知道对否?

    点评

    仿真,很多数据得不到的,要做这类测试,最好还是写个串口程序,通过串口把数据读好发送出来。  发表于 2022-12-14 14:10
  • TA的每日心情
    开心
    7 天前
  • 签到天数: 16 天

    [LV.4]偶尔看看III

    16

    主题

    724

    回帖

    2578

    积分

    超级版主

    积分
    2578
    发表于 2022-11-26 21:37:43 | 显示全部楼层
    梦里水乡 发表于 2022-11-26 21:14
    噢,这意思啊,1)ROM中的ID读取,我用单步调试仿真的方式,没读到ROM中的ID,读取的全是0XFF,您的意思 ...

    在Keil环境下,仿真前会将整个ROM空间全面擦除,包括之前的程序、ID号以及EEPROM数据,所以仿真时从ROM区读取ID,一定是FF
  • TA的每日心情
    开心
    7 天前
  • 签到天数: 16 天

    [LV.4]偶尔看看III

    16

    主题

    724

    回帖

    2578

    积分

    超级版主

    积分
    2578
    发表于 2022-11-26 21:42:58 | 显示全部楼层
    本帖最后由 zhp 于 2022-11-26 21:56 编辑
    梦里水乡 发表于 2022-11-26 21:21
    手册的188页注明RAM中的ID可能会被修改,ROM 中的ID是不会被修改的,而且建议加密时,用ROM中的ID,所以 ...

    从RAM和ROM中读取ID号都有缺点,强烈建议使用STC8A8K64D4系列取代。
    STC8A8K64D4的ID号以及一些重要参数都存放在只读存储器CHIPID中,可完美解决RAM区和ROM区的问题
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

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

    GMT+8, 2024-5-18 03:09 , Processed in 0.072964 second(s), 71 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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