【WCH蓝牙系列芯片】-基于CH572开发板—编码器接口使用说明

------------------------------------------------------------------------------------------------------------------------------------

  在CH572芯片使用过程中,CH572手册中有说明可以支持编码器模式(ENC MODE),提供 2 路通道,用于捕捉旋转编码器信号进行编码的功能。2 路通道从 I/O 口捕捉 2 路旋转编码器信号进行编码,可在一路信号边沿处比较另一路信号的高低电平,判断编码方向,其时钟来源为 LSI。

image

  这次可以结合编码器的程序和鼠标滚轮编码器设备的结合,来讲解通过CH572的这个两个编码器通道,来捕捉鼠标滚轮的前进和后退的状态,还有获取当前的编码器的计数值。鼠标滚轮里的微型编码器通常只有三个信号端子,两个A和B的触电,还有一个C的公共端。可以通过它输出两路具有先后关系的开关信号,让CH572判断转动方向CH572 在一路出现边沿时读取另一路的电平,从而决定加计数还是减计数。


#if ENC_MODE   /* 编码器.*/

    /* ENC检测高电平信号,配置IO为下拉输入 */
    GPIOA_ModeCfg(GPIO_Pin_7, GPIO_ModeIN_PD);
    GPIOA_ModeCfg(GPIO_Pin_2, GPIO_ModeIN_PD);

    /* ENC模式配置,设定计数终值为最大值,在T1,T2边沿计数模式 */
    ENC_Config(ENABLE, 0xFFFF, Mode_T1T2);

    /* 编码器中断 */
    ENC_ITCfg(ENABLE, RB_IE_DIR_INC);       // 使能前进中断
    ENC_ITCfg(ENABLE, RB_IE_DIR_DEC);       // 使能后退中断
    PFIC_EnableIRQ(ENCODE_IRQn);

    while(1)
    {
        DelayMs(300);
        PRINT("%d\n", ENC_GetCurrentDir);       // 获取编码器当前方向
        PRINT("cnt:%d\n",ENC_GetCurrentCount);  // 获取编码器当前计数值
    }
#endif

  在程序中,配置编码器的两个通道引脚(PA2.PA7)下拉输入,这样公共端C就得接3.3V电平,这样当PA2、PA7与C接通就是逻辑电平1,与V断开就是逻辑电平0。

在程序中,在配置ENC的模式设置,设置计数值的最大值,还有边沿计数模式,Mode_T1T2是两路输入的有效边沿都参与计数;在模式选中可以看到有四种,停止边沿计数、T2边沿、T1边沿和T1、T2两个边沿。

image

在编码器中断使能中,可以使能编码器当前是后退中断,还是前进中断。在中断服务函数中,会针对前进事件和后退事件来进行不同的处理和判断。

image

__INTERRUPT
__HIGH_CODE
void ENCODER_IRQHandler( void )
{
    if(ENC_GetITFlag(RB_IF_DIR_INC))   //检查前进事件是否发生
    {
        PRINT("INC\n");
        ENC_ClearITFlag(RB_IF_DIR_INC);  //清楚标志
    }
    if(ENC_GetITFlag(RB_IF_DIR_DEC))  //检查后退事件是否发生
    {
        PRINT("DEC\n");
        ENC_ClearITFlag(RB_IF_DIR_DEC);  //清楚标志
    }
}

  在主函数中,来读取当前的计数值和当前的计数方向,方向值 0 表示前进,1 表示后退。

  可以通过逻辑分析仪抓包一下PA2.PA7的波形参数,PA7是CH0,PA2是CH1,可以看出来,PA7 先下降,PA2 后下降,状态从11→01进行计数值加1,状态从01→00进行计数值加1,最初两组触点都接到 C;随后 B 触点断开,PA7 变低;再后 A 触点断开,PA2 变低。

状态 11:PA7 高,PA2 高
            ↓ PA7 下降,PA2 仍高
状态 01:PA7 低,PA2 高       加计数方向
            ↓ PA2 下降,PA7 已低
状态 00:PA7 低,PA2 低       加计数方向

image

通过串口日志也可以看到这个计数值得变化和编码器状态情况。

image

  这个是鼠标编码器后退减数得波形图和串口日志输出

image

image

 

 

posted on 2026-10-08 19:45  凡仕  阅读(3)  评论(0)    收藏  举报