找回密码
 立即注册
查看: 41|回复: 5

请教下关于读取芯片ID的问题

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

1

主题

3

回帖

15

积分

新手上路

积分
15
发表于 3 天前 | 显示全部楼层 |阅读模式
单片机型号是32G12K128,
定义unsigned char *ID_ADDR = (unsigned char volatile far *)0x7EFDE0;   
unsigned char  Chip_ID[7]={0};
仿真时执行下面
for (i=0; i<7; i++)
{
        Chip_ID[i] = *(ID_ADDR + i);
}
Watch窗口显示出来7个字节Chip_ID正确,

将Chip_ID定义成xdata, unsigned char xdata Chip_ID[7]={0};
执行上面循环读取,Watch窗口显示出来7个字节不正确,
不知道为什么?



回复

使用道具 举报 送花

3

主题

1987

回帖

822

积分

等待验证会员

积分
822
发表于 3 天前 | 显示全部楼层
您好,关于您在使用国芯单片机(型号为32G12K128)读取芯片ID时遇到的问题,以下从硬件结构、地址映射、代码实现及调试建议等方面进行专业分析与解答,供您参考。

一、芯片ID的物理存储位置与地址映射

在32G12K128芯片中,芯片ID通常由厂商在出厂时写入特定的只读存储区域(如ROM或专用寄存器区域)。该地址通常位于系统地址空间的高端,例如0x7EFDE0附近,具体请参考数据手册《32G12K128 Technical Reference Manual》中的“System Memory Map”章节。

您所使用的定义:
  1. c
  2. unsigned char IDADDR = (unsigned char volatile far )0x7EFDE0;
复制代码

表明您试图通过指针访问该地址。需要注意以下几点:
地址是否正确:请确认该地址是否为芯片ID的起始地址。部分芯片ID可能为6字节或7字节长度,建议查阅官方文档确认。
地址访问权限:该地址是否属于只读区域,写操作可能导致总线错误。
far指针使用:在某些编译器中,far指针用于访问扩展地址空间,需确保编译器支持该语法并正确配置内存模型。

二、代码分析与建议优化

您提供的代码片段如下:

```c
unsigned char IDADDR = (unsigned char volatile far )0x7EFDE0;
unsigned char ChipID[7] = {0};
for (i=0; i

[本文内容由国芯人工智能辅助生成,仅供参考]
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-09-11 16:11:12
已绑定手机

1

主题

3

回帖

15

积分

新手上路

积分
15
发表于 3 天前 | 显示全部楼层
这上面答非所问啊,我芯片的ID起始地址正确,我是将加密好的ID存储到FALSH中了,然后上电读取FLASH中加密好的数据到ChipID中,只要ChipID不加xdata修饰,仿真显示出来加密的数据就正确,只要一加xdata修饰,发现仿真出来的数据就不对了,但是单片机里的数据还是正确的,为什么说准确的?因为我再次把xdata修饰去掉,重新仿真读取,出来的加密ID数据完全正确!
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-09-11 16:11:12
已绑定手机

1

主题

3

回帖

15

积分

新手上路

积分
15
发表于 3 天前 | 显示全部楼层
因为仿真看到了经过xdata修饰过的变量数据不对,即使可能是C251的问题,既然仿真看到数据不准,就不大敢用xdata
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-09-11 16:11:12
已绑定手机

1

主题

3

回帖

15

积分

新手上路

积分
15
发表于 3 天前 | 显示全部楼层
你们可以仿真试一下看看,是不是和我一样
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:557
  • 最近打卡:2025-09-13 09:55:03
已绑定手机

86

主题

6117

回帖

1万

积分

超级版主

积分
11308
发表于 前天 16:01 | 显示全部楼层
仿真程序需要使用XDATA最后768字节,xdata过大时可能会冲突
准确的方式是不要仿真,直接实际运行,用printf来看
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-9-14 11:08 , Processed in 0.115954 second(s), 75 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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