Driver: QDEC & PWM¶
1 功能概述¶
本文主要介绍PAN1080 EVB板QDEC外设模块的使用,检测外部PWM信号,触发QDEC计数。
2 环境要求¶
PAN1080 EVB 一块
USB-TypeC 线一条(用于供电和查看串口打印 Log)
硬件接线:
使用 USB 线,将 PC USB 与 EVB USB-TypeC(USB->UART)相连
使用杜邦线将 EVB 上的:
TX0 与 P00 相连
RX0 与 P01 相连
PC 软件: 串口调试助手(UartAssist)或终端工具(SecureCRT),波特率921600
3 编译和烧录¶
例程位置:zephyr\samples_panchip\drivers\qdec\qdec_pwm
使用 ZAL 工具可以对其进行编译、烧录、打开 VS Code 调试等操作。关于 ZAL 工具的详细介绍请参考:Zephyr APP Launcher 工具介绍。
4 演示说明¶
5 开发说明¶
5.2 初始QDEC¶
const struct device *qdec_dev = DEVICE_DT_GET(DT_NODELABEL(qdec));
5.3 配置QDEC¶
在“pan108xxb5_evb.overlay”文件中添加QDEC参数配置:
&qdec {
event-threshold = <100>;
polarity = "polarity-low";
resolution = "cnt-resolution-1x";
filter-threshold = "filter-threshold-3";
pinctrl-0 = <&p0_4_qdec_x0 &p0_5_qdec_x1>;
status = "okay";
};
Config Type |
Description |
---|---|
event-threshold |
设置qdec事件触发阈值(此处是100) |
polarity |
设置qdec电平极性,可设置为高或者低电平有效(此处是低电平有效) |
resolution |
设置qdec分辨率,可设置为1x、2x、4x(此处是1x) |
filter-threshold |
设置qdec短脉冲过滤,设置范围为0~7(此处是3) |
QDEC PIN脚配置:
pinctrl-0 = <&p0_4_qdec_x0 &p0_5_qdec_x1>;
配置X0、X1两个通道。
同理配置Y0、Y1和Z0、Z1两个通道
pinctrl-0 = <&p0_4_qdec_x0 &p0_5_qdec_x1 &p0_6_qdec_y0 &p0_7_qdec_y1 &p2_0_qdec_z0 &p2_1_qdec_z1>;
5.4 QDEC中断配置使能¶
通道配置:
uint8_t channel = QDEC_CNT_IDX_X;
qdec_clear_event_cnt(qdec_dev, channel);
代码默认配置通道X,也可配置成QDEC_CNT_IDX_Y、QDEC_CNT_IDX_Z。
qdec_irq_add_cb(qdec_dev, qdec_irq_cb);
qdec_clear_int_msk(qdec_dev, ENABLE, QDEC_INT_CNT_OVERFLOW_Msk | QDEC_INT_CNT_UNDERFLOW_Msk);
qdec_clear_event_cnt(qdec_dev, channel);
qdec_clear_int_flag(qdec_dev, QDEC_FUNC_ALL);
qdec_clear_raw_int_flag(qdec_dev, QDEC_FUNC_ALL);
qdec_set_enable(qdec_dev, ENABLE, QDEC_EN_Msk | QDEC_FILTER_EN_Msk | (QDEC_CHANNEL_X_EN_Msk << channel) | QDEC_EVENT_EN_Msk);
注册中断回调函数“qdec_irq_cb”,配置通道X、向上计数和向下计数中断,清中断标志位。
6 RAM/Flash资源使用情况¶
Memory region Used Size Region Size %age Used
FLASH: 19052 B 1020 KB 1.82%
SRAM: 3920 B 64 KB 5.98%
IDT_LIST: 0 GB 2 KB 0.00%