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);