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 演示说明¶
PAN1080 EVB板PIN脚接线说明:
通道
PIN脚
PWM
通道X0
P04
P02 PWM CH2
通道X1
P05
P03 PWM CH3
通道Y0
P06
P02 PWM CH2
通道Y1
P07
P03 PWM CH3
通道Z0
P20
P02 PWM CH2
通道Z1
P21
P03 PWM CH3
例程中默认使用的是通道X0、和X1,向上计数和向下计数的结果如下图所示:
向上计数:
向下计数:
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%