2.15. GPCNT
Overview
展示了GPCNT的使用示例和常见问题。
2.15.1. 应用示例
示例演示:
gpcnt 为高速频率采样模块。采样范围20hz-200M 采样精度99.9。
example: 具体示例代码详见 apps/common/example/peripheral/gpcnt/gpcnt_test.c
,示例工程实现需在 apps/demo/demo_DevKitBoard/include/demo_config.h
中开启宏 USE_GPCNT_TEST_DEMO
Note
1.开启宏之后,还要在对应的 board.c
文件中添加GPCNT基本配置。
#include "gpcnt.h"
const struct gpcnt_platform_data gpcnt_data = {
.gpcnt_gpio = IO_PORTC_07,
.gss_clk_source = GPCNT_PLL_CLK,//480M
.ch_source = GPCNT_INPUT_CHANNEL1,
.cycle = CYCLE_15,
};
{"gpcnt", &gpcnt_dev_ops, (void *) &gpcnt_data },
2.15.2. 常见问题
GPCNT 采样能否采集内部时钟?
如果多io采集 只需要open后
dev_ioctl(gpcnt_hd, IOCTL_SET_GPIO, gpio0); dev_ioctl(gpcnt_hd, IOCTL_SET_CYCLE, IOCTL_SET_GPIO); dev_ioctl(gpcnt_hd, IOCTL_SET_CYCLE, CYCLE_15); dev_ioctl(gpcnt_hd, IOCTL_SET_GSS_CLK_SOURCE, GPCNT_OSC_CLK); dev_ioctl(gpcnt_hd, IOCTL_SET_CH_SOURCE, GPCNT_INPUT_CHANNEL4); dev_ioctl(gpcnt_hd, IOCTL_GET_GPCNT, (u32)&gpcnt); dev_ioctl(gpcnt_hd, IOCTL_SET_GPIO, gpio1); dev_ioctl(gpcnt_hd, IOCTL_SET_CYCLE, IOCTL_SET_GPIO); dev_ioctl(gpcnt_hd, IOCTL_SET_CYCLE, CYCLE_15); dev_ioctl(gpcnt_hd, IOCTL_SET_GSS_CLK_SOURCE, GPCNT_OSC_CLK); dev_ioctl(gpcnt_hd, IOCTL_SET_CH_SOURCE, GPCNT_INPUT_CHANNEL4); dev_ioctl(gpcnt_hd, IOCTL_GET_GPCNT, (u32)&gpcnt);