pulse_encoder示例

源码路径:example\rt_device\pulse_encoder

支持的平台

例程可以运行在以下开发板.

  • sf32lb58-lcd_n16r64n4

概述

  • 脉冲编码器能够精确地测量旋转轴的位置。每转动一定角度,编码器就会生成一个脉冲信号。通过计算这些脉冲的数量,可以确定旋转轴的当前位置。

  • GPtimerd的encoder模式让外部脉冲编码器控制定时器的CNT增减示例

例程的使用

硬件需求

运行该例程前,需要准备一块本例程支持的开发板

例程的使用

编译和烧录

切换到例程project目录,运行scons命令执行编译:

scons –board=sf32lb58-lcd_n16r64n4 -j8

切换到例程project/build_xx目录,运行download.bat

build_sf32lb58-lcd_n16r64n4_hcpu\download.bat

关于编译、下载的详细步骤,请参考快速上手的相关介绍。

每秒读取GPtimer被外接设备控制cnt增减下的值

例程输出结果展示:

  • log输出:

encoder_example_init!
succeed encoder_example_init
Start Get_count!
encoder_count:0
encoder_count:2
encoder_count:5
encoder_count:-4
msh />
  • 本例程使用轮询方式每秒读取cnt值

encoder的通道选择参数修改

版型名称

GPTIMx_CHx

引脚(物理位置)

525

GPTIM1_CH1

PAD_PA24 (19)

GPTIM1_CH2

PAD_PA25 (21)

587:

GPTIM1_CH1

PAD_PA82 (CONN2 22)

GPTIM1_CH2

PAD_PA51 (CONN2 28)


#ifdef SF32LB52X    
    HAL_PIN_Set(PAD_PA24, GPTIM1_CH1, PIN_PULLUP, 1);
    HAL_PIN_Set(PAD_PA25, GPTIM1_CH2, PIN_PULLUP, 1);
#elif defined SF32LB58X
    HAL_PIN_Set(PAD_PA82, GPTIM1_CH1, PIN_PULLUP, 1);
    HAL_PIN_Set(PAD_PA51, GPTIM1_CH2, PIN_PULLUP, 1);
#endif


注意:

  1. 52x芯片,可以配置到任意带有PA_TIM功能的IO作为encoder通道使用

  2. HAL_PIN_Set 最后一个参数为hcpu/lcpu选择, 1:选择hcpu,0:选择lcpu

异常诊断

如果未能出现预期的log和旋转无法增减cnt,可以从以下方面进行故障排除:

  • 硬件连接是否正常

  • 管脚配置是否正确

参考文档

  • 对于rt_device的示例,rt-thread官网文档提供的较详细说明,可以在这里添加网页链接,例如,参考RT-Thread的RTC文档

更新记录

版本

日期

发布说明

0.0.1

10/2024

初始版本

0.0.2

12/2024

2.0