MM32F031 ADC 学习笔记

datasheet中描述最高12 位可编程分辨率的SAR ADC,多达10 路外部输入通道。 这句话怎么理解呢?也就是说有10个IO可以设置为ADC口线了。内部两路是属于内部通道了。

1.  首先ADC转换要明确目标,我要转换谁?

          这个由通道转换选择寄存器(ADC_ADCHS)来选择要转换的通道,将相关的bit置位就使能,将相关的位复位就失能。

     例如将bit0  和bit1 置位 就等于告诉ADC模块,喂 ADC 听好了哦 我接下来要转换通道0 和通道1 。 当然了也可以设置每个通       道的转换周期。

2.  怎么转换啊?

          转换目标明确了,该怎么转换? 有3种模式:

     1. 单次转换模式 

             用户设置ADST=1 开始转换“序号最小”的通道, 你可以在第1步使能 转换通道0 和通道1。但是抱歉只对通道0做转换

      ,通道1 我可不转换。转换完成后 ADST=0 ,需要用户设置 ADST=1来启动第2次转换!你不启动我就不转换了。

     2.  单周期扫描模式

            用户设置ADST=1  开始转换ADC_ADCHS寄存器中使能的通道(第一步我们设置了通道0 和通道1),简单的说就是将            通道0和1都做转换,转换完成后会自动设置ADST=0,并将结果保存到对应通道的数据保存寄存器 ADDR0 和 ADDR1。              DMA搬运时就是从ADDR0和ADDR1中取出数据搬走!

        总结单周期扫描模式:  就是转换你选择的N个通道转换,转换完N个通道后进入ADC空闲状态。需要需要用户设置                      ADST=1 来启动第2次转换!你不启动我就不转换了。

      3. 连续扫描模式

              连续扫描模式,也是转换你所选择的N个通道。和单周期扫描唯一不同的是,转换完N个通道后不会复位ADST

         需要用户手动清除ADST才能停止! 换句话说就是只要用户没有清除ADST,那么ADC就会一直  转换通道0 --> 转换

         通道1,继续 转换通道0 --> 转换 通道1 。。。  周而复始的扫描转换选择的通道。

      4. 切换选择通道

               我们经常在运行中需要重新选择转换通道, 只要修改ADC_ADCHS中的值即可。 值得注意的是修改选择通道需要在                ADC空闲状态下才能修改,也就是ADST=0时才能修改。 除了连续扫描模式其他两种模式都会在转换完成后,硬件自动设            置ADST=0。

 最后来个总结: 3种模式可以混搭,例如只在ADC_ADCHS中只使能一个通道(例如通道5)。 当采用连续扫描模式时,             ADC将不停的(对通道5)进行转换。加入DMA和TIMER后,就可以实现定时对某路信号采集N次后再处理。典型应用是

 对某路信号采集2n个点做FFT处理,例如对信号采集512个点后做FFT。ADST=1 的动作可以由用户代码设置,也可以由外部引脚信号触发来设置,当然了还可以由定时器事件设置。

     

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值