当前位置: 首页 > news >正文

庄浪县住房和城乡建设局网站车辆管理网站开发

庄浪县住房和城乡建设局网站,车辆管理网站开发,竞价托管 微竞价,做决定网站一、ADC简介 ADC模拟-数字转换器 ADC可以将引脚连续变化的模拟电压转换为内存中存储的数字变量#xff0c;建立模拟电路到数字电路的桥梁 12位逐次逼近型ADC#xff0c;1us转换时间 输入电压范围#xff1a; 0~3.3V#xff0c;转换结果范围#xff1a;0~4095 18个输入…一、ADC简介 ADC模拟-数字转换器 ADC可以将引脚连续变化的模拟电压转换为内存中存储的数字变量建立模拟电路到数字电路的桥梁 12位逐次逼近型ADC1us转换时间 输入电压范围 0~3.3V转换结果范围0~4095 18个输入通道可测量16个外部和2个内部信号源 规则组和注入组两个转换单元 模拟看门狗自动检测输入电压范围 STM32F2103C8T6  ADC资源ADC1、ADC2、10个外部输入通道 二、逐次逼近型ADC 逐次逼近型ADC内部结构 ADC0809:是一个独立的8位逐次逼近型ADC芯片,在以前的时候单片机的性能还不是很强所以需要外挂一个ADC芯片才能进行AD转换这个ADC0809就是一款比较经典的ADC芯片但现在单片机的性能和集成度都有很大的提升很多单片机内部就已经集成了ADC外设这样就不用外挂芯片了引脚可以直接测电压使用还是非常方便的 结构的分析 首先在最左边这里IN0~IN7,是8路输入通道通过通道选择开关选中一路输入到比较器前面的箭头的位置进行转换 其次下面的这里是地址锁存器和译码就是你想选择哪个通道就把通道号放在这三个脚上然后给一个锁存信号上面这里对应的通道开关就可以自动拨好了 上面这两个部分就可以看作是一个可以通过模拟信号的数据选择器 因为ADC转换是一个很快的过程你给一个开始信号过个us就转换完成了所以说如果想转换多路信号那不必设计多个AD转换器只需要一个AD转换器然后加一个多路选择开关想转换哪一路就先拨一下开关选中对应通道然后在开始转换就行了 这就是输入通道选择的部分这个ADC0809只有8个输入通道我们STM32内部的ADC是有18个输入通道的所以对应这里就是一个18路输入的多路开关然后输入信号我们选择好了我们来看下一部分 怎么才能知道这个电压对应的编码数据是多少呢 这个就需要我们用逐次逼近的方法来一一比较了首先一个电压比较器它可以判断两个输入信号电压的大小关系输出一个高低电平指示谁大谁小它的两个输入端一个待测的电压另一个这里DAC的电压输出端DAC是数模转换器给他一个数据他就可以输出数据对应的电压DAC内部是使用加权电阻网络来实现的转换想要深入探究看江科大51单片机教程里的DA/AD一节 现在我们有了一个外部通道输入的未知编码的电压和一个DAC输出的已知编码的电压它们同时输入到电压比较器进行大小判断如果ADC输出的电压比较大我就调小DAC数据如果DAC输出的电压比较小我就增大DAC数据直到DAC输出的电压和外部通道输入的电压近似相等这样DAC输入的数据就是外部电压的编码数据这就是DAC的实现原理。这个电压调节的过程就是这个逐次逼近SAR来完成的为了最快找到未知电压的编码通常我们会使用二分法进行寻找 例如这里是8位的ADC那编码就是从0~255那第一次比较的时候我们就给DAC输入255的一半进行比较就是128然后看看谁大谁小如果DAC电压大了如果第二次比较的时候在就给128的一半64如果还是大第三次比较的时候就给32如果这次DAC电压小了那第四次就给32到64中间的值然后继续这样依次进行下去就能最快地找到未知电压的编码 那然后AD转化结束后DAC的输入数据就是未知电压的编码输出8位就有8根线12位就有12根线 最上面EOC是转换结束信号 START是开始转换给一个输入脉冲开始转换 CLOCK是ADC时钟因为ADC内部是一步一步进行判断的所以需要时钟来推动这个过程 下面的B\VREF和VREF-是DAC的参考电压比如你给一个数据255就是对应5V还是3.3V,就由这个参考电压决定这个DAC的参考电压也决定了ADC的输入范围所以它也是ADC参考电压最后左边是整个芯片电路的供电VCC和GND,通常这个参考电压的正极和VCC是一样的会接在一起参考电压的负极和GND也是一样的也连接在一起所以一般情况下ADC输入电压的范围就和ADC的供电是一样的 STM32F103C8T6内部的ADC结构 这里左边是ADC的输入通道包括16个GPIO口IN0~IN15,和两个内部的通道一个内部温度传感器一个是VREFINT内部参考电压然后18个输入通道然后是一个模拟多路开关可以指定我们想要选择的通道右边是多路开关的输出进入到模数转换器这里模数转换器就是执行的我们刚才讲过的逐次比较的过程转换的结果会直接放在这个数据寄存器里我们读取寄存器就能知道ADC转换的结果了 在模拟多路开关中对于普通的ADC多路开关一般都是只选一个的就是选中某一个通道开始转换等待转换完成取出结果这是普通的流程 但是这里比较高级他可以同时选中多个而且在转换的时候还分成了两个组规则通道组和注入通道组其中规则组可以一次性最多选中16个通道注入组最多选中4个通道 在这里这个东西有什么作用呢 举个简单的例子 这就像你去餐厅点菜普通的ADC是你指定一个菜老板给你做然后做好了送给你。但在这里是你指定一个菜单这个菜单最多可以填16个菜然后你直接递个菜单给老板老板按照菜单的顺序依次做好一次性给你端上来这样的话就可以大大提高效率当然你的菜单也可以只写一道菜这样这个菜单就简化成了普通的模式了 对于这个菜单呢也有两种一种是规则组菜单可以同时上16个菜但是有一点这个规则通道数据寄存器是有一个也就是说这个桌子比较小最多只能放一个菜如果上16个菜那不好意思前15个菜都会被挤掉你只能得到16个菜所以对于规则组转换来说如果使用这个菜单的话最好配合DMA来实现DMA是一个数据转运小帮手它可以在每上一个菜之后把这儿菜挪到其他地方去放置被覆盖 注入组这个注入组就比较高级了它相当于餐厅的VIP座位在这个座位上一次性最多可以点4个菜并且这里数据寄存器有4个是可以同时上4个菜的对于注入组而言就不用担心数据覆盖的问题了一般情况下我们使用规则组就完全足够了 首先左下角这里就是触发转换的部分也就是最上面的START信号开始转换对于STM32的ADC触发ADC开始转换的信号有两种一种是软件触发就是你在程序中手动调用一条代码就可以启动转换了另一种就是硬件触发就是右下角部分这些触发源上面是注入组的触发源下面这些是规则组的触发源这些触发源只要来自定时器有定时器的各个通道还有TRGO定时器主模式的输出定时器可以通向ADCDAC这些外设用于触发转换。那因为ADC经常需要过一个固定时间段转换一次比如每隔1ms转换一次正常思路就是用定时器每隔1ms申请一次中断在中断里手动开始一次转换这样也是可以的但是频繁进入中断对我们的程序是有一定影响的比如你有很多中断都需要频繁进入那肯定会影响主程序的执行并且不同中断之间由于优先级的不同也会导致某些中断不能及时得到响应如果触发ADC的中断不能及时响应那么我们ADC的转换频率就肯定会产生影响了所以对于这种需要频繁进中断并且在中断里只完成了简单工作的情况一般都会有硬件的支持 在左上角这里是VREF、VREF-、VDDA和VSSA,上面是ADC的参考电压决定了ADC输入电压的范围下面是ADC的供电引脚一般情况下VREF要接VDDAVREF-要接VSSA 右边的这里的ADCCLK是ADC的时钟用于驱动内部逐次比较的时钟这个是来自ADC预分频器这个ADC预分频器是来源于RCC的 DMA请求是用于触发DMA进行数据转运的 模拟看门狗它里面可以存一个阈值高限和阈值底限如果启动了模拟看门狗并指定了看门的通道那这个看门狗就会关注它看门的通道一旦超过这个阈值范围了它就会乱叫就会在上面申请一个模拟看门狗的中断最后通向NVIC,对于规则组和注入组而言呢它们转换完成之后也会有一个EOC转换完成的信号 EOC规则组的完成信号 JEOC注入组完成的信号 这两个信号会在状态寄存器里置一个标志位我们读取标志位就能知道是不是转换结束了同时这两个标志位也可以去到NVIC申请中断如果开启了NVIC对应的通道它们就会触发中断 ADC基本结构 输入通道 这些就是ADC通道和引脚复用的关系 这个对应关系也可以通过引脚定义表看出来 转换模式 单次转换非扫描模式 这个是最简单的 这里左边画了一个列表这个表就是规则组里的菜单有16个空位分别是序列1都序列16你可以在这里“点菜”就是写入你要转换的通道在非扫描的模式下这个菜单就只有第一个序列1的位置有效。这时菜单同时选中一组的方式就退化为简单地选中一个的方式了这里序列1的位置指定我们想转换的通道比如通道2然后就可以触发转换ADC就会对这个通道2进行模数转换过一点时间转换完成。转换结果放在数据寄存器里同时EOC标志位置1。我们判断这个EOC标志位如果转换完了那我们就可以在数据寄存器里读取结果了如果我们想在启动一次转换那就需要在触发一次转换结束置EOC标志位读结果。如果想换一个通道转换那在转换之前把第一个位置的通道2改成其他通道然后在启动转换这样就行了 连续转换非扫描模式 它与上一种单次转换不同的是它在一次转换结束后不会停止而是立刻开始下一轮的转换然后一直持续下去。这样就只需要最开始触发一次之后就可以一直转换了。这个模式的好处就是开始转换之后不需要等待一段时间的因为它一直都在转换所以你就不需要手动开始转换了也不用判断是否结束的想要读AD值的时候直接从数据寄存器取就是了这就是连续转换非扫描的模式 单次转换扫描模式 这个模式也是单次转换所以每触发一次转换结束后就会停下来下次转换就得在触发才能开始然后它是扫描模式这就会用到这个菜单列表了你可以在这个菜单里点菜比如第一菜是通道2第二菜是通道5等等这里每隔位置是通道几可以任意指定并且也是可以重复的然后初始化结构体里还会有个参数就是通道数目以为这16个位置你可以不用完只用前几个那你就需要在给一个通道数目的参数告诉他我有几个通道比如这里指定通道数目为7那它就只看前7个位置然后每次触发之后会他就依次对这前7个位置进行AD转换转换结果都放在数据寄存器里这里为了防止数据被覆盖就需要用到DMA及时将数据挪走那7个通道转换完成之后产生EOC信号转换结束然后在触发下一次就又开始新一轮的转换这个就是单次转换扫描模式的工作流程 连续转换扫描模式 这个模式的转换就是在上一个的基础上变了一点就是一次转换完成后立刻开始下一次的转换 触发控制 这个表就是规则组的触发源这个表里有来自定时器的信号还有外部引脚或定时器的信号这个具体是引脚还是定时器需要用AFIO重映射来确定最后是软件控制位也就是我们之间说的然软件触发这些触发信号怎么选择可以通过设置右边这个寄存器来完成当然使用库函数的话直接给一个参数就行了 数据对齐 我们这个ADC是12位的它的转换结果就是一个12位的数据但是这个数据寄存器是16位的所以就存在一个数据对齐的问题 数据右对齐就是12位的数据向右靠高位多出来的几位就补0 数据左对齐就是12位的数据向左靠低位多出来的几位补0 在这里我们一般使用的都是第一种右对齐这样读取这个16位寄存器直接就是转换结果 如果是左对齐直接读的话得到的数据会比实际的大 转换时间 校准 这个我们不需要理解因为这个过程是固定的我们只需要在ADC初始化的最后加几条代码就行了至于怎么计算怎么校准的我们不需要管所以这个了解一下就行 硬件电路 第一个是一个单位器产生一个可调的电压
http://www.w-s-a.com/news/553025/

相关文章:

  • 刷单网站建设wordpress缩略图 裁剪
  • 视差 网站泰州公司做网站
  • 广州网站优化系统怎么做淘客网站
  • 类似凡科互动的网站wordpress网站下载
  • 临沂网站制作公司安卓app开发实例教程
  • 泰州做网站 泰公网络科技公司网站升级中html
  • 如何做授权网站网站设计心得
  • 网站排名快速上升wordpress自动标签页
  • 做的好的手机网站有哪些万网域名交易
  • 网站怎么做漂亮点做陶瓷的公司网站
  • 软件开发设计制作网站下载自己怎么做视频收费网站
  • 江苏省建设安全协会网站天津网站建设哪家公司好
  • 资源类网站怎么做的网站上线准备工作
  • 长沙专业网站建设怎么做企业建站公司服务
  • 肇庆市有限公司网站建设手机直接看的网站有哪些
  • 织梦修改网站后备份英语作文模板高中
  • 个人网站域名用什么好上海公司拍沪牌需要什么条件
  • 网站建设 保密做网站赚钱交税
  • 食品建设网站前的市场分析进出口网站贸易平台有哪些
  • php商城网站建设个人网站用什么服务器
  • 如何做好品牌网站建设方案网站开发的学习
  • 网站开发 管理方案wordpress怎么搭建微博
  • 有哪些ui的设计网站网上商城网站建设设计方案
  • iis中怎样配置网站绑定运城可以做网站的公司
  • 品牌网站建设开发价格dedecms电影网站模板
  • 网站设计外包合同帝国网站后台认证码错误
  • 网站设计公司深圳怎么免费做公司网站
  • 90设计网站几次是什么意思swipe类网站
  • 安康微网站建设网站域名使用费用
  • 网站建设执招标评分表微信代理网站模板