打印
[N32G43x]

比较器参考电压寄存器

[复制链接]
770|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 yangjun4618 于 2021-12-12 17:43 编辑

void COMP_SetRefScl(uint8_t Vv2Trim, bool Vv2En, uint8_t Vv1Trim, bool Vv1En)    函数能说明下吗    COMP_Initial.InmSel = COMP1_CTRL_INMSEL_VREF_VC1;当为此设置时,Vv2Trim和Vv1Trim 这两个值如何计算 是多少电压点。。
新手 请指导下
void COMP_Configuratoin(void)
{
    COMP_InitType COMP_Initial;

    /*Set dac2,dac1. because dac1/PA4 is share pin line,so only PB0 puls 0/1, can find out puls*/
    COMP_SetRefScl(16, true, 32, true);     
    /*Initial comp*/
    COMP_StructInit(&COMP_Initial);
    COMP_Initial.InpSel     = COMP1_CTRL_INPSEL_PB10;
    COMP_Initial.InmSel     = COMP1_CTRL_INMSEL_PA5;
    COMP_Initial.SampWindow = 50;
    COMP_Initial.Thresh     = 30;
    COMP_Init(COMP1, &COMP_Initial);
    COMP_Enable(COMP1, ENABLE);
}
能对COMP_SetRefScl这个函数说明下吗

使用特权

评论回复
沙发
沧桑小草| | 2021-12-15 13:58 | 只看该作者
本帖最后由 沧桑小草 于 2021-12-15 13:59 编辑

首先这个函数的原型如下:
void COMP_SetRefScl(uint8_t Vv2Trim, bool Vv2En, uint8_t Vv1Trim, bool Vv1En)
{
    __IO uint32_t tmp = 0;

    SetBitMsk(tmp, Vv2Trim << 8, COMP_VREFSCL_VV2TRM_MSK);
    SetBitMsk(tmp, Vv2En << 7, COMP_VREFSCL_VV2EN_MSK);
    SetBitMsk(tmp, Vv1Trim << 1, COMP_VREFSCL_VV1TRM_MSK);
    SetBitMsk(tmp, Vv1En << 0, COMP_VREFSCL_VV1EN_MSK);

    COMP->VREFSCL = tmp;
}

可以看到它操作的是VREFSCL寄存器(用户手册),以VREFSCL寄存器中的VV1TRM[5:0]为例,它是有6bit,最多就是2^6=64,假设你写进去的值是16,那么VC1的参考电压为3.3v * (16/64)

微信图片_20211215135920.png (122.83 KB )

微信图片_20211215135920.png

使用特权

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

本版积分规则

5

主题

11

帖子

0

粉丝