STC8A8K32S4A12单片机RAM和ROM芯片序列号均未读取出来
本帖最后由 梦里水乡 于 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,到时候再更新,据说那个更容易些。
体会:慢慢来不要着急,多向论坛里的老师请教,卡壳的地方就是自己水平提升的地方。
你换 STC8A8K64D4, 这个是取代 STC8A4K32S4的型号,新产品的 ID 已存在专门的只读寄存器 xsfr中 对于STC8A8K32S4A12单片机,仿真时不支持从RAM和ROM读取芯片序列号
请直接下载运行,然后从串口送电脑查看
zhp 发表于 2022-11-26 20:00
对于STC8A8K32S4A12单片机,仿真时不支持从RAM和ROM读取芯片序列号
请直接下载运行,然后从串口送电脑查看
...
RAM中是可以读出来的,但是ROM不知道怎么访问程序存储器区域 神农鼎 发表于 2022-11-26 17:53
你换 STC8A8K64D4, 这个是取代 STC8A4K32S4的型号,新产品的 ID 已发在只读存储器 xsfr中 ...
我用的STC8A8K32S4A12开发了很久了,只能后续更换了,程序中ID = (char code*)0x7FF9;(char code)这是访问程序存储器区域的地址0X7FF9吗?我按ID = (char code*)0x7FF9这个程序读出来的全是空值 本帖最后由 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号也依然会被仿真监控程序擦除掉,所以不能在仿真时进行测试)
zhp 发表于 2022-11-26 20:35
我不知道你说的可以读出是否是在仿真时
不给还是建议不要在仿真时进行测试,因为RAM中ID号数据可能会被仿 ...
噢,这意思啊,1)ROM中的ID读取,我用单步调试仿真的方式,没读到ROM中的ID,读取的全是0XFF,您的意思是先将程序ISP下载完,然后用串口将读取的ROM中ID传出来?仿真的情况下ROM中的ID读不出,是这意思吗?
2)读RAM中的ID我确实通过仿真器单步调试读取成功的,但是同样单步调试在ROM中不行。 zhp 发表于 2022-11-26 20:35
我不知道你说的可以读出是否是在仿真时
不给还是建议不要在仿真时进行测试,因为RAM中ID号数据可能会被仿 ...
手册的188页注明RAM中的ID可能会被修改,ROM 中的ID是不会被修改的,而且建议加密时,用ROM中的ID,所以我理解ROM 中的ID是固定不变的,不会被修改的,即使在仿真的情况先,ROM中的ID数据也在吧。不知道这么理解不知道对否? 梦里水乡 发表于 2022-11-26 21:14
噢,这意思啊,1)ROM中的ID读取,我用单步调试仿真的方式,没读到ROM中的ID,读取的全是0XFF,您的意思 ...
在Keil环境下,仿真前会将整个ROM空间全面擦除,包括之前的程序、ID号以及EEPROM数据,所以仿真时从ROM区读取ID,一定是FF 本帖最后由 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区的问题
页:
[1]
2