打印
[DemoCode下载]

M051的ADC模式操作

[复制链接]
953|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
heisexingqisi|  楼主 | 2019-2-14 23:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  * [url=home.php?mod=space&uid=247401]@brief[/url] This API configures ADC module to be ready for convert the input from selected channel
  * @param[in] adc Base address of ADC module
  * @param[in] u32InputMode Decides the ADC analog input mode. Valid values are:
  *                          - \ref ADC_ADCR_DIFFEN_SINGLE_END      :Single end input mode
  *                          - \ref ADC_ADCR_DIFFEN_DIFFERENTIAL    :Differential input type
  * @param[in] u32OpMode Decides the ADC operation mode. Valid values are:
  *                       - \ref ADC_ADCR_ADMD_SINGLE               :Single mode.
  *                       - \ref ADC_ADCR_ADMD_BURST                :Burst mode.
  *                       - \ref ADC_ADCR_ADMD_SINGLE_CYCLE         :Single cycle scan mode.
  *                       - \ref ADC_ADCR_ADMD_CONTINUOUS           :Continuous scan mode.
  * @param[in] u32ChMask Channel enable bit. Each bit corresponds to a input channel. Bit 0 is channel 0, bit 1 is channel 1..., bit 7 is channel 7.
  * [url=home.php?mod=space&uid=266161]@return[/url]  None
  * [url=home.php?mod=space&uid=536309]@NOTE[/url] M051 series MCU ADC can only convert 1 channel at a time. If more than 1 channels are enabled, only channel
  *       with smallest number will be convert.
  * @note This API does not turn on ADC power nor does trigger ADC conversion
  */
void ADC_Open(ADC_T *adc,
              uint32_t u32InputMode,
              uint32_t u32OpMode,
              uint32_t u32ChMask)
{

    ADC->ADCR = (ADC->ADCR & (~(ADC_ADCR_DIFFEN_Msk | ADC_ADCR_ADMD_Msk))) | \
                u32InputMode | \
                u32OpMode;

    ADC->ADCHER = (ADC->ADCHER & ~ADC_ADCHER_CHEN_Msk) | (u32ChMask);

    return;
}


沙发
heisexingqisi|  楼主 | 2019-2-14 23:48 | 只看该作者
一共四种模式,那么Burst mode模式是什么情况呢?

使用特权

评论回复
板凳
heisexingqisi|  楼主 | 2019-2-14 23:50 | 只看该作者
有人知道吗

使用特权

评论回复
地板
heisexingqisi|  楼主 | 2019-2-14 23:51 | 只看该作者
A/D转换器支持四种工作模式:单次转换模式、突发转换模式、单周期扫描模式和连续扫描模式。

使用特权

评论回复
5
heisexingqisi|  楼主 | 2019-2-14 23:53 | 只看该作者
所以这个就是  突发模式:A/D 转换采样和转换在指定单个通道进行,并将结果顺序地存入FIFO。

使用特权

评论回复
6
heisexingqisi|  楼主 | 2019-2-14 23:53 | 只看该作者
突发模式
在突发模式下, A/D 转换会采样和转换指定的单个通道,并有序存储在FIFO(最多8 次采样)。操
作步骤如下:
1) 软件或外部触发置ADCR 的ADST 位为1, 在序号最小的通道上开始A/D 转换。
2) 当使能的通道A/D 转换完成,结果有序送入FIFO,可以从A/D 数据寄存器0 得到。
3) 当FIFO 中多于4 个采样值,ADSR 的ADF 位置1。如果此时ADIE 位置1,在A/D 转换完成时就
会产生ADC 中断请求。
4) 只要ADST 位保持为1,步骤2 到步骤3 会一直重复. 当ADST 位清零时,A/D 转换停止,A/D 转换
器进入空闲状态。
注:在突发模式下,如果软件使能多个通道, 则序号最小通道进行转换,其他通道不转换。

使用特权

评论回复
7
heisexingqisi|  楼主 | 2019-2-15 08:31 | 只看该作者
单周期扫描模式
在单周期扫描模式下,将进行一次从被使能的最小序号通道向最大序号通道的A/D 转换,具体流程如
下:
1) 软件或外部触发使ADCR 寄存器的ADST 位置位,开始从最小序号通道到最大序号通道的A/D 转
换。
2) 每路A/D 转换完成后,A/D 转换数值将有序装载到相应数据寄存器中。
3) 当所选择的通道转换完成后,ADSR 的ADF 位置1,如果ADC 中断使能,则ADC 中断发生。
4) A/D 转换结束, ADST 位自动清0 ,A/D 转换器进入空闲模式。如果在所有被使能通道完成转换
前ADST 清0 ,A/D 转换将完成当前转换,并且序号最小的通道的结果将不可预知。

使用特权

评论回复
8
heisexingqisi|  楼主 | 2019-2-15 08:37 | 只看该作者
连续扫描模式
在连续扫描模式下,A/D 转换在通过ADCHER 寄存器中的那些CHEN 位被使能的通道上顺序进行(最多
8 个ADC 通道)。操作步骤如下:
1) 通过软件或外部触发使ADCR 寄存器的ADST 位置位, 开始最小序号通道到最大序号通道的A/D
转换。
2) 每路A/D 转换完成后, A/D 转换数值将装载到相应数据寄存器中。
3) 当被选择的通道数都完成了一次转换后,ADF 位(ADSR 寄存器)置1。如果ADC 中断使能,则
ADC 中断发生。如果软件没有清零ADST 位,则在使能的具有最小通道号的通道上的转换又一次开始。
4) 只要ADST 位保持为1,步骤2 到步骤3 会一直重复。当ADST 清0, ADC 控制器将完成当前转换,
被使能的最小序号ADC 通道的结果将不可预料。

使用特权

评论回复
9
heisexingqisi|  楼主 | 2019-2-15 08:37 | 只看该作者

使用特权

评论回复
10
heisexingqisi|  楼主 | 2019-2-15 08:42 | 只看该作者
单次转换模式
在单次转换模式下,A/D 转换只在指定的通道上执行一次,操作流程如下:
1) 当通过软件或外部触发输入使ADCR 的ADST 置位开始A/D 转换。
2) 当A/D 转换完成, A/D 转换的数据值将存储于相应通道的A/D 数据寄存器中。
3) A/D 转换完成, ADSR 的ADF 位置1。若此时ADIE 位置1, 将产生ADC 中断。
4) A/D 转换期间,ADST 位保持为1。A/D 转换结束,ADST 位自动清0,A/D 转换器进入空闲模式。
注:在单次转换模式时,如果软件使能多于一个通道,序号最小的通道被转换,其他通道被忽略。

使用特权

评论回复
11
heisexingqisi|  楼主 | 2019-2-15 08:43 | 只看该作者
外部触发输入采样和 A/D 转换时间
A/D 转换可通过外部引脚脚请求触发。当ADCR.TRGEN 置位,使能ADC 外部触发功能,配置
TRGS[1:0] 位为00b 选择从STADC 引脚输入外部触发。
软件设定TRGCOND[1:0] 选择触发方式为上升沿/下降沿或低电平/高电平触发.若选择电平触发条
件,STADC 需保持定义的电平状态至少8 个PCLK 周期。在第9 个PCLK 时钟来临时ADST 位置位,开
始转换,电平触发模式状态下,如果外部触发输入保持为有效状态,转换连续进行。仅当外部触发条件消
失才停止,若选择边沿触发模式,高或低电平状态至少需保持4 PLCK 周期。脉冲低于该值时,将被忽略。

使用特权

评论回复
12
heisexingqisi|  楼主 | 2019-2-15 08:43 | 只看该作者
比较模式下 AD 转换结果监控
NuMicro M051 系列提供2 个比较寄存器ADCMPR0 和1 ,来监控来自A/D 转换模块的最多两个
指定通道的转换结果, 可参考图6.11-7. 可通过软件设定CMPCH(ADCMPRx[5:0])选择监控通道,
CMPCOND 位用于检查转换置结果小于或大于等于在CMPD[11:0]中指定的值. 当被CMPCH 指定的通道完
成转换时,比较就被自动触发且执行一次。当比较结果和设定值相匹配, 比较匹配计数器将加1, 否则
比较匹配计数器就清0。当计数器的值和设定值(CMPMATCNT+1)匹配,CMPF 位将置1, 如果CMPIE
置位将产生ADC_INT 中断请求。在扫描模式下,软件可使用该功能来监控外部模拟输入引脚电压变化而
不会增加程序负载。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

116

主题

2531

帖子

2

粉丝