精华内容
参与话题
问答
  • STM32的ADC采样与多通道ADC采样

    万次阅读 多人点赞 2016-05-12 07:45:36
    一 单通道采样 参考资料:《STM32库开发实战指南》 刘火良,杨森著原理性质的东西还是少讲,因为上面那本书里面讲解的很详细了,直接来看硬件电路图这里使用的是3362电位器(10K),即用STM32来测量PB0和GND两端的电压...

    一 单通道采样
    参考资料:

    《STM32库开发实战指南》 刘火良,杨森著

    原理性质的东西还是少讲,因为上面那本书里面讲解的很详细了,直接来看硬件电路图

    这里写图片描述

    这里使用的是3362电位器(10K),即用STM32来测量PB0和GND两端的电压,这样的电路设计比较简单也容易理解,但是存在一定的弊端,下面给出《STM32库开发实战指南》上面配套的硬件电路图
    这里写图片描述

    如果设计电路图的话,可以参考这种思路。

    我的收获
    1 引脚初始化的时候需要注意
    这里写图片描述

    每一个ADC通道都对应一个GPIO引脚,看图中的ADC123_IN10,表示这个引脚(PC0)可以配置为ADC1的通道10,或者是ADC2的通道10,或者是ADC3的通道10,这个地方非常重要,涉及到后面ADC初始化时函数的调用。

    比如当我们使能ADC时,我们调用的函数是

    ADC_Cmd();

    如果我们使用的是ADC1,那么上面函数的写法就应该是

    ADC_Cmd(ADC1,ENABLE);

    相应的如果是ADC2,那么上面函数的写法就是

    ADC_Cmd(ADC2,ENABLE);

    另外需要注意的是,我们这里的ADC使用了DMA,所以如果你使用的是ADC1,那么对应的DMA就应该是DMA1的通道1

    这里写图片描述

    如果使用的是ADC2或者是ADC3就需要自己去查找手册,看看对应的是哪个DMA的那个通道。

    在后面上传的程序中可以看到DMA初始化的时候有这么一条语句

    DMA_Init(DMA1_Channel1);

    这就是初始化DMA1的通道1

    相应的

    DMA_Cmd(DMA1_Channel1,ENABLE);

    就是使能DMA1的通道1

    总结一句,配置的IO口不同,对应ADC和DMA就不同

    在单通道的ADC采样中,注意上面这一个点就可以了,但是多通道采样还需要注意其他的一些地方

    二 多通道采样

    还是看上面的电路图

    这里写图片描述

    这里我们假设使用PB0和PC0端口来采集电压。

    stm32有三个ADC,每个ADC对应16个通道,这里我们只是用其中的两个通道来做说明。

    在程序中PB0设置为ADC1的通道8,PC0设置为ADC1的通道10。

    需要注意的几个点:

    1 引脚的配置,在上面已经说到

    这里写图片描述

    2 ADC模式的一些配置

    对ADC模式的配置主要是通过对ADC_InitTypeDef结构体成员的初始化来完成的。

    ADC_InitTypeDef ADC_InitStructure;
    ADC_InitStructure.ADC_ScanConvMode=ENABLE;

    结构体的这个成员主要是用来设置ADC的扫描模式,我们使用通道8和通道10,当然要允许ADC进行通道的扫描

    ADC_InitStructure.ADC_NbrOfChannel=2;

    这个结构体成员是用来表明要转换的通道数目,这里我们使用通道8和通道10两个通道,那么这个值必然是2。

    ADC_RegularChannelConfig();

    这是一个非常重要的函数
    这里写图片描述

    这是从《stm32库函数使用手册》中截到的图,关于函数具体参数的使用可以去看该手册。

    下面结合程序来看一下这个函数的使用

    这里写图片描述

    函数的第三个参数是用来设置采样顺序的,看我们的程序,也就是说我们设置ADC1的通道8先进行采样,接着ADC1的通道10再进行采样。

    写到这里,基本上多通道ADC采样程序就差不多了,至于具体的DMA使用可以参考我后面上传的程序。

    现在发现还是不能用复制粘贴功能,所以具体的程序需要到我的资源里下载

    展开全文
  • adc 采样时间 采样周期 采样频率计算,PDF格式。 ADC 转换就是输入模拟的信号量, 单片机转换成数字量。 读取数字量必须等转换完成后, 完成一个通道的读取叫做采样周期。 采样周期一般来说=转换时间+读取时间 。 ...
  • ADC采样

    2019-12-07 16:21:46
    ADC转换是指将输入的模拟量转化为数字量,并且将数字量...采样时间可以通过软件设置ADC采样时间寄存器来设置ADC的采样时间。对应的库函数如下: /** * @brief Configures for the selected ADC regular channe...

    ADC转换是指将输入的模拟量转化为数字量,并且将数字量读取出来。完成这个动作的时间叫做ADC的采样周期。

    采样周期 =  转换时间+读取时间。转换时间 = 采样时间+12.5个周期。采样时间可以通过软件设置ADC采样时间寄存器来设置ADC的采样时间。对应的库函数如下:

    /**
      * @brief  Configures for the selected ADC regular channel its corresponding
      *         rank in the sequencer and its sample time.
      * @param  ADCx: where x can be 1, 2 or 3 to select the ADC peripheral.
      * @param  ADC_Channel: the ADC channel to configure. 
      *   This parameter can be one of the following values:
      *     @arg ADC_Channel_0: ADC Channel0 selected
      *     @arg ADC_Channel_1: ADC Channel1 selected
      *     @arg ADC_Channel_2: ADC Channel2 selected
      *     @arg ADC_Channel_3: ADC Channel3 selected
      *     @arg ADC_Channel_4: ADC Channel4 selected
      *     @arg ADC_Channel_5: ADC Channel5 selected
      *     @arg ADC_Channel_6: ADC Channel6 selected
      *     @arg ADC_Channel_7: ADC Channel7 selected
      *     @arg ADC_Channel_8: ADC Channel8 selected
      *     @arg ADC_Channel_9: ADC Channel9 selected
      *     @arg ADC_Channel_10: ADC Channel10 selected
      *     @arg ADC_Channel_11: ADC Channel11 selected
      *     @arg ADC_Channel_12: ADC Channel12 selected
      *     @arg ADC_Channel_13: ADC Channel13 selected
      *     @arg ADC_Channel_14: ADC Channel14 selected
      *     @arg ADC_Channel_15: ADC Channel15 selected
      *     @arg ADC_Channel_16: ADC Channel16 selected
      *     @arg ADC_Channel_17: ADC Channel17 selected
      * @param  Rank: The rank in the regular group sequencer. This parameter must be between 1 to 16.
      * @param  ADC_SampleTime: The sample time value to be set for the selected channel. 
      *   This parameter can be one of the following values:
      *     @arg ADC_SampleTime_1Cycles5: Sample time equal to 1.5 cycles
      *     @arg ADC_SampleTime_7Cycles5: Sample time equal to 7.5 cycles
      *     @arg ADC_SampleTime_13Cycles5: Sample time equal to 13.5 cycles
      *     @arg ADC_SampleTime_28Cycles5: Sample time equal to 28.5 cycles	
      *     @arg ADC_SampleTime_41Cycles5: Sample time equal to 41.5 cycles	
      *     @arg ADC_SampleTime_55Cycles5: Sample time equal to 55.5 cycles	
      *     @arg ADC_SampleTime_71Cycles5: Sample time equal to 71.5 cycles	
      *     @arg ADC_SampleTime_239Cycles5: Sample time equal to 239.5 cycles	
      * @retval None
      */
    void ADC_RegularChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel, uint8_t Rank, uint8_t ADC_SampleTime)
    {
      uint32_t tmpreg1 = 0, tmpreg2 = 0;
      /* Check the parameters */
      assert_param(IS_ADC_ALL_PERIPH(ADCx));
      assert_param(IS_ADC_CHANNEL(ADC_Channel));
      assert_param(IS_ADC_REGULAR_RANK(Rank));
      assert_param(IS_ADC_SAMPLE_TIME(ADC_SampleTime));
      /* if ADC_Channel_10 ... ADC_Channel_17 is selected */
      if (ADC_Channel > ADC_Channel_9)
      {
        /* Get the old register value */
        tmpreg1 = ADCx->SMPR1;
        /* Calculate the mask to clear */
        tmpreg2 = SMPR1_SMP_Set << (3 * (ADC_Channel - 10));
        /* Clear the old channel sample time */
        tmpreg1 &= ~tmpreg2;
        /* Calculate the mask to set */
        tmpreg2 = (uint32_t)ADC_SampleTime << (3 * (ADC_Channel - 10));
        /* Set the new channel sample time */
        tmpreg1 |= tmpreg2;
        /* Store the new register value */
        ADCx->SMPR1 = tmpreg1;
      }
      else /* ADC_Channel include in ADC_Channel_[0..9] */
      {
        /* Get the old register value */
        tmpreg1 = ADCx->SMPR2;
        /* Calculate the mask to clear */
        tmpreg2 = SMPR2_SMP_Set << (3 * ADC_Channel);
        /* Clear the old channel sample time */
        tmpreg1 &= ~tmpreg2;
        /* Calculate the mask to set */
        tmpreg2 = (uint32_t)ADC_SampleTime << (3 * ADC_Channel);
        /* Set the new channel sample time */
        tmpreg1 |= tmpreg2;
        /* Store the new register value */
        ADCx->SMPR2 = tmpreg1;
      }
      /* For Rank 1 to 6 */
      if (Rank < 7)
      {
        /* Get the old register value */
        tmpreg1 = ADCx->SQR3;
        /* Calculate the mask to clear */
        tmpreg2 = SQR3_SQ_Set << (5 * (Rank - 1));
        /* Clear the old SQx bits for the selected rank */
        tmpreg1 &= ~tmpreg2;
        /* Calculate the mask to set */
        tmpreg2 = (uint32_t)ADC_Channel << (5 * (Rank - 1));
        /* Set the SQx bits for the selected rank */
        tmpreg1 |= tmpreg2;
        /* Store the new register value */
        ADCx->SQR3 = tmpreg1;
      }
      /* For Rank 7 to 12 */
      else if (Rank < 13)
      {
        /* Get the old register value */
        tmpreg1 = ADCx->SQR2;
        /* Calculate the mask to clear */
        tmpreg2 = SQR2_SQ_Set << (5 * (Rank - 7));
        /* Clear the old SQx bits for the selected rank */
        tmpreg1 &= ~tmpreg2;
        /* Calculate the mask to set */
        tmpreg2 = (uint32_t)ADC_Channel << (5 * (Rank - 7));
        /* Set the SQx bits for the selected rank */
        tmpreg1 |= tmpreg2;
        /* Store the new register value */
        ADCx->SQR2 = tmpreg1;
      }
      /* For Rank 13 to 16 */
      else
      {
        /* Get the old register value */
        tmpreg1 = ADCx->SQR1;
        /* Calculate the mask to clear */
        tmpreg2 = SQR1_SQ_Set << (5 * (Rank - 13));
        /* Clear the old SQx bits for the selected rank */
        tmpreg1 &= ~tmpreg2;
        /* Calculate the mask to set */
        tmpreg2 = (uint32_t)ADC_Channel << (5 * (Rank - 13));
        /* Set the SQx bits for the selected rank */
        tmpreg1 |= tmpreg2;
        /* Store the new register value */
        ADCx->SQR1 = tmpreg1;
      }
    }

     通道的采样时间会影响采样的精度。下面举例来进行说明:

    例如ADCLCK = 14MHZ,设置 1.5周期的采样时间。那么 转换时间 = 1.5+12.5 =14周期 = 1us。

    一般情况下,如果是软件启动,那么转换时间就是采样周期。

    如果通过定时器进行触发启动ADC,则还需要加上定时器的相关时间。 

    如果已知待采集的周期性信号的频率,怎样确定ADC的采样周期?

    已知信号的频率为50hz(周期20ms),初步定一个周期采集2500个采样点,(一个周期最少要采集20个点,即采样率最少为1K),因此每两个点的采样间隔为20ms/2500 = 8us;如果ADC可编程通道的采样周期时间选择71.5周期,便可以知道ADC的时钟频率为9MHZ.、

     

    ADC+DMA传输数据

      采用ADC+DMA的形式传输数据,遇到的问题:ADC正常采集数据,DMA不进入传输完成中断。经过以下调整解决问题。顺便总结ADC+DMA的配置方式

      1、配置DMA,

       

    		DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)&ADC1->DR;
    		DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)ADC1_Value_buff; 
    		DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;  // 内存作为数据传输的目的地址

     

     2、配置用于ADC采集数据的引脚;

     

     3、配置ADC。如果要采用DMA的方式一定要记得ADC_DMACmd(ADC1, ENABLE);这个地方坑了自己,开始配置时没有开启该DMA功能。

     4、在DMA传输完成中断完成时,要重新设置传输量的大小。

     

    展开全文
  • STM8 ADC采样

    2018-12-31 16:28:08
    STM8 ADC采样滤波例程,定时采样,平均滤波,去掉最大值最小值.值得初学者看看。。ADC采样滤波例程,定时采样,平均滤波,去掉最大值最小值
  • ADC采样原理

    万次阅读 2019-06-02 23:21:57
    尽管国内有华为、紫光、中芯微等一定知名度的芯片企业,但与欧美等企业差距很大,尤其在ADC芯片上表现尤为显著。目前ADC的供应商主要有德州仪器、亚德诺等企业。中国是全球最主要的芯片需求方,但是国内能造出高...

    现状


          尽管国内有华为、紫光、中芯微等一定知名度的芯片企业,但与欧美等企业差距很大,尤其在ADC芯片上表现尤为显著。目前ADC的供应商主要有德州仪器、亚德诺等企业。中国是全球最主要的芯片需求方,但是国内能造出高精度ADC芯片的企业微乎其微,即便造出来性能与价格也跟不上市场节奏故市场占有率几乎为0。

    芯片千万种,ADC芯片就是最难造的之一。真实世界的模拟信号,例如温度、压力声音或者图像等需要转换成 更容易存储、处理和发射的数字形式 。模/数转换器(ADC)就实现了这个功能,在实际应用中为了微型化,通常做成ADC芯片。

    造芯片工艺精密,通常芯片单位为纳米级,而且种类繁多,一个通信基站就有上百颗芯片。基站发射回收信号,信号回收后首先要 滤波 ,然后还有芯片会将这种特别小的信号进行 放大 ;还有的芯片对其进行 解析 处理  ;然后是芯片负责 传输 分发 等等,每一步都要芯片来处理。

    全球造出高精度ADC芯片不到十家,而且以美国企业为主。一块好的ADC芯片体现在  高精度 低功耗 转换效率 等指标上。


    采样定理


    又称奈奎斯特采样定理,即当采样频率fs 大于信号中最高频率fmax的2倍时,采样后的数字信号完整地保留了原始信号中的信息。在一般实际应用中保证采样频率为信号最高频率的2.56~4倍。

    1924 Nyquist(奈奎斯特)推导出理想低通信道的最高码元传输速率公式(传码率)。

    1928 H.奈奎斯特推出采样定理,故称为奈奎斯特采样定理

    1933年,俄罗斯科捷利尼科夫首次用公式严格表述这一定理。

    1948 信息论创始人 香农对这一定理加以明确地说明,并正式作为定理引用,故许多文献也称香农采样定理

    采样定理有很多表述形式,但最基本的是 时域采样定理    频域采样定理

    1.1 时域

    频带为F的连续信号f(t)可用一系列离散的采样值f(t1)、f(t1±Δt)、f(t1±2Δt)…来表示,只要这些采样点的时间间隔Δt  1/(2F),便可根据各采样值完全恢复原来的信号f(t)。这是时域采样定理的一种表达。

    另一种表述方式是:当时间信号函数f(t)的最高频率分量为fM时,f(t)的值可由一系列采样间隔小于或等于1/(2fM)的采样值来确定,即采样点的重复频率f≥(2fM)。图为模拟信号和采样样本的示意图

    我的理解:一个时间上连续的函数或波形,这个波形的最高频率达到fM,现要想用一个离散的值去表示它,并且不丢失信息,那对这一组离散值的最低要求是:这组离散值相邻值之间的时间间隔Δt不能超过T = 1/(2fM)即有Δt  1/(2fM)。这么看来,在采样的时间上Δt有最大值,那么采样的频率上f=1/ Δt是由一个最小值,即f f≥(2fM)

    时域采样定理是采样误差理论、随机变量采样理论和多变量采样理论的基础。

    1.2 频域

    对于时间上受限制的连续信号f(t)(即当│t│>T时,f(t)=0,这里T=T2-T1是信号的持续时间),若其频谱为Fω),则可在频域上用一系列离散的采样值 来表示,只要这些采样点的频率间隔ω≦π/tm 。

    https://gss1.bdstatic.com/-vo3dSag_xI4khGkpoWK1HF6hhy/baike/c0%3Dbaike60%2C5%2C5%2C60%2C20/sign=61f9cb19ccbf6c81e33a24badd57da50/a08b87d6277f9e2ffa7332791f30e924b899f379.jpg

    1.3公式

         理想低通信道最高码元传输速度B=2W baud (其中W是带宽),理想信号的极限信息速率(信道容量)

                                     C = B*log2N (bps)

    1.4 结论

         从信号处理角度看,采样定理描述了两个过程:采样与重建。采样是连续时间信号转换为离散时间信号,重建过程是对样本进行插值的过程,即从离散的样本x[n]中,用数学的方法确定连续的信号x(t)即原始信号。这一过程的精确度受量化误差的限制。

         只要已知信号的最高频率fmax,采样定理给出了保证能完整重建此信号的最低采样频率。这一最低采样频率称为临界频率或奈奎斯特采样频率,用fN表示。反之,已知现有的采样频率,通过采样定理可知能保证重建信号的最大可采样信号频率。

        同时也说明,被采样的信号必须是 带限的 ,即 信号中高于某一给定值的频率成分是0,或至少非常接近0,这样在重建信号中这些频率成分的影响可忽略不计。比如声音信号,人类的声音信号频率超过5Khz的成分非常非常小,因此其采样频率用10Khz就足够了。

        采样率越高,稍后恢复出的波形就越接近原信号,但是对系统的要求就更高,转换电路必须具有更快的转换速度

    1.5  过采样(oversampling)

    指以高于信号带宽2倍或其最高频率对其采样的过程。

    欠采样

    1.6 截止频率(Cutoff frequency)

    指一个系统的输出信号能量开始大幅下降(在带阻滤波器中为大幅上升)的边界频率。

    1.7 混叠  

    如果不满足采样定理条件,采样后的信号的频率就会重叠。即被采样信号中高于采样频率一半(fs/2)的那部分频率成分将被重建成低于fs/2信号。这种频谱的重叠导致的失真称为  混叠 。而重建出来的信号称为原信号的 混叠替身 ,因为这两个信号有同样的样本值。

    避免混叠发生的方法:

    1. 提高采样频率 ;
    2. 引入低通滤波器 或提高低通滤波器的参数,该低通滤波器称为抗混叠滤波器

    1.8  抗混叠低通滤波器

    当一个信号被采样时,必须满足采样定理以避免混叠。为满足采样定理要求,信号在进行减采样前,必须通过一个具有适当截止频率的低通滤波器。这中用于避免抗混叠的低通滤波器称为 抗混叠低通滤波器 。

    1.9  信号的重构

    任何信号都可以看做是不同频率的正弦(余弦)信号的叠加,因此如果知道所有组成这一信号的正(余弦)信号的幅值、频率和相角,就可以重构原信号。由于信号测量、分解及时频变换的过程中存在误差,因此不能100%地重构原信号,重构的信号只能保证原信号误差在容许范围内。


                                                       ADC

    数字信号变成模拟信号会产生量化噪声,需要模拟低通滤波器滤除,但模拟低通滤波器并非直接滤除截止频率以外的信号、而是大幅减少截止频率以外的信号、同时小幅减少及影响截止频率以内的信号。若能提高低通滤波器的截至频率,则模拟低通滤波器对期待保留的频段(以音响系统为例,就是人耳听得到的20hz-20khz)的影响就会降低;过采样可以将量化噪声推往更高频率、让系统可以选用更高截止频率的低通滤波器,借此避免 混叠、改善分辨率以及降低噪声。

    很多场合都需要有高速的A/D采样保证有效性精度,如无线电、数字图像采集等,一般的测控系统也希望在精度上有所突破。AD转换器是实现数字化的选择,其发展从 Flash并型 ADC SAR型ADC 积分型ADC ,但近年来发展的 Σ-Δ型  Pipeline ADC , 各有优缺点,满足不同场合。

    2.ADC工作原理

    模拟信号转化为数字信号一般经过:采样、保持、量化和编码。采样和保持是在  采样保持电路中完成  ,而量化与编码步骤则在   ADC   中完成。

     

    2.1采样与保持

    2.1.1采样

     采样就是把随时间连续变化的模拟量转换为时间离散 模拟量  

    其中传输门TG受采样信号S(t)的控制,在S(t)的脉宽τ期间,传输门导通,输出为输入信号v1(t),而在(Ts-τ)期间,传输们关闭,输出信号为0。

    通过分析可以看到,取样信号S(t)的 频率愈高 ,所取得信号经低通滤波器后 愈能真实地复现输入信号。但带来的问题是数据量增大,为保证有合适的取样频率,它必须满足取样定理。

    2.1.2 保持

      将采样电路取得的模拟信号转化为数字信号都  需要一定的时间 (不能做到实时转换),为了给后续的量化编码过程提供一个稳定值,每次取得的模拟信号必须通过保持电路保持一段时间。通过一个电容器就可以存储输入的模拟电压。

     

     

     

     

     

    1. 电路由  输入放大器A1  输出放大器A2  保持电容CH    开关驱动电路  组成。
    2. 电路中要求A1具有很高的输入阻抗,  以减少对输入信号源的影响  
    3. 为使 保持阶段CH上所存电荷不易泄放 ,A2也应具有较高输入阻抗,A2还应具有低的输出阻抗,这样可以提高电路的带负载能力。一般还要求电路中AV1·AV2=1。

    现结合图4来分 析取样-保持电路的工作原理。在t=t0时,开关S闭合,电容被迅速充电,由于AV1·AV2=1,因此v0=vI,在t0~t1时间间隔内是取样阶段。在t=t1时刻S断开。若A2的输入阻抗为无穷大、S为理想开关,这样可认为电容CH没有放电回路,其两端电压保持为v0不变,图中t1到t2的平坦段,就是保持阶段。

      取样-保持电路以由多种型号的单片集成电路产品。如双极型工艺的有AD585、AD684;混合型工艺的有AD1154、SHC76等。

     

     

    展开全文
  • 函数名称:ADC采样函数 * 函数出口:return * 函数入口:ADC_port,ADC端口选择: * AD_SE_ADC0 0x00 //ADC0 * AD_SE_ADC1 0x01 //ADC1 * AD_SE_ADC2 0x02 //ADC2 * AD_SE_ADC3 0x03 //ADC3 * AD_SE_ADC4 0x04 /...
  • ADC采样源代码

    2012-04-13 10:42:24
    基于FPGA的AD采样的源程序代码
  • ADC采样计算

    千次阅读 2018-04-16 14:52:57
    1.首先确定ADC用几位表示,最大数值是多少。比如一个8位的ADC,最大值是0xFF,就是255。2.然后确定最大值时对应的参考电压值。一般而言最大值对应3.3V。这个你需要看这个芯片ADC模块的说明。寄存器中有对于输入信号...

    1.首先确定ADC用几位表示,最大数值是多少。比如一个8位的ADC,最大值是0xFF,就是255。

    2.然后确定最大值时对应的参考电压值。一般而言最大值对应3.3V。这个你需要看这个芯片ADC模块的说明。寄存器中有对于输入信号参考电压的设置。

    3.要计算电压,就把你的ADC数值除以刚才确定的最大数值再乘以参考电压值。比如你ADC值为0x80,那么实际值就是0x80/(0xFF+1)*3.3V = 1.65V

    4.计算出来的电压值只是ADC管脚处的电压值。你可以用电压表量一下,计算值和实际值是否一样。至于放大器等等,都是芯片外部的事情。外部电路怎么接,和芯片ADC的采样值无关。

    5.如果你想知道芯片外部某处的电压,你需要从得出的ADC管脚处的电压(比如刚才的1.65V),再根据电路图进行计算。

    展开全文
  • cubemx 配置多通道ADC进行ADC采样

    千次阅读 2019-05-16 23:07:21
    cubemx 配置多通道ADC进行ADC采样 AD的基础知识 AD很复杂,其实也不复杂,因为我们用的不多。 AD:模拟量转换数字量(模拟信号转换数字信号)。 ADC:模拟量转数字量的转换器。 为什么需要AD呢? 自然界宏观...
  • adc 采样 校准

    千次阅读 2014-09-06 16:48:26
    STM32内部参照电压VREFIN的使用 STM32的内部参照电压VREFINT和ADCx_IN17相连接,它的作用是...ADC的参考电压都是通过Vref+提供的并作为ADC转换器的基准电压。 当我们使用的Vref+是直接取自用VCC电压时,当VCC电
  • adc 采样 通道

    千次阅读 2014-09-06 17:00:02
    今天学习stm32的adc部分,adc1有18个通道,其中adc16和adc17是内部通道,分别接内部温度计和Vrefint。在做A/D转换的时候,16个多路通道可以分为两组:规则组和注入组。不知道大家怎么看,也许是我看的不够专注,反正...
  • ADC采样说明

    2010-08-10 16:33:00
    ADC采样值计算:Vres = ADCConvertedValue ×Vref / (2)^n 其中:1、ADCConvertedValue为ADC端口采样上报的数值 2、Vref为参考端电压 3、(2)^n的n为ADC采样位数 如:ADCConvertedValue =...
  • TIM+ADC+DMA原理 一般情况下,当我们需要进行采样的时候...这样只要设置好定时器的触发间隔,就能实现ADC定时采样转换的功能(即采样速率),然后可以在程序的死循环中一直检测DMA转换完成标志,然后进行数据的读取...
  • STM32F103ADC采样

    2018-11-13 14:33:50
    ADC多通道采样,可以采集6个通道,也可以增加到16个通道,原理相同
  • STM32 ADC采样频率的理解

    千次阅读 2019-01-04 10:35:36
    标题 STM32 ADC采样频率的理解 刚初学stm32 adc,采样频率一直是个很模糊的概念,到底如何计算stm32的采样频率。 翻了网络上许多帖子,有的说法,采样频率是要根据你自己设定的时钟定时设置的,一堆麻烦的计算过程...
  • 本次程序使用KEIL开放平台,STM32F767作为硬件平台,使用STM32三重ADC采样模式,提高ADC采样
  • PIC16F616 ADC 采样函数

    2011-10-23 20:24:25
    我写的ADC采样函数,可以用于PIC16F6XX系列的单片机,可以采样任何通道,在实际的项目应用中很理想,执行效率高,简单清晰。
  • ADC采样作为数据系统前端被广泛应用于各种场所。大量的用户使得在网络存在许多关于ADC芯片和使用方法的资料,随便搜索便可得许多。这样的情况给ADC的学习带来了许多方便,但是细细琢磨也并非全都是好处:网络知识...

空空如也

1 2 3 4 5 ... 20
收藏数 18,893
精华内容 7,557
关键字:

adc采样