K60ADC外设特征

== • Linear successive approximation algorithm with up to 16-bit resolution==
• Up to four pairs of differential and 24 single-ended external analog inputs
• Output modes:
• differential 16-bit, 13-bit, 11-bit, and 9-bit modes
• single-ended 16-bit, 12-bit, 10-bit, and 8-bit modes
• Output format in 2’s complement 16-bit sign extended for differential modes
• Output in right-justified unsigned format for single-ended
• Single or continuous conversion, that is, automatic return to idle after single
conversion
• Configurable sample time and conversion speed/power
• Conversion complete/hardware average complete flag and interrupt
• Input clock selectable from up to four sources
• Operation in Low-Power modes for lower noise
• Asynchronous clock source for lower noise operation with option to output the clock
• Selectable hardware conversion trigger with hardware channel select
• Automatic compare with interrupt for less-than, greater-than or equal-to, within
range, or out-of-range, programmable value
• Temperature sensor
• Hardware average function
• Selectable voltage reference: external or alternate
• Self-Calibration mode
• Programmable Gain Amplifier (PGA) with up to x64 gain

项目所需特性:

1、由图可知ADC的转化率可以达到4K/s

2、单端信号和差分信号区别:

单端传输: 是指用一根信号线和一根地线来传输信号,信号线上传输的信号就是单端信号。
优点是简单方便,缺点是抗干扰能力差。
差分传输: 是指在两根线上都传输信号,这两个信号的大小相等,极性相反,这两根线上传输的信号就
是差分信号(差模信号)。
优点是抗干扰能力强,缺点是电路比单端传输的复杂。

开发流程:

1、选择所需要的ADC转换通道
2、设置转换时的时钟参考
3、设置是否连续转换
4、是否开启硬件平均功能
5、单端还是差分信号
6、触发方式为软件还是硬件
7、参考电压源的选择
8、选择本次转换的精度
9、是否开启PGA放大功能(若要开启则需要使用内部1.2V参考源)
10、开启转换通道
11、读取转换好的数据

正式开发:

1、在手册中的Chapter 3: Chip Configuration中的Analog找到3.7.1.3.1.1找到自己所需要使用的通道

2、由于本次进行测量的精度要求达到16bit的精度。

3、下图为ADC中的PGA信号放大的参考选择。

When the PGA is used, differential input from the pins is connected to differential
input channel 2 on ADCx
PGA的唯一参考选项是1.2 V VREF OUT源。VREF OUT信号既可以由外部电压源通过VREF OUT引脚驱动,也可以由VREF模块的输出驱动。当使用外部电压源时,请确保VREF模块处于关闭状态。关于PGA最大差分输入信号摆动范围,请参考具有PGA特性的16位ADC的设备数据表。

4、由于PGA是ADC的一部分,因此不需要额外的外部引脚,每个PGA连接到ADC的差分通道。PGA输出差分对,这些差分对连接到ADC的差分输入。当使用PGA时,引脚的差分输入连接到ADCx的差分输入通道2


5、VREFV1



本次使用ADC0_DP0作为ADC输入引脚。

具体初始化流程:

1、编写VREF参考源设置,如果使用到了PGA功能将VREF开启即可。

// VREF_InitTypeDef  VREF_InitStruct;                                      //初始化内置电源的结构体参数
// VREF_InitStruct.instance = 0;                                           //开启时钟
// VREF_InitStruct.bufferMode = kVREF_BufferMode_Lv1;                      //只作为内部电压参考
// VREF_Init(&VREF_InitStruct);

2、添加ADC初始化中的各个函数操作,PGA部分如果使用到则需要在原本的库函数中进行修改,配置相应的初始化PGA的相应寄存器。

ADC_InitTypeDef ADC_InitStruct;
ADC_InitStruct.clockDiv=kADC_ClockDiv2;                                 //时钟分频模式选择为二分频bus时钟一半50mhz   F6 S4
ADC_InitStruct.continueMode=kADC_ContinueConversionEnable;              //开启连续转换模式
ADC_InitStruct.hardwareAveMode=kADC_HardwareAverageDisable;             //关闭硬件平均模式
ADC_InitStruct.instance=HW_ADC0;                                        //模块号选择为ADC0
ADC_InitStruct.resolutionMode=kADC_SingleDIff16;                        //分辨率选择为单端16位精度
ADC_InitStruct.singleOrDiffMode=kADC_Single;                            //选择为单端模式
ADC_InitStruct.triggerMode=kADC_TriggerSoftware;                        //触发模式选择为软件触发
ADC_InitStruct.vref=kADC_VoltageVREF;                                   //使用MUC内部参考源
// ADC_InitStruct.magni=kADC_PGA_Magni_3;                                  //PGA放大倍数设置为8倍
ADC_Init(&ADC_InitStruct);                                              //引脚初始化  本次使用的通道为ADC0_DP0

3、PGA是否进行使能操作,若使用到了PGA模块,就需要在正式开启ADC转换前使能PGA模块。并且在使能之后要开启ADC的转换,因为使用到的是ADC0中的通道0,因此在使能的函数中传入0即可。

    // ADC_PGALPb_LowPowerModeControl(HW_ADC0,1);                              //将PGA功耗改为标准模式// ADC_PGAEN_Enable_or_Disable(HW_ADC0,0);                                 //使能PGA放大ADC_StartConversion(HW_ADC0, 0, kADC_MuxA);                             //开启转换

4、数据读取,只需要对ADC相应的R寄存器的数据进行读取即可,可以通过调用读取函数进行对数据的存储。

if(ADC_IsConversionCompleted(HW_ADC0,kADC_MuxA)==0)                                            //判断是否转换完成
{printf("ADC19=0x%04X\r\n",ADC_ReadValue(HW_ADC0,kADC_MuxA));    //将ADC R区数据通过串口以16进制数据发出16位的数据
}

实现项目中出现的问题:

1、在项目的实现过程中对相应的库函数进行移植时出现报错。提示没有定义相关的芯片。

解决方法:如图在define中添加MK60D10 RAVEN DEBUG即可解决

额外内容:

#ifndef使用可以防止头文件的重复包含以及便于程序的调试和移植
(1)作用是当“标识符”没有由#define定义过,则编译“程序段1”,定义过则编译“程序段2”。

#ifndef x 1              //标识符
程序段 1
#else
程序段 2
#endif

(2)作用是当“标识符”没有由#define定义过,则编译“程序段1”,否则编译“程序段2”。

#ifndef 标识符
#define 标识符
程序段 1
#else
程序段 2
#endif

(3)作用是当“表达式”值为真时,编译“程序段1”,否则编译“程序段2”。

#if 表达式
程序段 1
#else
程序段 2
#endif

渡鸦MK60学习 【ADC-PGA单通道16位数据采集】相关推荐

  1. PCI-1906 基于PCI总线的32通道250Ksps 16位ADC和4通道16位DA数据采集卡

    板卡介绍 PCI-1906是PCI 总线的多功能模入模出接口卡,可方便地应用于装有PCI 总线插槽的微机,具有即插即用(PnP)功能.其模拟模入模出信号均由卡上的37芯D 型插座与外部信号源及设备连接 ...

  2. STM32之ADC模数转换器单通道。

    ADC模数转换器 ADC(Analog-Digital Converter)模拟-数字转换器 ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁. 12位逐次 ...

  3. 8通道16位DAC芯片LTC2600编程使用

    1.简介 LTC2600是亚德诺公司的单极性八通道16位轨至轨DAC,体积小,分辨率高.使用SPI驱动方式编程控制. 2.引脚功能 先上一张手册里面的引脚功能描述,重点关注片选引脚CS,时钟引脚SCK ...

  4. ffmpeg音视频转单声道16位16K赫兹小端点pcm音频

    直接看命令: E:\BaiduNetdiskDownload>ffmpeg -i roundDeskS02E01.mp4 -acodec pcm_s16le -f s16le -ac 1 -ar ...

  5. FPGA系统性学习笔记连载_Day7【16位比较器设计】 【原理及verilog实现、仿真】篇

    FPGA系统性学习笔记连载_Day7[16位比较器设计] [原理及verilog实现.仿真]篇 连载<叁芯智能fpga设计与研发-第7天>[16位比较器设计] [原理及verilog实现. ...

  6. JavaCV音视频转单声道16位16K赫兹小端点pcm音频

    先用Java CV的拉流对象实现对音视频的格式转换: 1.音视频转纯音频 2.音频指定采样率和声道 接着手动搞定采用率的位深,对音频做16位位深和小端点转换.最后把转好的字节数组写入文件,这个简单,用 ...

  7. STM32F4 ADC+DMA单通道采集

    背景:对锂电池电压进行采集,由于电池电压为12V,已经提前对12V进行分压,保证ADC采集电压的范围为0~3.3V.对电池电压的采集不用太过频繁,循环模式下的ADC+DMA对一直采集电压浪费资源.于是 ...

  8. 14、江科大stm32视频学习笔记——AD单通道和AD多通道代码

    目录 一.程序现象 1.AD单通道 2.AD多通道 二.原理图 三.AD单通道 1.AD.c(单次转换非扫描) 2.改为连续转换非扫描 3.main.c 四.AD双通道(单次转换非扫描) 1.思路 2 ...

  9. 渡鸦MK60学习 【DMA直接存储器读取】

    DMA直接存储器读取 1.数据搬运时不需要cpu参与 2.可以为源地址到目的地址开辟一条信息传输的通道. 芯片手册中相关章节: DMAMUX:DMA的选择器 eDMA:DMA的控制器 DMA使用时要有 ...

最新文章

  1. pythonsys模块介绍_sys 模块介绍 - Clarkhedi的个人空间 - OSCHINA - 中文开源技术交流社区...
  2. 方案接口服务器问题记录
  3. streaming api_通过Spring Integration消费Twitter Streaming API
  4. 关于flex,好像有12个属性非常重要
  5. string转换函数以及hnu暑期实训部分和A+B的例题
  6. [转]香农信息论与毒药称球问题
  7. HDU 1257 最少拦截系统【最长上升子序列】
  8. Apache 首位华人董事吴晟谈开源:我对中国开源短期内是消极的
  9. 蓝桥杯 ADV-179 算法提高 解二元一次方程组
  10. Windows提权 cmd 开启 3389
  11. python 智能抠图GUI
  12. mysql nlssort函数_Oracle中 nls_sort 和 nlssort 排序功能
  13. linux中文是楷体,Linux中安装宋体楷体
  14. python 复制word内容_Python读取word文本操作详解
  15. 人脸识别摄像头开发板和模组选型
  16. ASP.NET MVC4 微信公众平台开发测试一: 验证
  17. 什么是“大数据新闻”? 大数据
  18. Android中级控件介绍(五)
  19. 对逻辑斯蒂回归的一些细节剖析
  20. 电商系统中常见的 9 大坑,你踩过没?

热门文章

  1. 莫比乌斯反演公式(数论)
  2. 数据挖掘 贝叶斯网络
  3. 佐罗官网zorro软件安装教程及一键新机屏蔽越狱使用方法详细简介
  4. 机器学习 (南京大学周志华的《机器学习》和李航的《统计学习方法》)
  5. Bloodhound 简介
  6. SQL语言——视图(view)的作用
  7. mysql5.6.22.0安装_mysql 8.0.22 下载安装配置方法图文教程
  8. Python+Behave+Allure Web UI自动化测试
  9. 如何才是有效的、正确的工作方式?
  10. Linux命令大全(二)(详解)压缩备份、文件管理