闲聊飞思卡尔ADC模块
ADC模块简介
KV4x系列MCU 的ADC(Analog to Digital Converter)模块有16个通道,是双端12位的ADC,有独立的参考电压源和控制块,分为ADCA和ADCB,各有8个通道,ADCA和ADCB可以并行采样也可以串行采样,有各自的采样保持电路,特性主要有:
12位的分辨率
最大时钟频率为25M,周期为40ns.
采样速率可以达到8.83百万次每秒
可以去其他外设同步,像常用的PWM外设
可以连续扫描存储16次的测量值
输入信号的增益可以配置为x1,x2,x4,这个功能还是很有用的.
中断功能
可选的DMA功能
可选的采样修正功能
单端或者差分输入
ADC模块框图
从下图可以清楚的看出ADC模块的构成,主要有通道多路开关,采样保持,参考电压,数字输出存储寄存器,中断以及数据传输等功能块。
ADC模块外部信号
主要的外部信号可以通过下表详细的看出
外部输入信号主要有:
模拟输入引脚:ADC外设有16路模拟输入引脚,被分为ANA[0;7]和ANB[0:7],ADCA和ADCB都有自己的采样保持电路和转换器。
参考电压引脚:
VREFH和VREFL的电压是不一样的,VREFH一般为VDDA,VREFL一般为0V.
电源引脚VDDA和VSSA为ADC模块提供电源.
ADC寄存器
与ADC相关的寄存器也比较多,具体的内容可以参考飞思卡尔官方的数据参考手册,这里主要介绍几个主要的寄存器。
ADC_CTRL1,控制寄存器一主要用来配置ADC扫描模式以及中断源使能。位0到位2总共3位用来配置扫描模式,主要有六种模式:单次顺序扫描,单词并行扫描,循环顺序扫描,循环并行扫描,顺序触发扫描和并行触发扫描。
ADC_CLISTx,主要用来配置单端或者差分输入的通道
ADC_STAT,状态寄存器主要用来指示一些ADC模块的状态,主要包括转换状态,转换完成中断,过零中断,高低门限中断。
ADC_RSLTn 结果寄存器用来存储转换完成的结果。
驱动程序概述
ADC的驱动程序有两种方案,一种为自己开发,按照数据手册的指引开发简单的ADC驱动程,另一种是使用飞思卡尔SDK提供的ADC模块驱动程序,SDK包含功能比较全的ADC驱动,自己开发我们不用的功能可以不包含,使代码简单易用。这里主要简单介绍下自己开发驱动,
主要包含几个功能
初始化函数:按照数据手册配置寄存器,实在不会可以参考例程学习配置,因为ADC模块是各种控制比较重要的功能模块,基本的保护算法都要考ADC的采样数据来执行,所以ADC模块还是要熟练掌握。
初始化主要包括配置时钟,通道,转换模式,使能中断等
中断函数:当然你也可以选择使用查询来得到转换结果,但小猿建议大家在正式的项目中尽量使用中断。
中断函数中主要包括清中断标志,将结果寄存器中的值读取到数组中或者变量中,需要注意的一点是如果是使用并行采样模式和使用顺序扫描模式的中断函数是不一样的,采用并行的话需要分别写ADCA和ADCB的中断,如果是使用顺序扫描只要完成ADCA的中断就可以。
数据传输函数:主要完成数据的搬运和传输给其他模块使用,这个根据架构来决定。
实际应用中需要注意低功耗模式下和正常模式下的区别,另外虽然数据手册说最大可以配置为25M的频率,但建议大家不要配置到最大频率使用,确保转换稳定精确,有兴趣的猿友可以配置为不同的模式,对比下不同。
嵌入式
程序猿
嵌入式程序猿致力于打造程序猿工程师交流分享的精品移动平台,欢迎各位猿友加入和分享。微信搜索嵌入式程序猿添加关注,或者长按下方二维码,选择识别图中二维码添加关注。
闲聊飞思卡尔ADC模块相关推荐
- 【电机控制不得不学习的干货:】 飞思卡尔MCU正交编/解码器模块
在电机控制领域,我们经常需要得到电机的转速,位置来执行算法,那么想知道转速是如何获得的吗?看过来,猿来你在这里O(∩_∩)O~ 正交编码器简介 飞思卡尔增强型正交编码器模块为多种电机控制的应用 ...
- 恩智浦 飞思卡尔Freescale Kinetis KEA128学习笔记4——ADC
KEA128的ADC有8个寄存器 ADC编程基本步骤: 1.打开ADC模块时钟 2.开启ADC_APCTL1引脚控制寄存器相应引脚的AD功能(即关闭这些引脚的IO功能) 3.配置ADC_SC3寄存器的 ...
- 飞思卡尔16位单片机(五)——ADC模数转换模块测试
一.介绍 ADC模块的作用是将模拟的电压信号转换为CPU可以处理的数字信号.一些低端的单片机上没有ADC模块,必须使用片外的ADC芯片,才能实现模数转换的功能.而飞思卡尔的单片机一般是集成了ADC模块 ...
- ftm模块linux驱动,飞思卡尔k系列_ftm模块详解.doc
飞思卡尔k系列_ftm模块详解 1.5FTM模块1.5.1 FTM模块简介FTM模块是一个多功能定时器模块,主要功能有,PWM输出.输入捕捉.输出比较.定时中断.脉冲加减计数.脉冲周期脉宽测量.在K1 ...
- 恩智浦 飞思卡尔Freescale Kinetis KEA128学习笔记3--GPIO模块(二)
苏州大学资料KEIL模版 链接:https://pan.baidu.com/s/1e3g--GzvsU-lEIqy8WttGg 提取码:qwik 通过IO控制小灯亮灭. //============ ...
- 飞思卡尔(一)电源模块
Ps:开始了几个月飞思卡尔的基础知识学习储备时间,基本硬件已经搭好,下面开始怒攻软件算法了~ 首先吐槽一会儿自己的心情,就我本人来说一直不把比赛当做比赛来看,不会给自己太大的压力,而是当做一次开心的经 ...
- 飞思卡尔MC9S12X PIT模块
今天带着大家学习了解下飞思卡尔MC9S12XS PID模块. PIT模块概述 周期性中断定时器(Periodic Interrupt Timer,PIT)模块是一组24位的定时器,由8位微定时器和16 ...
- 飞思卡尔XS128八位数模转换模块的实验与心得体会
飞思卡尔XS128八位数模转换模块的实验与心得体会 数模转换的编程流程: 代码标注 数模转换的编程流程: ① 锁相环时钟设置,这一步不细讲,后面会有文章来专门解释锁相环的设置,将总线时钟频率升到32M ...
- 飞思卡尔K60nbsp;FTM模块详…
原文地址:飞思卡尔K60 FTM模块详解[二] 作者:杨家二少 1.5.3 FTM功能详解 1. FTM模块的时钟 FTM模块的核心是一个16位计数器,该计数器的时钟来源可设置(由FT ...
最新文章
- BrainNet:用于人与人之间直接协作的多人脑对脑接口
- php屏幕抓取,PHP抓屏函数实现屏幕快照代码分享
- 静态html文件js读取url参数
- Image classification with deep learning常用模型
- boost::contract模块实现简单queue的测试程序
- 使用FreeCookies 控制浏览器cookies及修改http响应内容
- windows下GitHub的SSH Key 配置
- 运行MYSQL数据库命令时connetion Timeout expired异常问题
- 在小树林飞也能又快又稳,这是港科大沈劭劼组的「猛禽」无人机重规划框架...
- 序列化:ProtoBuf 与 JSON 的比较 !
- 解决“ValueError: Stop argument for islice() must be None or an integer: 0 <= x <= sys.maxsize.”
- OpenGL编程指南(第8版)PDF
- 三星android智能手机usb驱动程序,三星手机USB驱动
- oracle 怎么清空数据表,oracle怎么清空表数据,oracle清空数据库
- 用C++写洛谷P1427小鱼的数字游戏
- java端口扫描器_简单端口扫描器java的设计与实现.doc
- python 实现使用163邮箱发送有图片的邮件
- 强烈推荐:曹方,《遇见我》
- 多源异构作物组学数据融合方法研究——以高粱为例
- PS文字调整为复印字效果