news 2026/1/10 14:50:57

[STM32C0] 【STM32C092RC 测评】ADC

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
[STM32C0] 【STM32C092RC 测评】ADC

了解一下ADC先对ADC进行一定的认识分辨率,读出的数据的长度,如8位就是最大值为255的意思,即范围[0,255],12位就是最大值为4096,即范围[0,4096]

通道,ADC输入引脚,通常一个ADC控制器控制多个通道,如果需要多通道的话,就得进行每个通道扫描了。

ADC DMA功能,DMA是内存到内存或内存到存储的直接映射,数据不用经过单片机处理器而直接由硬件进行数据的传递。方便直接将读取的ADC值放到内存变量中。

ADC芯片通常有正参考电压和负参考电压,通常正参考电压连接到VCC,负参考电压连接到GND。


ADC 转换方式与工作模式

转换方式

单次转换:每次触发仅转换一个通道,需手动或通过中断/DMA重新启动。

连续转换:自动重复转换选定通道,适用于实时监测。

扫描模式:自动按顺序转换多个通道,适合多传感器系统。

工作模式

阻塞模式(查询模式):CPU轮询检查转换完成标志,效率较低但简单。

中断模式:转换完成后触发中断,CPU处理数据,平衡实时性与资源占用。

DMA模式:数据直接传输到内存,最节省CPU资源。

ADC 主要特性

高性能

可配置 12 位、10 位、8位或6 位分辨率

ADC 转换时间:12 位分辨率对应的转换时间为0.4us(2.5 Msps),若降低分辨率,可进一步缩短转换时间。

自校准

可编程采样时间

内置数据一致性,可确保数据对齐

支持 DMA低功耗

应用可降低 PCLK 频率从而以低功耗运行,同时仍可保持最优的 ADC 性能。例如,无论 PCLK 的频率如何,都会保持0.4us的转换时间

等待模式:防止 ADC 在低频PCLK应用中溢出

自动关闭模式:ADC 会自动断电,但正在进行转换时除外。这可大幅降低 ADC的功耗。

模拟输入通道

最多 19个外部模拟输入

1个用于内部温度传感器 (VSENSE)的通道

- 1个用于内部参考电压(VREFINT) 的通道

2 个用于监视内部电源(VDDAVSSA) 的通道可通过以下方式启动转换过程:

通过软件

通过极性可配置的硬件触发器(定时器事件或 GPIO 输入事件)转换模式

可转换单条通道,也可扫描一系列通道

单次模式会在每次触发时对选定的输入执行一次转换

连续模式可连续转换选定的输入

不连续模式

在采样结束、转换结束、序列转换结束以及发生模拟看门狗或溢出事件时产生中断

模拟看门狗

过采样器

16 位数据寄存器

过采样率可在 2x 到 256x之间进行调整可编程数据最多可移位 8位

ADC 输入范围:VSSA≤VIN≤VDDA

ADC框架:

ADC校准:

使用STM32CubeMX设置引脚:

使用ADC配置:

使用KEIL输出的ADC寄存器:

ADC输出结果:

代码

复制

  1. 代码
  2. MX_GPIO_Init();
  3. MX_ADC1_Init();
  4. /* USER CODE BEGIN 2 */
  5. /* Initialize LED on board */
  6. BSP_LED_Init(LED1);
  7. /* Perform ADC calibration */
  8. if (HAL_ADCEx_Calibration_Start(&hadc1) != HAL_OK)
  9. {
  10. /* Calibration Error */
  11. Error_Handler();
  12. }
  13. while (1)
  14. {
  15. if (HAL_ADC_Start(&hadc1) != HAL_OK)
  16. {
  17. /* ADC conversion start error */
  18. Error_Handler();
  19. }
  20. /* Wait for ADC conversion completed */
  21. if (HAL_ADC_PollForConversion(&hadc1, 10) != HAL_OK)
  22. {
  23. Error_Handler();
  24. }
  25. uhADCxConvertedData_OVS_ratio16_shift4 = HAL_ADC_GetValue(&hadc1);
  26. HAL_ADC_Stop(&hadc1);
  27. hadc1.Init.OversamplingMode = ENABLE;
  28. hadc1.Init.Oversampling.Ratio = ADC_OVERSAMPLING_RATIO_16;
  29. hadc1.Init.Oversampling.RightBitShift = ADC_RIGHTBITSHIFT_NONE;
  30. if (HAL_ADC_Init(&hadc1) != HAL_OK)
  31. {
  32. Error_Handler();
  33. }
  34. if (HAL_ADC_Start(&hadc1) != HAL_OK)
  35. {
  36. /* ADC conversion start error */
  37. Error_Handler();
  38. }
  39. /* Wait for ADC conversion completed */
  40. if (HAL_ADC_PollForConversion(&hadc1, 10) != HAL_OK)
  41. {
  42. /* End Of Conversion flag not set on time */
  43. Error_Handler();
  44. }
  45. uhADCxConvertedData_OVS_ratio16_shift0 = HAL_ADC_GetValue(&hadc1);
  46. HAL_ADC_Stop(&hadc1);
  47. hadc1.Init.OversamplingMode = DISABLE;
  48. if (HAL_ADC_Init(&hadc1) != HAL_OK)
  49. {
  50. Error_Handler();
  51. }
  52. /* Start ADC group regular conversion */
  53. if (HAL_ADC_Start(&hadc1) != HAL_OK)
  54. {
  55. /* ADC conversion start error */
  56. Error_Handler();
  57. }
  58. /* Wait for ADC conversion completed */
  59. if (HAL_ADC_PollForConversion(&hadc1, 10) != HAL_OK)
  60. {
  61. /* End Of Conversion flag not set on time */
  62. Error_Handler();
  63. }
  64. uhADCxConvertedData_OVS_disabled = HAL_ADC_GetValue(&hadc1);
  65. HAL_ADC_Stop(&hadc1);
  66. hadc1.Init.OversamplingMode = ENABLE;
  67. hadc1.Init.Oversampling.Ratio = ADC_OVERSAMPLING_RATIO_16;
  68. hadc1.Init.Oversampling.RightBitShift = ADC_RIGHTBITSHIFT_4;
  69. if (HAL_ADC_Init(&hadc1) != HAL_OK)
  70. {
  71. Error_Handler();
  72. }

总结:

STM32C092RC ADC 特性详解

高性能与低功耗

分辨率与速度:12位分辨率下转换时间为0.4μs(2.5 Msps),降低分辨率可缩短转换时间。

低功耗设计:

等待模式:防止低频PCLK下的溢出。

自动关闭模式:无转换时自动断电,降低功耗。

高级功能

自校准:提升ADC精度,建议在初始化时执行。

过采样器:

过采样率范围:2x至256x,可提升信噪比(SNR)。

数据移位:右移8位可优化结果分辨率。

模拟看门狗:监测输入电压是否超出阈值,触发中断。

通道配置

外部通道:最多19个,支持多传感器接入。

内部通道:

温度传感器(VSENSE):用于系统温度监测。

参考电压(VREFINT):用于校准。

电源监视(VDDAVSSA):检测电源电压异常。


---------------------
作者:meiyaolei
链接:https://bbs.21ic.com/icview-3455528-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/7 13:35:25

实验四 ysy

/* project1_add.增加数据 */ #include <stdio.h> #include <stdlib.h>typedef struct {int id; // 产地IDchar name[50]; // 产地名称int yield; // 产量&#xff08;吨&#xff09; } OrangeFarm;int main() {OrangeFarm new_farm; // 本次只需定义一个结…

作者头像 李华
网站建设 2026/1/8 22:19:58

拥抱大数据领域数据服务,迎接数字时代挑战

拥抱大数据领域数据服务&#xff0c;迎接数字时代挑战 引言&#xff1a;数字时代的“数据焦虑” 凌晨两点&#xff0c;某零售企业的IT主管王磊盯着电脑屏幕上的报警信息发愁——营销部门刚发来紧急需求&#xff1a;“明天要推出‘618预热活动’&#xff0c;需要近30天所有门店的…

作者头像 李华
网站建设 2026/1/4 8:33:05

2025 零代码 AI 落地神器曝光

一、场景痛点与核心目标 场景痛点 企业落地 AI 应用时&#xff0c;常面临技术整合复杂、落地周期长、成本不可控、商用配套缺失等实际问题&#xff1a;多工具拼接易出现兼容性隐患&#xff0c;非技术团队难以独立完成配置&#xff1b;自研商用模块&#xff08;用户管理、支付…

作者头像 李华
网站建设 2026/1/9 15:56:06

雷达液位计工作原理是什么?(脉冲雷达 vs FMCW 雷达)

​ ​微波如何成为工业的“智慧之眼”&#xff1f;​ ​在现代工业的复杂环境中&#xff0c;精准测量液位是安全与效率的基石。雷达液位计&#xff0c;这项看似神秘的微波探测技术&#xff0c;正以其非接触、高精度的特性&#xff0c;默默守护着无数储罐与反应釜。它究竟…

作者头像 李华
网站建设 2026/1/9 3:09:54

【必读收藏】从写代码到“调教“AI:我的转型之路与开发方式革命

从Java程序员转型为AI应用开发工程师的经历。工作内容从编写CRUD接口变为研究大模型能力边界和设计AI业务流程。开发方式从直接写代码转变为与AI工具协作。思维方式从"工具人"升级为"编排师"&#xff0c;利用自身系统架构和业务经验优势&#xff0c;实现人…

作者头像 李华
网站建设 2026/1/4 10:57:16

牛批了,磁盘清理神器

今天给大家带来一款好用的硬盘清理软件&#xff0c;可以更好的管理电脑的硬盘存储空间&#xff0c;有需要的小伙伴一定要及时下载收藏。 HDCleaner 硬盘清洁器 这款软件功能非常多&#xff1a;包括电脑垃圾清理、注册表清理、永久删除文件、磁盘分析和整理等功能。 在清理栏目…

作者头像 李华