rdec编码器
📎 原始文档:https://www.kdocs.cn/l/cbSEJhQK3pxo rdec编码器
- rdec介绍 rdec为旋转编码器功能,sdk包含rdec支持两线输入,兼容phase_4、phase_2、phase_1三种模式(不同芯片支持不同模式),模块支持复用。
- rdec相关源码
- 硬件驱动方式
int rdec_init(struct rdec_config *rdec_cfg);//rdec功能初始化。
void rdec_deinit(int rdec_cfg_id);//rdec功能初始化取消。
void rdec_start(int rdec_cfg_id); //rdec功能启动。
void rdec_pause(int rdec_cfg_id); //rdec功能暂停。
void rdec_resume(int rdec_cfg_id);//rdec功能恢复。
rdec_get_value(int rdec_cfg_id); // 获取rdec计数值,有符号。
2. 软件方式
软件方式采用定时器捕获方式实现。具体代码为如下:
源码文件为:rdec_soft.rar
int rdec_soft_init(struct rdec_soft_config *cfg);
void rdec_soft_deinit(int id);
void rdec_soft_start(int id);
void rdec_soft_pause(int id);
void rdec_soft_rsume(int id);
int rdec_soft_get_value(int id);
- 测试示例 下面为硬件编码器方式的驱动方式,模式为PHASE_2代码示例
int usr_cfg_id; //当前配置的句柄(id号)
int data = 0; //编码器累计值
static void rdec_timer_test_func()
{
s8 dat = rdec_get_value(usr_cfg_id);
data += dat;
rdec_debug("data = %d, dat = %d\n", data, dat);
}
void rdec_test_func()
{
usr_timer_add(NULL, rdec_timer_test_func, 1000, 1); //1s读取一次编码器值
struct rdec_config usr_rdec_cfg = {
.ch = RDEC_0, //RDEC_0模块
.mode = RDEC_PHASE_2, //phase_2模式
.port_0 = IO_PORTC_00, //A相IO口
.port_1 = IO_PORTC_01, //B相IO口
.clk = -1, //给-1,使用默认时钟s
};
usr_cfg_id = rdec_init(&usr_rdec_cfg);
rdec_start(usr_cfg_id);
rdec_pause(usr_cfg_id);
}
This electronic documentation and any attachments are confidential and may be legally privileged or otherwise protected from disclosure. If you are not the intended recipient, please do not disclose the contents to anyone。
Thank you for your cooperation!
解析权归杰理所有!
The analysis right belongs to JieLi Technology Co., Ltd.