GD32的ADC模块简介

ADC模块简介

> [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v4Q6PJ1V-1650267479073)(./image/芯片封装.png)]

  • 驱动板所使用的主控芯片为GD32C103CB,该芯片总共有2个ADC单元,即ADC0、ADC1,因为驱动板上使用的是LQFP48封装,所以该芯片的每个ADC单元只有10个外部模拟输入通道,并且共用相同的GPIO口,这10个外部模拟输入通道依次的对应关系为:
    • PA0(ADC01_IN0):ADC0或ADC1的外部模拟输入通道0
    • PA1(ADC01_IN1):ADC0或ADC1的外部模拟输入通道1
    • PA2(ADC01_IN2):ADC0或ADC1的外部模拟输入通道2
    • PA3(ADC01_IN3):ADC0或ADC1的外部模拟输入通道3
    • PA4(ADC01_IN4):ADC0或ADC1的外部模拟输入通道4
    • PA5(ADC01_IN5):ADC0或ADC1的外部模拟输入通道5
    • PA6(ADC01_IN6):ADC0或ADC1的外部模拟输入通道6
    • PA7(ADC01_IN7):ADC0或ADC1的外部模拟输入通道7
    • PB0(ADC01_IN8):ADC0或ADC1的外部模拟输入通道8
    • PB1(ADC01_IN9):ADC0或ADC1的外部模拟输入通道9
  • 由上述我们可以得到关于ADC的大致信息,在芯片中总共有2个ADC采样单元,有10共用的外部外部输入通道,即每个ADC采样单元都可以对10个通道中的任意一个进行采样转换,显然若要充分利用好者10个外部通道,那ADC采样模块必定需要按照一定规则在通道之间进行切换,由此引出以下内容

单个ADC模块

> [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8bEHqidd-1650267479075)(./image/ADC模块框架.png)]

  • 根据上图我们可以大致了解单个ADC模块内部的原理,ADC模块的外部通道可设置为规则通道组或则注入通道组,在接收到触发信号后ADC模块便会对相应的外部输入通道进行采样转换,其转换后得到的数值分别放入规则数据寄存器(1个)以及注入规则寄存器(4个)中
  1. 规则组和注入组
  • 若要使用外部通道来进行采样转换,则需要先对其进行分组设置,因为不同分组的优先级以及转换结果存放的位置等是不同的;规则通道组和注入通道组都可以设置1个或者多个外部通道,并且分组内的通道也需进行排序编号
    • 规则组:最多可以设置16个通道(该芯片只有10个外部通道,所以最多10个),使用时需要先设置规则组的长度(ADC_RSQ0寄存器的RL[3:0]位)以及规则组内各个通道的排序编号(ADC_RSQ0~ADC_RSQ2寄存器)
    • 注入组:最多可以设置4个通道,使用时需要先设置注入组的长度(ADC_ISQ寄存器的IL[1:0]位)以及注入组内各通道的排序编号(ADC_ISQ寄存器)
  1. 转换模式
  • 现在我们已经将要使用的外部通道进行了分组设置,此时我们便建立了外部输入通道与ADC模块的联系,目前我们是假设只有1个ADC模块,若我们只是使用了1个外部通道,那毫无疑问ADC模块可以专心致志的对该通道进行采样转换;但是若使用的通道大于1个,那这些外部通道就需要共用1个ADC模块,因此ADC模块需要在不同的外部通道之间进行切换,这个时候就需要制定一些规则,即转换模式

  • 当只需要对1个外部通道进行采样时,只需要设置以下两种模式中的一种:

    • 单次转换模式:该模式既能运行在规则组内,也能运行在注入组内;在该模式下,每次接收到触发信号便会对分组内排序编号为0(即第1个转换通道,由ADC_RSQ2寄存器的RSQ0[4:0]位或
      ADC_ISQ寄存器的ISQ3[4:0]位规定)进行1次采样转换
      > [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-57oKIqs3-1650267479076)(./image/单次转换模式.png)]

    • 连续转换模式:该模式运行在规则组内;在该模式下,只需要接收1次触发信号,便会对分组内排序编号为0(即第1个转换通道,由ADC_RSQ2寄存器的RSQ0[4:0]位规定)进行连续的采样转换
      > [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sz5VGpn5-1650267479077)(./image/连续转换模式.png)]

  • 当需要对多个外部通道进行采样时,除了需要设置以上两种模式外,还需进一步设置以下两种模式:

    • 扫描转换模式:该模式可以运行在规则组或者注入组内;顾名思义,在该模式下ADC会根据之前设置好的组内各通道的排序编号依次进行采样;值得注意的是,该模式需要与连续转换模式搭配使用,当连续扫描模式被禁用时,每次接收到触发信号后,ADC模块只会将组内所有通道依次采样依次,当连续扫描模式使能时,只需要接收1次触发信号,ADC模块便会按照顺序对组内通道进行循环采样
      > [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pBOw35Wj-1650267479078)(./image/扫描转换模式1.png)]

    > [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Tt5iT9c2-1650267479081)(./image/扫描转换模式2.png)]

    • 间断模式:该模式运行在规则组与注入组下的效果是不同的;在规则组中设置该模式时,则会将规则组内的通道再一次进行细分,分为长度为n(由ADC_CTL0寄存器的DISCNUM[2:0]位设置且n<=8)短序列,每次收到触发信号便会对1个细分序列内的通道进行采样,依次采样所有细分序列,直到分组内所有通道都转换完成;在注入组中设置该模式时,则每次收到触发信号便对组内的1个通道进行采样,依次进行,直到组内所有通道转换完成;注意规则组和注入组不能同时工作在间断模式
      > [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aEDjeRRi-1650267479082)(./image/间断转换模式.png)]
  1. 注入通道管理
  • 自动注入:在规则组通道之后,注入组通道被自动转换
  • 触发注入:在规则通道转换时,若注入通道被触发,则取消当前转换,转而进行注入转换,待注入转换完成便返回上次被取消的转换处重新开始

多个ADC模块

> [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d4lRlZgP-1650267479083)(./image/ADC同步框图.png)]

  1. 同步模式
  • 上面我们了解了单个ADC模块的工作模式,但是在芯片有2个ADC模块,那在同时使用这2个ADC模块时,我们也不可避免的遇到它们之间的协调问题,此时我们也需要制定一些规则,即同步模式

  • 在处于同步模式时,ADC0为主机,ADC1为从机;注意,当主ADC配置为由外部时间触发时,从ADC必须配置为软件触发,从而避免错误的触发引起不必要的转换,此外主ADC和从ADC的外部触发必须被使能;还有,即使DMA不使用也需要将DMA置位;

  • 同步模式具体分为:

    • 独立模式:该模式下ADC同步被忽略,每个ADC都独立工作、

    • 规则并行模式:在该模式下,每次主ADC接收到触发信号,主ADC模块和从ADC模块便并行地对各自规则组内的通道进行依次采样,直到分组内的通道都采样完成;注意两路ADC不能同时对同一通道进行采样,且在并行模式下ADC0和ADC1并行采样的两个通道需要设置为准确的相同的采样时间
      > [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5t7aAiBF-1650267479084)(./image/规则并行模式.png)]

    • 注入并行模式:并行对各自注入组内的通道进行依次采样,细节同上
      > [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s0sjfz03-1650267479085)(./image/注入并行模式.png)]

    • 快速交叉模式:此模式应用于规则组(通常只有一个通道);在该模式下,每次主ADC收到触发信号后,ADC1立即启动,ADC0在7个ADC时钟周期后启动,此时如果ADC0和ADC1的连续转换模式都使能,那两个ADC都会连续地对各自的规则通道组进行采样转换
      > [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lBcaZYYf-1650267479086)(./image/快速交叉模式.png)]

    • 慢速交叉模式:此模式应用于规则组(通常只有一个通道);在该模式下,每次主ADC收到触发信号后,ADC1立即启动,ADC0在14个ADC时钟周期后启动;此时虽然两个ADC也都是连续的对各自的规则通道组进行采样,但不能将ADC设置为连续转换模式,否则无法满足间隔14个ADC时钟周期的要求
      > [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cUNBBWAE-1650267479087)(./image/快速交叉模式.png)]

    • 交替触发模式:此模式运用于注入组;若两个ADC的间断转换模式被禁止,当主ADC第1次接收到触发信号,ADC0注入组的所有通道被转换,当主ADC第2次接收到触发信号,ADC1注入组的所有通道被转换,以此类推;若两个ADC的间断转换模式使能,当主ADC第1次接收到触发信号时转换ADC0第1个注入通道,当主ADC第2次接收到触发信号时转换ADC1的第1个注入通道,当主ADC第3次接收到触发信号时转换ADC0的第2个通道,当主ADC第4次接收到触发信号时转换ADC1的第2个通道,以此类推
      > [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EmnLl7zV-1650267479087)(./image/交替触发模式1.png)]

    > [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IHVppeuX-1650267479088)(./image/交替触发模式2.png)]

    • 此外还有以上模式的组合体:规则并行和注入并行组合模式、规则并行与交替触发组合模式、注入并行和交叉组合模式

其他设置

  • 由上所述我们已经了解了ADC使用的大致方法,此外还有一些具体的配置操作
  1. 因为在使用ADC时其外部条件并不是一成不变的,所以在上电初始化ADC时应该先对其进行校准,在ADC模块中带有一个前置校准功能,通过设置ADC_CTL1寄存器中的CLB位启动校准,注意,在校准期间不能使用ADC,必须等到校准完成后
  2. ADC时钟有RCU时钟控制器提供
  3. 通过设置ADC_CTL1寄存器中的ADCON位可以使能或者禁止ADC
  4. 模拟看门狗:当所监视的通道超过或低于所设置的阈值的范围时,便会触发相应的中断
  5. 数据对齐:可设置为高字节对齐或者低字节对齐
  6. 可编程的采样时间:可以通过 ADC_SAMPT0和ADC_SAMPT1寄存器对每个通道的采样时间进行设置,从而可以间接调整采样频率
  7. 外部触发
  • 既然要对外部输入通道进行采样,那我们必须告诉芯片什么时候开始采样,这个信号便是触发信号,我们可以通过ADC_CTL1寄存器的ETSRC[2:0]位来设置规则组的外部触发源,通过ADC_CTL1寄存器的ETSIC[2:0]位来设置注入组的外部触发源
    > [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vns4r2LC-1650267479089)(./image/外部触发1.png)]

> [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RT4GU6Yl-1650267479090)(./image/外部触发2.png)]

  1. DMA请求:ADC在规则组一个通道转换结束后产生一个DMA请求,DMA接收到请求后可以将转换的数据从ADC_RDATA寄存器传输到用户指定的目的地址
  2. 温度传感器和内部参考电压VREFINT
  3. 可编程分辨率(DRES)-快速转换模式
  4. 片上硬件过采样
  5. 计算采样值对应的模拟数值
  • 当外部信号直接连接到ADC的外部输入端口时(外部电路增益Gain = 1),此时根据之前设置的分辨率(n位),以12位为例:
    • 外部输入电压 = (VREF+) * (采样转换数值 / (2^n - 1)) * Gain
    • 外部输入电流 = 外部输入电压 / 电阻
  • 4
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值