STM32 - 模数转换实验

  • ADC介绍
  • ADC配置步骤
  • ADC模数实验编程

ADC介绍


我们采用是STM32F10ZET6 高容量的,拥有3个ADC,ADC 位逐次逼近的模拟数字转换器

Vref+ Vref- 是芯片内部直接连接的用来接的电压值的范围就是模数转换的的范围 如果需要测量超过此范围的就自己在外部加入电压调理电路。

通过这个表格 可以得到对应的管脚和对应的通道。

注入通道: 4个 类似于中断
规则通道:16个 规规矩矩的通道
两个同时有 先执行注入通道的,因为它是包含中断的

关于ADC的时钟,14M 以下, adc的时钟需要分频到14M以下,所以我们adc 有设定的寄存器,所以我们设定的分频因子设定位6 72/6=12M

关于标号6:
其中; 两种寄存器, 左对齐还是右对齐,
规则通道,16位寄存器 1个 因此,转换好了 之后应当马上读取出来
注入通道寄存器:4个

关于标号7
各种标志位等等的结构框图
单次转换、连续转换

ADC配置步骤

step1 使能端口时钟和AD时钟


ps: 设置72M的分频因子到12M 6分频

step2 初始化ADC参数

ADC的扫描通道的方式: 两个选择使能 或 失能
ADC的扫描通道的转换方式:两个选择使能 或 失能
关于ADC的触发方式: 一般是软件启动

举例::



ADC模数实验编程

#include "adc.h"/*******************************************************************************
* º¯ Êý Ãû         : adc_init
* º¯Êý¹¦ÄÜ         : IO¶Ë¿ÚʱÖÓ³õʼ»¯º¯Êý
* Êä    Èë         : ÎÞ
* Êä    ³ö         : ÎÞ
*******************************************************************************/
void adc_init()
{GPIO_InitTypeDef GPIO_InitStructure;ADC_InitTypeDef ADC_InitStructure;   //定义ADC的结构体RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO|RCC_APB2Periph_ADC1,ENABLE);RCC_ADCCLKConfig(RCC_PCLK2_Div6);//12M  分频银子
//初始化GPIOGPIO_InitStructure.GPIO_Pin=GPIO_Pin_1;//ADCGPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;  //模拟输入GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStructure);//对ADC进行配置,需要调用ADC的初始化ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;    //独立的工作模式ADC_InitStructure.ADC_ScanConvMode = DISABLE;      //我们采用的是单通道 ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;    //配置连续扫描,还是单次扫描ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;    //不使用外部触发ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;  //右对齐模式ADC_InitStructure.ADC_NbrOfChannel = 1;    //转换通道数量ADC_Init(ADC1, &ADC_InitStructure);//ÉèÖÃÖ¸¶¨ADCµÄ¹æÔò×éͨµÀ£¬ÉèÖÃËüÃǵÄת»¯Ë³ÐòºÍ²ÉÑùʱ¼äADC_RegularChannelConfig(ADC1,ADC_Channel_1,1,ADC_SampleTime_239Cycles5);ADC_Cmd(ADC1,ENABLE);    //使能ADC1 的 ADC_ResetCalibration(ADC1);//重置指定的ADC校准器(复位校准)while(ADC_GetResetCalibrationStatus(ADC1));//获取ADC的校准的标志ADC_StartCalibration(ADC1);//开始校准 while(ADC_GetCalibrationStatus(ADC1));//获取开始校准标志ADC_SoftwareStartConvCmd(ADC1, ENABLE);// 软件启动
}
//这个函数是用来读取我们这个AD转换的数值的
U16 Get_ADC_Value(u8 channel,u8 times,)
{u8 t;u32 temp_value=0;//采用的是规则组,规则序列,四个参数,ADC1   channel1 ADC_RegularChannelConfig(ADC1,ADC_Channel_1,1,ADC_SampleTime_239Cycles5);for (t=0;t<times;t++){ADC_SoftwareStartConvCmd(ADC1, ENABLE);// 软件启动while (!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC));  //是否转换完成temp += ADC_GetConversionValue(ADC1);      //  获取转换值delay_ms(5);}return temp/(t+1)
}

STM32 - 模数转换实验相关推荐

  1. STM32 LWIP实验第一章节--了解以太网

    STM32 LWIP实验第一章节--了解以太网 心有猛虎,无所畏惧! 一.了解以太网流程: 借鉴: https://www.xitongtiandi.net/wenzhang/xp/23235.htm ...

  2. stm32蜂鸣器实验

    硬件连接: 提示:不能通过IO口直接驱动大功率器件 实验步骤: 使能IO口时钟.调用RCC_APB2PeriphColckCmd(); 初始化IO口模式.调用函数BEEP_Init(); 操作IO口, ...

  3. 51单片机 | ADC模数转换实验

    文章目录 一.ADC介绍 1.ADC简介 2.ADC 转换原理 二.XPT2046 芯片介绍 三.硬件设计 四.软件设计 1.ADC 读写函数 2.主函数 五.实验现象   前面我们介绍的都是对数字信 ...

  4. 单片机adc0809模数转换实验c语言,实验ADC0809-0832模数转换实验.doc

    实验ADC0809-0832模数转换实验 实验十三 ADC0809模数转换实验 一.实验目的 1.掌握ADC0809模/数转换芯片与单片机的连接方法及ADC0809的典型应用. 2.掌握用查询方式.中 ...

  5. 【单片机】A/D模数转换实验

    A/D模数转换实验<代码详细注释> 一.实验要求 利用实验板上的 ADC0809 做 A/D 转换器,实验板上的电位器提供模拟量输入,编制程序, 将模拟量转换成二进制数字量,用 8255 ...

  6. NB-IOT实验练习2——STM32基础实验

    STM32基础实验 上一节介绍了江苏学蠡信息科技有限公司的无线传感器网络实验平台关于NB-IOT实验所需要的各项硬件以及所需要的软件组成部分,这一章,主要是使用STM32F103单片机的基础实验进行介 ...

  7. STM32工作笔记0091---ADC模数转换实验-M3

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152

  8. 模数转换实验中断方式c语言,DSP实验报告--模拟信号的AD+FFT变换

    DSP实验报告--模拟信号的AD+FFT变换,完整的实验报告,内含源代码(C语言). 一. 实验开发环境 1.通用 PC机一台,安装 Windows2000 或 WindowsXP 操作系统且已安 装 ...

  9. ADC 模数转换实验

    生活中的模拟信号,如温度.声音.压力等,需要转换为更方便储存.处理和发射的数字形式. 51 单片机无法直接操作这些模拟量,其系统内部时运算都是数字量 0 和 1,因此必须将模拟量转换成数字量.数字量, ...

最新文章

  1. 图解 继电器模组接线图_交流接触器,继电器的知识你了解多少?(值得收藏)...
  2. 50个最有用的Matplotlib数据分析与可视化图
  3. 人民币数字金额转大写金额
  4. 一文了解 caffe 框架 | CSDN 博文精选
  5. UVA1583 - Digit Generator
  6. 【问答】总结|开放领域问答梳理系列(1)
  7. Verizon CEO证实公司正考虑出价收购雅虎
  8. 绝对值编码器 c语言,绝对式光电编码器
  9. python获取浏览器cookie_python3实现读取chrome浏览器cookie
  10. 室内定位常用方法总结
  11. STN( Spatial Transformer Network)
  12. 使用DragonFly进行智能镜像分发
  13. c语言程序设计知到网课答案,C语言程序设计(山东联盟)2020知到网课答案
  14. 国四网络工程笔记(究极错题)
  15. 100个常用简单英语口语
  16. 收藏!2022年开发运维必备的10款顶级工具
  17. c语言将两幅bmp格式图片拼接图片
  18. win10电脑中病毒了怎么办,win10电脑中毒怎么解决
  19. mysql.proc is wrong_解决警告:数据库错误Column count of mysql.proc is wrong.
  20. Openfiler 基本介绍

热门文章

  1. win10分屏快捷键无法使用_如何使用Windows10系统分屏快捷键?
  2. CCF 201412-3 集合竞价 90分代码 C++
  3. 【offerMe--面经必备】---网易雷火面经分享(包含答案)
  4. Cocos Creator 3.2 中实现2D地图3D人物45度角RPG游戏完整效果
  5. 基于SSM的电影院购票系统的设计与实现
  6. 微博利用JS自动关注所有推荐关注
  7. CCS Cannot open soure file ***
  8. 后端/服务端开发方向面试题全解析
  9. 现在怎么用python 爬取微信的聊天记录
  10. 佳能TS3180打印机连接wifi