ISP软件不可以对stc8h8k64u写入内部参考电压问题(已解决)
本帖最后由 STC8H8K64U 于 2023-12-8 09:06 编辑由于需要用内部参考电压测量外部ADC电压,需要读出内部参考电压,但遇到了问题。1.老ISP软件stc-isp-15xx-v6.87H 对stc8h8k64u可以写入内部参考电压到rom区0xfdf7,但不能写到ram 区0xef,通过一个显示 程序验证,但是ISP程序的输入用户程序运行时的IRC频率选项不能大于8M,不知道什么原因,2. 最新的stc-isp-15xx-v6.92G ISP程序的输入用户程序运行时的IRC频率选项可以大于8M,如12M,但对stc8h8k64u不可以写入内部参考电压到rom区0xfdf7,也不能写到ram 区0xef,ISP软件上没有“在程序区的结束处添加重要测试参数”的选项. 3. 在仿真运行时rom区和ram区都查看不到内部参考电压。4.对于STC8H1K08 芯片 老ISP软件stc-isp-15xx-v6.87H和最新的stc-isp-15xx-v6.92G都有“在程序区的结束处添加重要测试参数”的选项,都可以把内部参考电压写入到rom区0x1ff7,也可以写到ram 区0xef , 通过一个显示 程序验证,以及以前产品都已经使用。
因为新的STC8H8K64U的参考电压等参数是在CHIPID寄存器里面读取:
0xef地址被特殊功能寄存器占用了吗? 您好,先谢谢了! 看了一下最新的STC8H及USB系列用户手册有关部分,STC8H-20231110.pdf,在程序区的结束处添加重要测试参数没有了,里面的参数出厂就写好了,只能读,不能写。各种芯片唯一ID和存放内部参考电压的地址没有变。
根据使用手册上编程
int *BGV;
main()
{
BGV=(int idata *)0xef ;//STC8H1K08 芯片的 BGV存放地址RAM 区是0xef-0xf0
或BGV=(int code *)0xfdf7 ;//STC8H1K08 芯片的 BGV存放地址ROM 区是0xfdf7-0xfdf8
然后调用显示程序模块在LCD上显示BGV值(这个是已经成熟的软件模块一直在用),并使用分别用老ISP软件stc-isp-15xx-v6.87H ,和最新的stc-isp-15xx-v6.92G ISP程序下载 软件但都没有1188的值,说明读出不对。
}
自己的编程
#define Vbg_ADDR_ROM 0xFDF7;
unsigned char code *cptr_ID_ROM; //
unsigned int code *cptr_Vbg_ROM; //int 16bits ,two bytes
Main()
{
cptr_Vbg_ROM=Vbg_ADDR_ROM; // fdf7
Vbg=*cptr_Vbg_ROM; //
然后调用显示程序模块在LCD上显示BGV值(这个是已经成熟的软件模块一直在用),首先使用老ISP软件stc-isp-15xx-v6.87H,勾选“在程序区的结束处添加重要测试参数”的选项 ,可以显示出1188的值,如果没有勾选该选项就不对,说明在fdf7h位置是写了内部参考电压1188的,和只读不能写矛盾。
然后用最新的stc-isp-15xx-v6.92G ISP程序重新下载程序 显示的不是1188的值,难道最新的stc-isp-15xx-v6.92G ISP程序会改写已经写进去的内部参考电压 。如果一开始就用stc-isp-15xx-v6.92G 下载程序也不对。
资料里说stc8h8k64u有A,B版,我的芯片尾号16QD,厂方说是D版的,现在都是这样的,已经不分A,B版了。所以芯片没有问题。
}
关于0xef地址被特殊功能寄存器占用的情况,在头文件里找到sfr AUXINTIF =0xef;把它删除后结果一样。 使用CHIPID里的内部参考电压地址0xFDE7
并使用用户手册里的命令
#defineCPUIDBASE0xfde0
#defineVREF_ADDR (*(unsigned int volatile xdata *)(CPUIDBASE + 0x07))
显示VREF_ADDR
也不行
问题解决,主要没有加入语句P_SW2= 0x80; 自STC8H8K64U 固件版本 V7.4.4U之后 BGV参数就只能从CHIPID中读取,且ROM区 和 RAM区均不写入,但是软件上是从哪个版本取消的那就不太清楚了
还有一件事,之前保存到RAM区 和 SFR寄存器是无关的,,,
页:
[1]
2