508|0

43

帖子

0

TA的资源

一粒金砂(中级)

[B-G431B-ESC1评测] 七,板载旋钮ADC采样 [复制链接]

本帖最后由 dvacos 于 2024-9-6 20:17 编辑
在论坛里看见有的小伙伴使用B-G431B-ESC1开发板的ADC采样旋钮的电压一直都是0V,于是我挑战一下。
 
一 、硬件确认
 
200813wsf1sxs36a0lxstt.png
 
3D PCB 确认引脚
200813oee17wbgi71twgwa.png
200813bgulsnafu33sg64c.png
经过万用表测量,确认电压会随着旋钮的变化而变化,由0V-3.3V之间变化。
 
二 、软件初始化
 
Cube Mx配置
 
配置PB12 为ADC,默认分配为ADC1 11通道
200813hgkaeioctq0qyo4j.png
 
ADC只有一根线,所以配置为单端
200813otp2gcxp6kyzu6k6.png
 
ADC配置
200813voorosh9bphzhi3v.png
 
以上Cube Mx配置ADC初始化完毕
 
代码配置
由于初始化的时候选择的是软件触发,所以需要添加一些代码,才能开始采样。开始采样与获取采样值API如下
HAL_ADC_Start(&hadc1);
HAL_ADC_GetValue(&hadc1);
 
三、 实验
121223.gif  
 
四 、完整ADC代码
/**
  * [url=home.php?mod=space&uid=159083]@brief[/url] ADC1 Initialization Function
  * @param None
  * @retval None
  */
static void MX_ADC1_Init(void)
{

  /* USER CODE BEGIN ADC1_Init 0 */

  /* USER CODE END ADC1_Init 0 */

  ADC_MultiModeTypeDef multimode = {0};
  ADC_ChannelConfTypeDef sConfig = {0};

  /* USER CODE BEGIN ADC1_Init 1 */

  /* USER CODE END ADC1_Init 1 */

  /** Common config
  */
  hadc1.Instance = ADC1;
  hadc1.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4;
  hadc1.Init.Resolution = ADC_RESOLUTION_12B;
  hadc1.Init.DataAlign = ADC_DATAALIGN_LEFT;
  hadc1.Init.GainCompensation = 0;
  hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE;
  hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV;
  hadc1.Init.LowPowerAutoWait = DISABLE;
  hadc1.Init.ContinuousConvMode = DISABLE;
  hadc1.Init.NbrOfConversion = 1;
  hadc1.Init.DiscontinuousConvMode = DISABLE;
  hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;
  hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
  hadc1.Init.DMAContinuousRequests = DISABLE;
  hadc1.Init.Overrun = ADC_OVR_DATA_PRESERVED;
  hadc1.Init.OversamplingMode = DISABLE;
  if (HAL_ADC_Init(&hadc1) != HAL_OK)
  {
    Error_Handler();
  }

  /** Configure the ADC multi-mode
  */
  multimode.Mode = ADC_MODE_INDEPENDENT;
  if (HAL_ADCEx_MultiModeConfigChannel(&hadc1, &multimode) != HAL_OK)
  {
    Error_Handler();
  }

  /** Configure Regular Channel
  */
  sConfig.Channel = ADC_CHANNEL_11;
  sConfig.Rank = ADC_REGULAR_RANK_1;
  sConfig.SamplingTime = ADC_SAMPLETIME_640CYCLES_5;
  sConfig.SingleDiff = ADC_SINGLE_ENDED;
  sConfig.OffsetNumber = ADC_OFFSET_NONE;
  sConfig.Offset = 0;
  if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
  {
    Error_Handler();
  }
  /* USER CODE BEGIN ADC1_Init 2 */

  /* USER CODE END ADC1_Init 2 */

}




int main(void)
{

  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_ADC1_Init();
  MX_USART2_UART_Init();

  /* Initialize interrupts */
  /* USER CODE BEGIN 2 */

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
        char printf_data[20];
		uint16_t get_adc=0;
		double voltage=0;
		
		HAL_ADC_Start(&hadc1);
		get_adc=HAL_ADC_GetValue(&hadc1);
		voltage = get_adc*(3.3/65535);
      
		sprintf(printf_data,"Get_Adc:%d  Voltage:%.2f \r\n",get_adc,voltage);
		HAL_UART_Transmit(&huart2,(uint8_t *)printf_data,strlen(printf_data),50);
		HAL_Delay(100);
      
      
  }
  /* USER CODE END 3 */
}

 


回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
推荐帖子
《DSP集成开发环境CCS开发指南》下载

《DSP集成开发环境CCS开发指南》下载

实时多任务系统内核分析 & OSII_CHM

实时多任务系统内核分析 和 OSII的帮助文件,尤其帮助文件很详细 能当教材看了 :hug:

【EEWORLD模块整理】+步进电机

再来一个步进电机的驱动,我用的是这里的那个142驱动的。

beaglebone 编译UBOOT篇

2.1编译Uboot: 参考sitara-linuxsdk-sdg-05.03.02.00.pdf文档,第89页:Building MLO and u-boot 修改u-boot-2011.09-psp04 ...

各种开发板资料汇总

本帖最后由 dcexpert 于 2015-11-10 23:37 编辑 搜集各种开发板的官方资源,方便查找。(本帖将持续更新,也欢迎大家推荐资源 ...

晒货(1) - 各种开发板

本帖最后由 dcexpert 于 2019-11-9 21:08 编辑 今天周末,太阳出来了,天气很好,正适合晒板。 部分不常用的板子,已 ...

STM32开发实战:LabVIEW卷

作为学习LabVIEW与32位微处理器STM32的门级教材,本书从LabVIEWforARM嵌式软件架构手,在分析STM32芯片内部每个功能模块的基础上 ...

这种光电传感器有人能搞吗?

需求:示波器光电信号探头 利用OPT101或者其他光电传感器做一个示波器上的光信号探头,模拟量输出,测试LCD闪烁频率。 676 ...

1.01K换成1.02K或1K会影响多少?

今天供应商那边说有一颗物料没有了,【1.01K 1% 0603】的电阻,这个项目已经定型很久了,然后我看了一下这颗物料,原理图确实是 ...

【安信可BW16-Kit】RGB流水彩灯

本帖最后由 dirty 于 2024-1-28 22:35 编辑 本篇讲述在SDK做应用,实现流水彩灯。 一.硬件原理 开发板RGB灯连接PA12、P ...

关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表