首页 > 其他 > 详细

ADC

时间:2014-03-20 21:26:59      阅读:496      评论:0      收藏:0      [点我收藏+]

简介:

  • 扫描:一次转换中可包含多个通道(信号),一个一个地转换,可设置转换顺序。最多达18个通道包括16个外部和2个内部(温度,电源)【规则组最多16个转换通道;注入组最多4个转换通道】(温度传感器和电源电压传感器只能出现在主ADC1中,注意打开连接通道):每个通道对应指定的引脚(查表)
  • 模式:单次、循环 ...
  • 时钟&速度:输入时钟不得超过14MHz,来自于PCLK2(APB2时钟)的分频,每个通道的最快转换时间为1us
  • 分组:
    • 规则组(类似main):多个通道共用一个结果寄存器
    • 注入组(类似中断):共有4个结果寄存器对应4个通道
  • 触发:
    • 规则组:软件或外部
    • 注入组:外部
  • 中断:规则组所有通道转换完成,EOC置位(ADC1和ADC2的中断映射在同一个中断向量上,而ADC3的中断有自己的中断向量。)
  • 精度:12位分辨率
  • 输入范围:VREF- ≤ VIN ≤ VREF
  • 转换结果在寄存器中可设置为左对齐或右对齐
  • 模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高/低阀值。
  • DMA:只有ADC1和ADC3的规则组拥有DMA功能

  • 如果ADC_SQRx或ADC_JSQR(保存着规则组和注入组的需转换通道和它们的转换顺序)寄存器在转换期间被更改,当前的转换被清除,一个新的启动脉
    冲将发送到ADC以转换新选择的组。

  • ADC何时进行转换:
    • 设置ADON位(只适用于规则通道)

    • 外部触发启动(适用于规则通道或注入通道),EXTI只能上升沿

转换模式(CONT位):单次/连续

  • EOC/JEOC信号何时产生/清除:
    • 产生:某一个通道转换成功
    • 清除:由软件清除或由读取ADC_DR时清除
  • 中断信号何时产生:
    • EOCIE+信号
  • 什么叫扫描模式:(SCAN位)
    • 一个ADC一次转换多个通道
  • 校准:
    • 建议在每次上电后执行一次校准
    • 启动校准前,ADC必须处于关电状态(ADON=’0’)超过至少两个ADC时钟周期
    • 校准阶段结束后,校准码储存在ADC_DR中
    • 一旦校准结束,CAL位被硬件复位
  • 采样时间设置:

    • 每个通道可以分别用不同的时间采样
    • 和ADC时钟共同决定转换快慢(TCONV = 采样时间+ 12.5个周期)
  • 合作:
    • ADC们:多个ADC同时工作时,可以设置合作模式(设置为独立模式则互不合作)
    • 规则/注入:关键在于如何管理注入组<手册11.3.9 注入通道管理>
      • 注入组由触发启动
      • 注入组在规则组通道之后自动启动
    • 通道们:
      • 把通道们分成多个小组,一次触发转一组,一组一组来 135 246 125 246...(规则/注入都可以这么设置)

配置:

  1. 时钟:
    1. 时钟使能    RCC_APB2PeriphClockCmd
    2. 速度设置(分频)RCC_ADCCLKConfig(RCC_PCLK2_Div6); //72/6=14  MAX
  2. GPIO
    • 模拟输入   GPIO_Mode_AIN
  3. ADC配置   ADC_Init(ADC1, &ADC_InitStructure);
    1. 模式:ADC_Mode = ADC_Mode_Independent;//规则组和注入组独立
    2. 是否多通道:ADC_ScanConvMode = DISABLE/ENABLE;
    3. 是否连续转:ADC_ContinuousConvMode = DISABLE;
    4. 选择触发方式:ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;//软件触发
    5. 结果对齐方式:ADC_DataAlign = ADC_DataAlign_Right;
    6. 通道数目:ADC_NbrOfChannel = 1;
  4. 使能ADC(若要开始转换还要触发信号)
    • ADC_Cmd(ADC1, ENABLE);
  5. 需转换的通道设置
    • ADC_RegularChannelConfig(ADC1, 通道号ADC_Channel_0-17, 该通道排位1-16, 采样时间ADC_SampleTime_239Cycles5最慢 );
  6. 触发信号
    • 软件触发:ADC_SoftwareStartConvCmd(ADC1, ENABLE);
  7. 获取转换值
    • u16 ADC_GetConversionValue(ADC_TypeDef* ADCx)//返回最近一次 ADCx 规则组的转换结果

多通道:

 

  1. ADC_ScanConvMode = ENABLE;
  2. ADC_NbrOfChannel =2;
  3. ADC_RegularChannelConfig(ADC1,ADC_Channel_16,1,ADC_SampleTime_239Cycles5);
  4. ADC_RegularChannelConfig(ADC1,ADC_Channel_17,2,ADC_SampleTime_239Cycles5);
  5. (DMA :ADC_DMACmd(ADC1,ENABLE);//打开和DMA的连接)

bubuko.com,布布扣

ADC,布布扣,bubuko.com

ADC

原文:http://www.cnblogs.com/2cats/p/3583122.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!