PY32F003F18之ADC问题

news2024/12/25 12:20:12

普然单片机PY32F003F18的内部有一个LDO,其电压固定为1.2V。我在用官方程序测试时,若接上USB转串口的RX导线,向PC发送数据,读内部参考电压比较正确,但是,当接上USB转串口的TX导线时,发现读到内部电压变成了3.3V。见下图:

 断开USB转串口的TX导线,数据又恢复正常了。用万用表测试该导线电压,为5V。我连接上去,用万用表测试单片机电源引脚,电源引脚电压还是3.3V。但是用另外的3.3V的电压加到单片机引脚,不会对ADC转换产生影响。

难道这个芯片的ADC有问题吗?

测试程序:

/**
  ******************************************************************************
  * @file    main.c
  * @author  MCU Application Team
  * @Version V1.0.0
  * @Date    2020-10-19
  * @brief   main function
  ******************************************************************************
  */
/* Includes ------------------------------------------------------------------*/
#include "main.h"
/* Private variables ---------------------------------------------------------*/
ADC_HandleTypeDef hadc;
uint8_t adcValueflag;
uint32_t adc_value[6];
float  T_VCC;
/* Private function prototypes -----------------------------------------------*/
/* Private user code ---------------------------------------------------------*/
/* Private function prototypes -----------------------------------------------*/
void Error_Handler(void);
void ADC_Config(void);
/********************************************************************************************************
**函数信息 :void main(void)
**功能描述 :执行函数
**输入参数 :
**输出参数 :
**    备注 :
********************************************************************************************************/
int main(void)
{
//    uint8_t i;
  //初始化所有外设,flash接口,systick

  HAL_Init();                                 //初始化systick
  ADC_Config();                               //初始化ADC
  DEBUG_USART_Config();                       //UART初始化
  printf("test start..\r\n");
  while (1)
  {
		HAL_Delay(1000);
    HAL_ADC_Start(&hadc);                     //启动ADC
    HAL_ADC_PollForConversion(&hadc, 1000000); //等待ADC转换完成
    adc_value[0] = HAL_ADC_GetValue(&hadc);   //获取ADC值
    T_VCC = (4095 * 1.2) / adc_value[0];      //计算VCC电压
    printf("adc_value[0]=0x%04X V\r\n", adc_value[0]);
		printf("vcc:%f V\r\n", T_VCC);
  }
}
/********************************************************************************************************
**函数信息 :void ADCConfig(void)
**功能描述 :ADC初始化
**输入参数 :
**输出参数 :
**    备注 :
********************************************************************************************************/
void ADC_Config(void)
{

  ADC_ChannelConfTypeDef sConfig = {0};
  /*ADC校准*/
	__HAL_RCC_ADC_FORCE_RESET();
  __HAL_RCC_ADC_RELEASE_RESET();
	__HAL_RCC_ADC_CLK_ENABLE();

  /*ADC校准*/
  hadc.Instance = ADC1;

  if (HAL_ADCEx_Calibration_Start(&hadc) != HAL_OK)                  //AD校准
  {
    Error_Handler();
  }    
  //=============
  //ADC配置
  //=============
  hadc.Instance = ADC1;
  hadc.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV2;              //设置ADC时钟
  hadc.Init.Resolution = ADC_RESOLUTION_12B;                        //设置ADC采样位数
  hadc.Init.DataAlign = ADC_DATAALIGN_RIGHT;                        //设置ADC转换结构右对齐
  hadc.Init.ScanConvMode = ADC_SCAN_DIRECTION_FORWARD;              //设置ADC转换方向, 向上或者向下
  hadc.Init.EOCSelection = ADC_EOC_SINGLE_CONV;                     //ADC_EOC_SINGLE_CONV:单次采样 ; ADC_EOC_SEQ_CONV:序列采样
  hadc.Init.LowPowerAutoWait = ENABLE;                              //ENABLE=读取ADC值后,开始下一次转换 ; DISABLE=直接转换
  hadc.Init.ContinuousConvMode = DISABLE;                            //ENABLE=连续模式, DISABLE=单次模式
  hadc.Init.DiscontinuousConvMode = DISABLE;                        //非连续转换
  hadc.Init.ExternalTrigConv = ADC_SOFTWARE_START;                  //软件使能
  hadc.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;   //外部触发方式
  hadc.Init.DMAContinuousRequests = DISABLE;                        //禁止DMA
  hadc.Init.Overrun = ADC_OVR_DATA_OVERWRITTEN;                     //过载模式,0=保留旧值,1=新值覆盖旧值
  hadc.Init.SamplingTimeCommon = ADC_SAMPLETIME_41CYCLES_5;         //设置采样周期41.5个ADC时钟
  if (HAL_ADC_Init(&hadc) != HAL_OK)                                //ADC初始化
  {
    Error_Handler();
  }

  sConfig.Channel = ADC_CHANNEL_VREFINT;                            //设置采样通道
  sConfig.Rank = ADC_RANK_CHANNEL_NUMBER;                           //设置是否排行, 想设置单通道采样,需配置ADC_RANK_NONE
  if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)             //配置ADC通道
  {
    Error_Handler();
  }
}
/********************************************************************************************************
**函数信息 :Error_Handler(void)
**功能描述 :错误执行函数
**输入参数 :
**输出参数 :
**    备注 :
********************************************************************************************************/
void Error_Handler(void)
{
  while (1)
  {
  }
}

#ifdef  USE_FULL_ASSERT
/**
  * @brief  Reports the name of the source file and the source line number
  *         where the assert_param error has occurred.
  * @param  file: pointer to the source file name
  * @param  line: assert_param error line source number
  * @retval None
  */
void assert_failed(uint8_t *file, uint32_t line)
{
  /* User can add his own implementation to report the file name and line number,
     tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
}
#endif /* USE_FULL_ASSERT */


/* Private function -------------------------------------------------------*/

 

/********************************************************************************************************
**函数信息 :void HAL_ADC_MspInit(ADC_HandleTypeDef *hadc)
**功能描述 :初始化ADC相关MSP
**输入参数 :
**输出参数 :
**    备注 :
********************************************************************************************************/
void HAL_ADC_MspInit(ADC_HandleTypeDef *hadc)
{
  /* ADC1 Periph clock enable */
  __HAL_RCC_GPIOA_CLK_ENABLE();
  __HAL_RCC_ADC_CLK_ENABLE();
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1031219.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【从0学习Solidity】15. 异常

【从0学习Solidity】15. 异常 博主简介:不写代码没饭吃,一名全栈领域的创作者,专注于研究互联网产品的解决方案和技术。熟悉云原生、微服务架构,分享一些项目实战经验以及前沿技术的见解。关注我们的主页,探索全栈开发…

ruoyi框架开发LOT项目

背景 最近闲着就用ruoyi的框架写了一个LOT项目,个人觉得效果还可以。 1、首页 2、企业管理 3、用户管理 4、设备列表 5、设备列表标签展示 6、设备详情页面 7、大屏展示界面 8、结束 -----华丽的分割线,以下是凑字数,大家不用花时间看&…

2023年中国研究生数学建模竞赛D题解题思路

为了更好的帮助大家第一天选题,这里首先为大家带来D题解题思路,分析对应赛题之后做题阶段可能会遇到的各种难点。 稍后会带来D题的详细解析思路,以及相关的其他版本解题思路 成品论文等资料。 赛题难度评估:A、B>C>E、F&g…

分享demo:Vue3 使用element plus + vue-i18实现国际化

👇面是demo展示 PS:点赞关注私信获取demo

任务计划不执行bat脚本排查思路

问题: 我有一个任务计划,执行的是一个bat脚本,显示也已经操作成功了,但是没任何变化 排查: 1、把cmd文件拖入到cmd中执行查看 发现执行的时候是乱码的,肯定就是编码问题引起,在cmd执行前,提前切…

ruoyi-nbcio项目增加右上角的消息提醒

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 因为以后流程的通知需要提醒&#xff0c;所以右上角需要增加消息提醒。 1、增加右上角的按钮与信息 <div class"right-menu"><templat…

C : DS顺序表--合并操作

Description 建立顺序表的类&#xff0c;属性包括&#xff1a;数组、实际长度、最大长度&#xff08;设定为1000&#xff09; 已知两个递增序列&#xff0c;把两个序列的数据合并到顺序表中&#xff0c;并使得顺序表的数据递增有序 Input 第1行先输入n表示有n个数据&#x…

仿网易云-360度混响

一直在用网易云音乐听歌&#xff0c;感觉他的这个动效还是挺不错的&#xff0c;最近也是想试试canvas绘图相关的。尝试了几次之后感觉效果还不错&#xff0c;不过距离网易云的还是有些差距。 本期准备仿照制作如下效果&#xff1a; 偷偷使用最近比较流行的罗刹海市的音乐来展…

【EasyExcel】excel表格的导入和导出

【EasyExcel】excel表格的导入和导出 【一】EasyExcel简介【二】EasyExcel使用【1】EasyExcel相关依赖【2】写Excel&#xff08;1&#xff09;最简单的写(方式一)&#xff08;2&#xff09;最简单的写(方式二)&#xff08;3&#xff09;排除模型中的属性字段&#xff08;4&…

服务器数据恢复-LINUX操作系统下各文件系统误删除/格式化数据的恢复方案

服务器数据恢复环境&#xff1a; 基于EXT2/EXT3/EXT4/Reiserfs/Xfs文件系统的Linux操作系统。 服务器故障&#xff1a; LINUX操作系统下误删除/格式化数据。 服务器数据恢复过程&#xff1a; 1、首先会检测服务器是否存在硬件故障&#xff0c;如果检测出硬件故障&#xff0c;交…

ARM64 SMP多核启动详解2(psci)

1. 支持psci情况 上面说了pin-table的多核启动方式&#xff0c;看似很繁琐&#xff0c;实际上并不复杂&#xff0c;无外乎主处理器唤醒从处理器到指定地址上去执行指令&#xff0c;说他简单是相对于功能来说的&#xff0c;因为他只是实现了从处理器的启动&#xff0c;仅此而已…

智慧公厕预见幸福生活、美好未来

随着城市化的加速发展&#xff0c;公共厕所作为城市基础设施的重要组成部分&#xff0c;对于提升城市形象和居民生活质量起着至关重要的作用。智慧公厕作为智慧城市建设的一部分&#xff0c;正逐渐成为城市管理的新宠儿&#xff0c;能有效助力网络强国、数字中国、智慧社会的建…

第九章 常用服务器的搭建

第九章 常用服务器的搭建 1.配置FTP服务器 1.1.FTP简介 ​ FTP&#xff08;File Transfer Protocol&#xff0c;文件传送协议&#xff09;是TCP/IP网络上两台计算机间传送文件的协议&#xff0c;FTP是在TCP/IP网络和Internet上最早使用的协议之一&#xff0c;它属于网络协议…

形式化验证方法研究综述

摘要&#xff1a;形式化验证是证明软件、硬件或系统正确性的一种方法&#xff0c;近年来受到了越来越多的关注。 本文对形式化验证的研究进行了综述。首先介绍了形式化验证的基本概念&#xff0c;然后重点介绍了形式化验证的三种技术&#xff0c;包括模型检测、定理证明和等价性…

Redis中是如何实现分布式锁的?

分布式锁常见的三种实现方式&#xff1a; 数据库乐观锁&#xff1b; 基于Redis的分布式锁&#xff1b; 基于ZooKeeper的分布式锁。 本次面试考点是&#xff0c;你对Redis使用熟悉吗&#xff1f;Redis中是如何实现分布式锁的。 要点 Redis要实现分布式锁&#xff0c;以下条件应…

JS基础语法

JS是一门面向对象的编程语言&#xff0c;运行在客户端的脚本语言&#xff0c;可以基于Node.js进行服务器端编程 JS的作用: 表单动态校验网页特效服务端开发 浏览器执行JS&#xff1a; 浏览器分为两部分&#xff1a;渲染引擎和JS引擎 渲染引擎用来解析HTML和CSS&#xff0c;…

2023中国智能产业高峰论坛丨文档图像大模型的思考与探索

# 前言 随着人工智能技术的不断发展&#xff0c;尤其是深度学习技术的广泛应用&#xff0c;多模态数据处理和大模型训练已成为当下研究的热点之一&#xff0c;这些技术也为文档图像智能处理和分析领域带来了新的发展机遇。 近期&#xff0c;2023第十二届中国智能产业高峰论坛…

打印由数字组成的金字塔图案——python

1222 33333 4444444 555555555打印由数字组成的金字塔图案。但n9时&#xff0c;如下图所示。 输入格式: 输入一个整数n&#xff08;1<A<9&#xff09;。 输出格式: 输出由数字组成的金字塔图案。 输入样例: 在这里给出一组输入。例如&#xff1a; 5输出样例: 在这…

软件设计模式系列之十二——外观模式

在软件设计中&#xff0c;经常会遇到需要与复杂子系统进行交互的情况。为了简化客户端与子系统之间的交互&#xff0c;提高系统的可维护性和可用性&#xff0c;外观模式应运而生。外观模式&#xff08;Facade Pattern&#xff09;是一种结构型设计模式&#xff0c;它提供一个统…

.NET超简单轻量级的HTTP请求组件Flurl

简介 Flurl是一个用于构建基于HTTP请求的C#代码的库。它的主要目的是简化和优雅地处理网络请求&#xff08;只用很少的代码完成请求&#xff09;。Flurl提供了一种简单的方法来构建GET、POST、PUT等类型的请求&#xff0c;以及处理响应和异常。它还提供了一些高级功能&#xf…