AD与DA的完整配置

发布者:omicron25最新更新时间:2015-10-16 来源: eefocus关键字:完整配置 手机看文章 扫描二维码
随时随地手机看文章
#include  "AD_DA.H"

  ////////////AD的配置函数/////////////////////////////
  #include "stm32f10x.h"
  #include "stm32f10x_dac.h"
  #include "stm32f10x_adc.h"
  #include "stm32f10x_dma.h"
u16 ADC_ConvertedValue[BufferSize];

////////////AD滤波函数/////////////////////////////


////////////AD的配置函数/////////////////////////////
////////////AD函数/////////////////////////////
void  ADC_configuration()
{
 ADC_InitTypeDef ADC_InitStructure;
 GPIO_InitTypeDef GPIO_InitStructure;


//对应的引脚配置:通道0~15依次对应:PA(0~7),PB(0~1),PC(0~5)
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
 GPIO_Init(GPIOA, &GPIO_InitStructure); 


 ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
 ADC_InitStructure.ADC_ScanConvMode = ENABLE;
 ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
 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_RegularChannelConfig(ADC1, ADC_Channel_14, 1, ADC_SampleTime_55Cycles5);

 
 ADC_Cmd(ADC1, ENABLE);
   
 ADC_ResetCalibration(ADC1);
 
 while(ADC_GetResetCalibrationStatus(ADC1));//等待ADC的校准寄存器被设置完毕
 
 ADC_StartCalibration(ADC1);
 
 while(ADC_GetCalibrationStatus(ADC1));
 
 ADC_SoftwareStartConvCmd(ADC1, ENABLE);


//   ADC_ConvertedValue[cnt];
}

void DAC_Configuration(void)
{
 DAC_InitTypeDef DAC_InitStructure;
 GPIO_InitTypeDef GPIO_InitStructure;


 GPIO_InitStructure.GPIO_Pin= GPIO_Pin_4|GPIO_Pin_5;//IO端口的第4位
 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;//端口模式为模拟输入方式
 GPIO_Init(GPIOA, &GPIO_InitStructure);

 /
 DAC_InitStructure.DAC_Trigger=DAC_Trigger_Software;     //DAC触发方式为软件控制
 DAC_InitStructure.DAC_WaveGeneration=DAC_WaveGeneration_None;    
 //不从DAC端口产生波形
 DAC_InitStructure.DAC_LFSRUnmask_TriangleAmplitude=DAC_LFSRUnmask_Bits8_0; //8位DA波形生成模式
 DAC_InitStructure.DAC_OutputBuffer=DAC_OutputBuffer_Enable;     
 //使能DAC输出缓冲器
 //用上面参数初始化DAC通道1
 DAC_Init(DAC_Channel_2, &DAC_InitStructure);    //用上面参数初始化DAC通道1
 DAC_Cmd(DAC_Channel_2, ENABLE);        //使能DAC通道1
 DAC_Init(DAC_Channel_1, &DAC_InitStructure);    //用上面参数初始化DAC通道1
 DAC_Cmd(DAC_Channel_1, ENABLE);        //使能DAC通道1

// DAC_SetChannel2Data(DAC_Align_12b_L, DAC_data); //设置DAC通道1为12位且数据左对齐模式
// DAC_SoftwareTriggerCmd(DAC_Channel_2, ENABLE); //使能DAC通道1的软件触发方式,转换一次
// DAC_SetChannel1Data(DAC_Align_12b_L, DAC_data); //设置DAC通道1为12位且数据左对齐模式
// DAC_SoftwareTriggerCmd(DAC_Channel_1, ENABLE); //使能DAC通道1的软件触发方式,转换一次 
}

void DMA_Configuration(void)
{
 DMA_InitTypeDef DMA_InitStructure;
 DMA_DeInit(DMA1_Channel1);
 DMA_InitStructure.DMA_PeripheralBaseAddr=ADC1_DR_Address;      //定义DMA外设基地址
 DMA_InitStructure.DMA_MemoryBaseAddr=(u32)&ADC_ConvertedValue; // 定义DMA内存基地址
 DMA_InitStructure.DMA_DIR=DMA_DIR_PeripheralSRC;               //外设作为数据传输的来源(外设传到内存) DMA_DIR_PeripheralDST——内存传到外设
 DMA_InitStructure.DMA_BufferSize=3;                            //连续转化3个AD通道值
 DMA_InitStructure.DMA_PeripheralInc=DMA_PeripheralInc_Disable; //外设寄存器地址不变
 DMA_InitStructure.DMA_MemoryInc=DMA_MemoryInc_Enable;          //内存寄存器地址递增
 DMA_InitStructure.DMA_PeripheralDataSize=DMA_PeripheralDataSize_Word; //外设数据宽度32bit
 DMA_InitStructure.DMA_MemoryDataSize=DMA_MemoryDataSize_Word;    //内存数据宽度32bit
 DMA_InitStructure.DMA_Mode=DMA_Mode_Circular;     //DMA模式是循环
 DMA_InitStructure.DMA_Priority=DMA_Priority_High; //DMA优先级
 DMA_InitStructure.DMA_M2M=DMA_M2M_Disable;       //DMA没有设置内存到内存传输
 DMA_Init(DMA1_Channel1,&DMA_InitStructure);
 DMA_Cmd(DMA1_Channel1,ENABLE);
}

关键字:完整配置 引用地址:AD与DA的完整配置

上一篇:STM32开发板学习日记-[3] TIM定时器输出比较
下一篇:ARM的串口通信配置

推荐阅读最新更新时间:2024-03-16 14:36

ADI公司推出数模转换器的性能AD5683R
中国,北京——ADI公司近日宣布推出数模转换器AD5683R。这款16位单通道nanoDAC+™转换器扩充了ADI nanoDAC® 产品组合,以更小封装带来卓越性能。该器件以不折不扣的性能传递超高价值,其相对精度为±2 LSB INL,内置2 ppm/°C 2.5 V基准电压源,采用节省空间的LFCSP封装,让模拟系统设计师们在更多应用设计中无需以牺牲精度的代价来换取尺寸。AD5683R数模转换器提供16位、14位、12位和10位四种选项,为通信基础设施、工业过程控制、医疗和仪器仪表等多个市场领域提供了一条通用的引脚兼容型升级/降级途径。 AD5683R 16位nanoDAC+的主要特性: ±2 LSB INL(
[模拟电子]
ADI公司推出数模转换器的性能<font color='red'>AD</font>5683R
介绍如何通过意法的STM32 MCU实现用DMA完成多通道的AD采样功能
在嵌入式产品中有时候需要实现对外部的模拟量进行采样处理和记录,而这就需要使用到ADC功能,将外部的模拟量转换成数字量。而在复杂的嵌入式产品中,往往需要使用多路AD采样,例如在智能家居产品,电池电量检测,热敏温度传感器,烟雾传感器,气敏传感器等都是可以使用ADC来实现采样的。在本文章,将会介绍如何通过意法的STM32 MCU实现用DMA完成多通道的AD采样功能。 什么叫ADC ADC即模拟数字转换器(英语:Analog-to-digital converter)是用于将模拟形式的连续信号转换为数字形式的离散信号的一类设备。一个模拟数字转换器可以提供信号用于测量。与之相对的设备成为数字模拟转换器。 影响AD采样的因素有哪些 分
[单片机]
介绍如何通过意法的STM32 MCU实现用DMA完成多通道的<font color='red'>AD</font>采样功能
DSP与AD转换器的接口电路设计
    摘要:在以DSP为核心的数字信号处理系统中,模数转换是系统重要的组成部分。作者以 德州仪器 公司的TMS320C6203B与ADS5422为例,详细说明了DSP与AD转换器的接口电路设计方法。最后还介绍了DSP控制数据采集的软件流程。 关键词:DSP;AD转换器;接几电路 0 引言     在以DSP为核心的数字信号处理系统中,AD转换是系统重要的组成部分。因为往往需要进行信号分析、处理的对象是模拟量,例如语音信号、各种传感器输出的模拟信号。这些信号经过放大、滤波及A/D转换后,从模拟信号转换为数字信号,再由DSP芯片对这些数字信号按照某种算法进行处理。     德州仪器 公司(TI)的TMS320C6000系列DSP是
[嵌入式]
DSP与<font color='red'>AD</font>转换器的接口电路设计
基于STCl2C5410AD的电动车无刷电机控制器检测设计
  0 引言   伴随着城市化进程,人们生活的交通距离不断扩大,代替燃油汽车和自行车的电动车的普及大幅度的提高了电力资源的利用效率,促进了国民经济的健康发展。电动自行车以电力作动力,骑行中不产生污染,无损于空气质量。从改善人们的出行方式、保护环境和经济条件许可情况等因素综合来看,电动自行车目前乃至今后都有着广阔的发展空间。电动自行车所用直流电机分为有刷电机和无刷电机两种。其中有刷电机控制较简单。但其易磨损的电刷带来维修保养工作量相对较大、使用寿命相对较短等缺点。而直流无刷电机本身没有易磨损部件,电机寿命长,维修保养工作量小。但直流无刷电机采用电子换向原理工作,其控制过程比有刷电机复杂得多,因此对控制器质量的要求也高得多。   
[单片机]
基于STCl2C5410<font color='red'>AD</font>的电动车无刷电机控制器检测设计
基于STC12C5408AD的记忆示波器
1 引言 示波器是电子测量的基本仪器。由于其具有图形显示实时、直观和形象等特性,在一般的物理实验室中它也是常用仪器之一。众所周知,示波器是依据输入电压调制的电子束扫描、荧屏余辉以及人眼的暂留效应等原理制成的;它要求输入周期信号;对于非周期性的信号,普通示波器是无能为力的,必须使用具有记忆功能的专用示波器,但这种示波器价格高昂,一般的物理实验室无法大量配置。 信息时代,个人计算机大量普及。普通物理实验室以及一般的中学都已配备了大量的计算机(以下称PC)。但这些PC大都用于文字信息处理和计算工作,其内在的功能还远远没有发挥,实际上造成了巨大的浪费。 我们知道,PC具有很强的图像显示功能。如果能够开发、利用这一功能,配上外部接口电
[测试测量]
差分放大器AD813x常见问题解答
问题:如何计算差分放大器电路的增益,如何分析差分放大器电路? 答案:如图所示,差分放大电路分析的基本原则与普通运算放大器中虚断虚短原则相同,同时还具有其特有的分析原则: 差分放大器电路分析图 1. 同向反向输入端的电流为零,即虚断原则。 2. 同向反相输入端的电压相同,即虚短原则。 3. 输出的差分信号幅度相同,相位相差180度,以Vocm共模电压为中心对称。 4. 依照上述三个原则,差分信号的增益为 Gain=R F /R G 。 问题:为什么电路的输出不正确? 答案:对于差分放大器的应用来讲,要得到正确的输出,必须要注意以下几点: 1.输出信号的摆幅必须在数据手册指定的范围内。以AD8137为例,在单电源
[模拟电子]
差分放大器<font color='red'>AD</font>813x常见问题解答
基于8OC196的高精度、低成本AD转换
介绍了一种基于80C196 单片机 的A/D转换硬件 电路 和软件实现, 利用80C196自带的10位A/D转换器和PWM输出及简单外围 电路 ,实现了高精度、高速A/D转换。该方法同时具有成本低、实用性强等特点。 关键词:单片机;A/D转换;PWM信号;分辨率 0 引言 在智能化仪表中,A/D转换器直接影响仪表的性能,A/D转换器的性能主要在两个方面,转换精度和转换时间。目前常用的有逐次逼近型转换器、并行转换器、双积分转换器等。其中,双积分A/D转换器因为转换精度高、抗干扰性能强,并且价格相对较低,在数字测温仪表以及工业现场的慢变信号数据采集中得到非常广泛的应用。但是双积分A/D转换器在实际应用中仍有不足之处。由于其工作过
[模拟电子]
PIC16F877的应用--AD转换器
PIC16F877单片机片内有8路10位A/D转换器,引脚②~⑤为AN0~AN3、⑦~⑩为AN4~AN7。MPLAB-ICD的实验板上16F877单片机的RA0口接了一只供有电压的10kΩ电位器,在D口(RD0~RD7)接了8只LED,如附图所示。笔者用16F877 A/D转换通道其中一路作A/D转换,以说明A/D转换编写程序的方法和在线调试及编程。 在附图中,笔者把R6的可变输出(电压模拟量)端接到RA0/AN0作为模拟量输入;用D口(RD0~RD7)的8只LED显示A/D转换的结果(按二进制显示)。 一、 建立A/D转换源程序的要点 编写10位的一路A/D转换程序看似简单,但对初学者却有一定难度,因为编写A/D转换程序时,
[单片机]
PIC16F877的应用--<font color='red'>AD</font>转换器
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved