找回密码
 立即注册
查看: 45|回复: 9

移植屠龙刀ADC的程序出错。

[复制链接]
  • 打卡等级:偶尔看看I
  • 打卡总天数:10
  • 最近打卡:2025-04-27 17:49:08
已绑定手机

5

主题

15

回帖

131

积分

注册会员

积分
131
发表于 4 天前 | 显示全部楼层 |阅读模式
用32G12K128设计一块板子,使用了屠龙刀的  08-16路ADC轮询-每路16次ADC转换取中间8次求平均值-串口1返回结果,串口打印所有ADC通道的值为4095.请问问题所在。板子的MCU是3.3V供电,曾用5V给VREF管脚供电,发现错误后,把VREF管脚改接了3.3V。
截图202504271748494230.jpg
回复

使用道具 举报 送花

3

主题

1160

回帖

1031

积分

等待验证会员

积分
1031
发表于 4 天前 | 显示全部楼层
在分析您所描述的问题时,我们可以从以下几个方面进行深入探讨:

1. 电源电压与参考电压(VREF)的匹配
您提到MCU的供电电压为3.3V,并且最初错误地将VREF引脚接到了5V,随后更正为3.3V。这一步骤是正确的,因为ADC的参考电压(VREF)应当与MCU的供电电压相匹配,以确保ADC转换的准确性。如果VREF高于MCU的供电电压,可能会导致ADC转换结果不准确或损坏ADC模块。

2. ADC转换结果的异常
您提到所有ADC通道的转换结果均为4095,这通常表示ADC模块检测到了满量程的输入电压。在12位ADC中,4095对应于最大数字值,意味着ADC输入电压等于或超过了VREF。可能的原因包括:
输入信号问题:检查ADC输入引脚是否确实接入了有效的模拟信号。如果输入引脚悬空或接入了错误的信号,可能会导致ADC检测到高电平。
硬件连接问题:确保ADC输入引脚与外部电路的连接正确,没有短路或断路。
ADC配置问题:检查ADC的配置寄存器,确保ADC模块正确初始化,并且采样时间、通道选择等参数设置正确。

3. 轮询与平均值计算
您提到使用了08-16路ADC轮询,并且每路进行16次ADC转换,取中间8次求平均值。这一方法可以有效减少噪声对ADC结果的影响。然而,如果ADC转换结果本身存在问题(如始终为4095),那么平均值计算也无法纠正这一问题。因此,首先需要解决ADC转换结果异常的问题。

4. 串口通信
您提到通过串口1返回ADC结果,并且串口打印所有ADC通道的值为4095。这表明串口通信功能正常,但ADC转换结果存在问题。建议在调试过程中,逐步检查ADC转换的每个环节,包括硬件连接、ADC配置、信号输入等。

5. 调试建议
为了进一步诊断问题,您可以采取以下步骤:
检查硬件连接:使用万用表测量ADC输入引脚的电压,确保其与预期值一致。
简化测试:尝试仅对一路ADC进行测试,排除多路轮询可能带来的复杂性。
逐步调试:从最基本的ADC配置开始,逐步增加功能,观察每一步的结果。
参考手册:仔细阅读MCU的数据手册,确保所有配置参数符合要求。

6. 结论
综上所述,您所遇到的问题可能源于ADC输入信号的异常或ADC配置的不正确。建议从硬件连接和ADC配置两个方面入手,逐步排查问题。通过仔细的调试和验证,您应该能够找到问题的根源并解决它。

希望以上分析对您有所帮助。如有进一步的问题,欢迎继续交流。

[本文内容由国芯人工智能辅助生成,仅供参考]
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:162
  • 最近打卡:2025-05-01 06:56:44
已绑定手机

56

主题

1319

回帖

2938

积分

荣誉版主

无情的代码机器

积分
2938
发表于 4 天前 | 显示全部楼层
是例程这样还是移植后的程序这样全4095.


另外上传原理图看看

还有没有别的板子,这个是不是VREF 5V误接已经玩废了

截图202504271754314451.jpg

三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:50
  • 最近打卡:2025-04-30 22:59:03

73

主题

5882

回帖

1万

积分

超级版主

积分
12073
发表于 4 天前 | 显示全部楼层
确定AVREF接了3.3V?
直接下载例子的HEX文件测试看看。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:10
  • 最近打卡:2025-04-27 17:49:08
已绑定手机

5

主题

15

回帖

131

积分

注册会员

积分
131
发表于 4 天前 | 显示全部楼层
梁*** 发表于 2025-4-27 18:03
确定AVREF接了3.3V?
直接下载例子的HEX文件测试看看。

原来的hex文件不行了,我把USB函数删了,把串口打印放在了P3.0、P3.1上,其他的没有改动。BGV怎么也是4095,我在用USB下载程序时,log上还显示是1.189V。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:10
  • 最近打卡:2025-04-27 17:49:08
已绑定手机

5

主题

15

回帖

131

积分

注册会员

积分
131
发表于 4 天前 | 显示全部楼层
erci*** 发表于 2025-4-27 17:54
是例程这样还是移植后的程序这样全4095.

例程没有问题,移植后出的问题。

点评

那就上传修改后的程序看看  详情 回复 发表于 4 天前
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:162
  • 最近打卡:2025-05-01 06:56:44
已绑定手机

56

主题

1319

回帖

2938

积分

荣誉版主

无情的代码机器

积分
2938
发表于 4 天前 | 显示全部楼层
Robi*** 发表于 2025-4-27 21:22
例程没有问题,移植后出的问题。

那就上传修改后的程序看看
三天不学习,赶不上刘少奇~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:10
  • 最近打卡:2025-04-27 17:49:08
已绑定手机

5

主题

15

回帖

131

积分

注册会员

积分
131
发表于 4 天前 | 显示全部楼层
下载程序时的log,至少说明BGV通道是好的。 截图202504272221228141.jpg

ADC轮询.rar

48.58 KB, 下载次数: 1

点评

VCC是3.3V,VREF接过5V,单片机大概率烧毁 因为任意脚电压都不能超过VCC、GND范围 BGV是存储在系统ISP区的,是直接读取FLASH,不是实时测量电压,读出正确的值也不能代表单片机其他硬件是完好的  详情 回复 发表于 4 天前
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-01 07:10:25
已绑定手机

76

主题

4833

回帖

8343

积分

超级版主

DebugLab

积分
8343
发表于 4 天前 | 显示全部楼层
Robi*** 发表于 2025-4-27 22:22
下载程序时的log,至少说明BGV通道是好的。

VCC是3.3V,VREF接过5V,单片机大概率烧毁
因为任意脚电压都不能超过VCC、GND范围
BGV是存储在系统ISP区的,是直接读取FLASH,读出是固定值,不是实时测量电压,读出正确的值也不能代表单片机其他硬件是完好的
具体分析需要上传原理图和程序
DebugLab
回复 支持 反对

使用道具 举报 送花

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

39

主题

2006

回帖

6841

积分

论坛元老

积分
6841
发表于 3 天前 | 显示全部楼层
我直接烧录8楼附件里面的hex文件到屠龙刀核心板上测试ADC输出数据是正常的。
截图202504281000381767.jpg

程序应该没有问题,还是排查一下板子,更换芯片试试。
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-1 22:16 , Processed in 0.125916 second(s), 110 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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