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

关于8H2K08U的BGV读取值问题

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2024-05-02 21:48:56

6

主题

48

回帖

614

积分

高级会员

积分
614
发表于 2024-9-10 12:01:21 | 显示全部楼层 |阅读模式
本帖最后由 DebugLab 于 2024-9-10 13:30 编辑

各位大佬, 我在使用8H2K08U调试ADC想用内部1.19V 基准,按照范例程序代码读取CHIPID的1.19V实际值(BGV=1193mv)和 ISP 程序下载时显示的内部参考电压值(1189 mV )有差异.
请问以下代码是否有问题呢,谢谢!

#BGV读取代码

=======================
.
.
.

#define CPUIDBASE   0xfde0
#define VREF_ADDR   (*(unsigned int volatile xdata *)(CPUIDBASE + 0x07))

.
.
.
printf("BGV=%01u,mv",(u16)((VREF_ADDR >>8) +VREF_ADDR));        //串口发送BGV值

.

#串口助手返回值
============================================

.
.
.
[11:45:28.205]接收:BGV=1193,mv
[11:45:29.199]接收:BGV=1193,mv
[11:45:30.209]接收:BGV=1193,mv
[11:45:31.208]接收:BGV=1193,mv
[11:45:32.212]接收:BGV=1193,mv
[11:45:33.211]接收:BGV=1193,mv
[11:45:34.210]接收:BGV=1193,mv


#ISP下载返回值
==============================================



正在擦除目标区域 ... 完成 !                [0.235"]
正在下载用户代码 ... 完成 !                [0.641"]
正在设置硬件选项 ... 完成 !                [0.015"]

更新后的硬件选项为:
  . 系统ISP工作频率: 24.000MHz
  . 内部IRC振荡器的频率: 24.000MHz
  . 掉电唤醒定时器的频率: 35.375KHz
  . 振荡器放大增益使能
  . P3.2和P3.3与下次下载无关
  . 上电复位时增加额外的复位延时
  . 复位引脚仍为复位脚
  . P5.4口不切换为P1.2
  . 不交换P1.0口和P1.1位置
  . 检测到低压时不复位,可产生低压中断
  . 低压检测门槛电压 : 2.00 V
  . 上电复位时,硬件不启动内部看门狗
  . 上电自动启动内部看门狗时的预分频数为 : 256
  . 空闲状态时看门狗定时器停止计数
  . 下次下载用户程序时,将用户EEPROM区一并擦除
  . 下次下载用户程序时,没有相关的端口控制485
  . 下次下载时不需要校验下载口令
  . 未使能芯片的仿真功能
  . 内部参考电压: 1189 mV (参考范围: 1100~1300mV)
芯片出厂序列号 : F894C9B307B0C7

  单片机型号: STC8H2K08U
  软件协议, V3.0: 7.4.7U

  . 用户设定频率: 24.000MHz
  . 调节后的频率: 24.000MHz ( 主时钟分频系数 = 1; )
  . 频率调节误差: 0.000%

操作成功 !(2024-09-10 11:45:21)




回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:239
  • 最近打卡:2025-05-02 03:42:37

22

主题

283

回帖

905

积分

高级会员

积分
905
发表于 2024-9-10 13:05:43 | 显示全部楼层
printf("BGV=%01u,mv",(u16)(VREF_ADDR));
REMOVEUNUSED
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:239
  • 最近打卡:2025-05-02 03:42:37

22

主题

283

回帖

905

积分

高级会员

积分
905
发表于 2024-9-10 13:10:59 | 显示全部楼层
4 = 1189 >> 8;
1193 = 4 + 1189;
REMOVEUNUSED
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2024-05-02 21:48:56

6

主题

48

回帖

614

积分

高级会员

积分
614
发表于 2024-9-10 13:46:24 | 显示全部楼层
邮*** 发表于 2024-9-10 13:10
4 = 1189 >> 8;
1193 = 4 + 1189;

谢谢大佬! 还真的是这样. 也就是说定义VREF_ADDR直接是16位无符号类型数据,不用高8位和低8位相加,我是看到范例都是高低8位分开处理以为需要合并计算再使用.
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:422
  • 最近打卡:2025-05-01 09:54:52
已绑定手机

19

主题

3190

回帖

4866

积分

论坛元老

积分
4866
发表于 2024-9-10 20:14:30 来自手机 | 显示全部楼层
定义的时候是unsigned int是16位,所以打印的时候也不用强制类型转换吧。更不用类似把unsigned char累加吧。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2024-05-02 21:48:56

6

主题

48

回帖

614

积分

高级会员

积分
614
发表于 2024-9-10 22:34:31 | 显示全部楼层
so*** 发表于 2024-9-10 20:14
定义的时候是unsigned int是16位,所以打印的时候也不用强制类型转换吧。更不用类似把unsigned char累加吧 ...

是的,可以不用强制转换.我是还有其他类型数据需要用printf打印所以就统一加了强制类型转换.
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 06:44 , Processed in 0.287052 second(s), 77 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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