找回密码
 立即注册
楼主: jwd

请问STC8A8K64D4的内部1.19V的地址是多少?

[复制链接]
  • 打卡等级:常住居民III
  • 打卡总天数:142
  • 最近打卡:2025-04-27 09:42:20

11

主题

157

回帖

1780

积分

版主

积分
1780
发表于 2023-3-29 14:32:30 | 显示全部楼层
jw*** 发表于 2023-3-29 13:40
请问,我上面用chipid读的程序有什么问题吗?

对照范例看下呢




回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:519
  • 最近打卡:2025-05-02 07:55:51
已绑定手机

46

主题

1694

回帖

2544

积分

金牌会员

积分
2544
发表于 2023-3-30 09:17:20 | 显示全部楼层

你好,我测试了,地址是0xfdf7值才对,地址是0xfef7值不对,STC-ISP例程里面地址是对的
QQ图片20230330091646.png
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6843

积分

论坛元老

积分
6843
发表于 2023-3-30 09:19:16 | 显示全部楼层
STC8A8K64D4内部参数从多个位置都能读取,以下是保存在Flash空间的地址,
可以通过 BGV = (int code *)0xfdf7; 的方式指向Flash区域进行读取。
1.png

此外还可以从CHIPID寄存器里读取(推荐)
CHIPID是扩展寄存器,从这里读取应该使用访问扩展寄存器的方法,而不能再用读取Flash空间的方法
  1. #define USBCHIPID
  2. #define CPUIDBASE   0xfde0
  3. #define VREF_ADDR   (*(unsigned int volatile xdata *)(CPUIDBASE + 0x07))
复制代码

2.png
使用不同的方法应参考对应的例程,不能单纯只修改一下地址。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:519
  • 最近打卡:2025-05-02 07:55:51
已绑定手机

46

主题

1694

回帖

2544

积分

金牌会员

积分
2544
发表于 2023-3-30 10:40:40 | 显示全部楼层
乘风*** 发表于 2023-3-30 09:19
STC8A8K64D4内部参数从多个位置都能读取,以下是保存在Flash空间的地址,
可以通过 BGV = (int code *)0xfd ...

我应该找到原因了,谢谢!应该是缺少P_SW2=0x80;这条语句导致的,不过我还有2点疑问,1、为什么地址和直接ROM读取的地址不同?2、既然CHIPID是只读的,为什么还要用volatile修饰 ?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:519
  • 最近打卡:2025-05-02 07:55:51
已绑定手机

46

主题

1694

回帖

2544

积分

金牌会员

积分
2544
发表于 2023-3-30 11:11:38 | 显示全部楼层

谢谢,我找到问题了,程序缺少PSW2=0x80;的语句
回复 支持 反对

使用道具 举报 送花

2

主题

4

回帖

46

积分

新手上路

积分
46
发表于 2024-6-24 19:01:11 | 显示全部楼层
本帖最后由 山顶任风吹 于 2024-6-24 19:22 编辑

请问,
1. STC8H3K64S2是不是没有含CHIPID寄存器,所以也就无法从CHIPID中读出内部1.19V参考电压?若有的话,按范例为啥读出来的数据显示的字符是 }},数据不对?             定义指针   #define VREF_ADDR   (*(unsigned int volatile xdata *)(0xfde7))
2. 用printf("CHIPID开始= %u\n",VREF_ADDR); 显示的字符是32125
3. 按范例从RAM中读取1.19V,无输出显示,用printf 打印,数据显示1185,应该是对的
4. 按范例从ROM中读取1.19V,无输出显示,用printf 打印,数据显示65535,应该是错的,

请各位大佬帮忙看看主函数哪里有错 谢谢

//#include <STC8Hxxx.h>
#include         <STC8H.h>
#include         <intrins.h>
#include         "uart1.h"
#include          <stdio.h>


#define fosc1 11059200
#define VREF_ADDR   (*(unsigned int volatile xdata *)(0xfde7))

int *BGVROM;                                                //ROM,RAM
int *BGVRAM;

sbit  LowBat_Lamp = P1^0;                //红色led,欠压报警灯
//sbit  Vcc_Lamp = P5^4;                 //绿色led,电源指示灯


/*************        本地函数声明        **************/
void    delay_ms(u16 ms);
void         Portmode();
/**********************************************/
void main(void)
{   
        u16 cnt =0;                                        //设置变量在主函数后
        
        Portmode();
        P1M0 = 0x05; P1M1 = 0x87;        //P1.0、1.2开漏, P1.1、1.7高阻ADC, p1.3~6准双向
        P5M0 = 0x10; P5M1 = 0x10;   //p5.4开漏        
        
        BGVROM = (int code*)0xfdf7;                                        //ROM 1.19V  STC8H3K64S2
        BGVRAM = (int idata*)0xef;                                        //RAM 1.19V  STC8H3K64S2
               
        EA = 1;
        ES = 1;
        P_SW2 |= 0x80;      //使能访问XFR
        
        Uart1_Init();
        while (1)
        {  
                Uart1_Send('R');                               //无读数    不正确
                Uart1_Send('O');
                Uart1_Send('M');
                Uart1_Send('=');
                Uart1_Send (*BGVROM >>8);         //ROM /RAM 读1.19V
                Uart1_Send (*BGVROM);               
                Uart1_Send('\r');
                Uart1_Send('\n');
               
                Uart1_Send('R');                          //无读数  不正确
                Uart1_Send('A');
                Uart1_Send('M');
                Uart1_Send('=');
                Uart1_Send (*BGVRAM >>8);      //ROM /RAM 读1.19V
                Uart1_Send (*BGVRAM);               
                Uart1_Send('\r');
                Uart1_Send('\n');
               
                Uart1_Send('H');
                Uart1_Send('A');
                Uart1_Send('P');
                Uart1_Send('P');
                Uart1_Send('Y');
                Uart1_Send('\r');
                Uart1_Send('\n');

               
                Uart1_SendString("我们就要飞啰\r\n");               

                printf("BGVROM开始= %u\n",*BGVROM);                //读数不正确     显示65535
                printf("BGVRAM开始= %u\n",*BGVRAM);       //读数正确         显示1185   

                Uart1_Send(VREF_ADDR>>8);                             //不正确        CHIPID 读数显示 }}
                Uart1_Send(VREF_ADDR);                              
                Uart1_Send('\r');
                Uart1_Send('\n');
                printf("CHIPID开始= %u\n",VREF_ADDR);             //不正确        CHIPID显示32125
               
                printf("计时开始= %u\n",cnt);                                                                        
                cnt++;if(cnt>1000) cnt=0;
               
                delay_ms(2000);
                LowBat_Lamp =~ LowBat_Lamp;               
        }
}

void Portmode()    //端口设置
{
        P1M0 = 0x00; P1M1 = 0x00;     
    P3M0 = 0X00; P3M1 = 0X00;
    P5M0 = 0x00; P5M1 = 0x00;
}

void  delay_ms(u16 ms)
{
     u16 i;
         do
         {
                 i =fosc1 / 10000;
                while(--i)        ;
     }while(--ms);
}

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2025-05-02 08:32:59

718

主题

1万

回帖

1万

积分

管理员

积分
15628
发表于 2024-6-24 19:48:30 | 显示全部楼层
STC8H3K64S2没有CHIPID寄存器
截图202406241944535461.jpg

截图202406241945189951.jpg


截图202406241945432166.jpg


截图202406241946487821.jpg


截图202406241947581362.jpg

回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 15:04 , Processed in 0.229236 second(s), 98 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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