请教如何读取AI8H1K17的唯一ID
首先,阅读数据数据手册,并没有得出明确答案,AI8H1K17到底是否支持CHIPID来读取唯一id。
另外,使用STC-isp带的demo,也没读取出id来,下面是我尝试从rom种读取id的代码:
void printf_deviceID()
{
uchar flag;
char *ID;
ID = (char code *)0x43f9;
printf("device ID is is : ");
for(flag=0;flag<7;flag++){
printf("0x%02bx\r\n", ID);
//printf("0x%02bx\r\n", CBYTE);
}
printf("\r\n");
}
上面代码读取出来的7个字节都是0xff;
请问下,到底怎么读取AI8H1K17的内置ID
和8H1K08一个系列,没CHIPID,使用ISP加载重要参数读取ROM区,参考此例程(15W408是8K FLash,注意更改至1K17的17K Flash地址):
https://www.stcaimcu.com/forum.php?mod=redirect&goto=findpost&ptid=20799&pid=192751
ercircle 发表于 2025-11-3 17:54
和8H1K08一个系列,没CHIPID,使用ISP加载重要参数读取ROM区,参考此例程(15W408是8K FLash,注意更改至1K17 ...
你好,按照你的提示,仍然没有读取到AI8H1K17单片机的唯一id;
首先,按照你提供的demo,移植到我的工程中,代码如下:
#define ID_ADDR_ROM 0x43eb//存放自增ID
volatile bit remote_config_Enable = 1;
void printf_deviceID()
{
uchar i;
unsigned char code *ptr;
ptr = ID_ADDR_ROM;
for(i=0;i<21;i++){
printf("%04X:%02bX\r\n",(ID_ADDR_ROM+i),*ptr);
ptr++;
}
}stc-isp工具勾选和打印日志,截图如下:
如上图所示,读取出来的数据全部都是FF呢,不知道什么原因,请继续帮忙跟进解决下。谢谢
zwubxzti 发表于 2025-11-4 08:34
你好,按照你的提示,仍然没有读取到AI8H1K17单片机的唯一id;
这是个IAP型号,末尾是EEPROM区,往前再减去EEPROM区大小试下
ercircle 发表于 2025-11-3 17:54
和8H1K08一个系列,没CHIPID,使用ISP加载重要参数读取ROM区,参考此例程(15W408是8K FLash,注意更改至1K17 ...
经过测试我又有了新的进展,由于程序初始化阶段,我对EEPROM扇区0进行了清零操作,导致读取ID那部分的数据得到的全部是FF;
我屏蔽掉对EEPROM扇区0的清零操作就能读取到ID了;
但是,我确实需要用EEPROM,这矛盾怎么解决? zwubxzti 发表于 2025-11-4 08:46
经过测试我又有了新的进展,由于程序初始化阶段,我对EEPROM扇区0进行了清零操作,导致读取ID那部分的数 ...
先读取到RAM,清零后重新写入
zwubxzti 发表于 2025-11-4 08:46
经过测试我又有了新的进展,由于程序初始化阶段,我对EEPROM扇区0进行了清零操作,导致读取ID那部分的数 ...
保留最后一个扇区的EEPROM空间不要使用,例如需要用0.5K空间存储数据
那么EEPROM空间可以设置1K,只擦写前0.5K空间,后面0.5K空间不要擦写。
页:
[1]