打印
[牛人杂谈]

M0518的ADC参考电压

[复制链接]
835|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主

参考电压控制寄存器(VREFCR),只有BIT4是有效的,ADC_VREFSEL

ADC 参考电压源控制 (写保护)
0 = ADC 参考电压源来自 VREF 管脚
1 = ADC 参考电压源来自AVDD
注:该位受保护,编程该位时,需要依次向地址0x5000_0100写入“59h”, “16h”, “88h”,该操
作参考寄存器REGWRPROT(地址GCR_BA+0x100)


使用特权

评论回复
沙发
xixi2017|  楼主 | 2020-5-30 18:51 | 只看该作者
复位值为0,0 = ADC 参考电压源来自 VREF 管脚

使用特权

评论回复
板凳
xixi2017|  楼主 | 2020-5-30 18:52 | 只看该作者
  /**
     * VREFCR
     * ===================================================================================================
     * Offset: 0x28  VREF Control Register
     * ---------------------------------------------------------------------------------------------------
     * |Bits    |Field     |Descriptions
     * | :----: | :----:   | :---- |
     * |[4]     |ADC_VREFSEL|ADC VREF Path Control (Write Protect)
     * |        |          |0 = ADC VREF is from VREF pin.
     * |        |          |1 = ADC VREF is from AVDD.
     * |        |          |Note: This bit is the protected bit, and programming it needs to write "59h", "16h", and "88h" to address 0x5000_0100 to disable register protection.
     * |        |          |Refer to the register REGWRPROT at address GCR_BA+0x100.
     */
    __IO uint32_t VREFCR;

使用特权

评论回复
地板
xixi2017|  楼主 | 2020-5-30 18:53 | 只看该作者
头文件有以上定义,所以我们可以通过这个寄存器操作。

使用特权

评论回复
5
xixi2017|  楼主 | 2020-5-30 18:53 | 只看该作者
另外还有
/* GCR VREFCR Bit Field Definitions */
#define SYS_VREFCR_ADC_VREFSEL_Pos              4                                       /*!< GCR_T::VREFCR: ADC_VREFSEL Position */
#define SYS_VREFCR_ADC_VREFSEL_Msk              (1ul << SYS_VREFCR_ADC_VREFSEL_Pos)     /*!< GCR_T::VREFCR: ADC_VREFSEL Mask */

使用特权

评论回复
6
xixi2017|  楼主 | 2020-5-30 18:55 | 只看该作者
所以这个操作可以表示为
VREFCR |=SYS_VREFCR_ADC_VREFSEL_Msk;
//这对应ADC VREF is from AVDD
或者
VREFCR &=~SYS_VREFCR_ADC_VREFSEL_Msk;
这就是清零恢复默认的Vref

使用特权

评论回复
7
xixi2017|  楼主 | 2020-5-30 18:56 | 只看该作者
记住了,一定要放在
    /* Unlock protected registers */
    SYS_UnlockReg();

//放代码

    /* Lock protected registers */
    SYS_LockReg();

使用特权

评论回复
8
xixi2017|  楼主 | 2020-5-30 18:56 | 只看该作者
或者参考官方例子,放在   
    SYS_Init();
函数内

使用特权

评论回复
9
mintspring| | 2020-5-30 19:30 | 只看该作者
总结的不错,又学了个方法

使用特权

评论回复
10
eyu66| | 2020-5-31 18:35 | 只看该作者
xixi2017 发表于 2020-5-30 18:55
所以这个操作可以表示为
VREFCR |=SYS_VREFCR_ADC_VREFSEL_Msk;
//这对应ADC VREF is from AVDD

VREFCR |=SYS_VREFCR_ADC_VREFSEL_Msk;
请问上面的“Msk"是什么的缩写,代表什么意思?

使用特权

评论回复
11
gejigeji521| | 2020-6-3 20:54 | 只看该作者
eyu66 发表于 2020-5-31 18:35
VREFCR |=SYS_VREFCR_ADC_VREFSEL_Msk;
请问上面的“Msk"是什么的缩写,代表什么意思? ...

应该是mask的缩写。
意思是蒙版,学过PS应该就明白这个概念,就是用mask盖住整个寄存器,只会显示某个部分。

使用特权

评论回复
12
antusheng| | 2020-6-4 21:18 | 只看该作者
真是大开眼界。

使用特权

评论回复
13
观海| | 2020-6-6 14:21 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
14
guanjiaer| | 2020-6-6 14:21 | 只看该作者
需要注意一下细节

使用特权

评论回复
15
heimaojingzhang| | 2020-6-6 14:22 | 只看该作者
只有两种参考电压

使用特权

评论回复
16
keaibukelian| | 2020-6-6 14:22 | 只看该作者
感谢分享 呵呵

使用特权

评论回复
17
labasi| | 2020-6-6 14:22 | 只看该作者
内容还不错

使用特权

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

本版积分规则

132

主题

1843

帖子

1

粉丝