Files

ESP Hardware Abstraction Layer for PCNT Peripherals

Note

This component is currently in beta. Its API, behavior, and compatibility may change at any time and without notice; backward compatibility is not guaranteed. Use caution when integrating into production systems.

Overview

The esp_hal_pcnt component provides a Hardware Abstraction Layer for PCNT (Pulse Counter) peripherals across ESP-IDF supported targets. This HAL enables efficient counting of external pulses and signals, with support for quadrature encoders, frequency measurement, and position tracking applications.

Architecture

The PCNT HAL is structured in two main sub-layers:

  1. HAL Layer (Upper): Defines the operational steps and data structures required to control PCNT peripherals (e.g., initialization).

  2. Low-Level Layer (Bottom): Serves as a translation layer between the HAL and the register files defined in the soc component, handling target-specific register configurations.

Features

Core Counting Features

  • Bidirectional pulse counting (increment/decrement)
  • Configurable counting range with high/low limits
  • Counter value read operations
  • Counter clear and reset functionality
  • Start/stop control for counting operations

Channel Configuration

  • Edge action configuration:
    • Hold: Keep current count value
    • Increase: Increment count value
    • Decrease: Decrement count value
  • Level action configuration:
    • Keep: Maintain current count mode
    • Inverse: Invert count direction
    • Hold: Freeze count value

Event Detection

  • Threshold events
  • High/low limit events
  • Zero-crossing events
  • Watch-point events
  • Step events

Signal Processing

  • Glitch filtering with configurable filter width

Usage

The HAL functions primarily serve ESP-IDF PCNT peripheral drivers such as esp_driver_pcnt component.

Advanced developers can use these interfaces directly when implementing custom pulse counting applications, with the understanding that API stability is not guaranteed.

Dependencies

  • soc: Provides chip-specific register definitions and peripheral capabilities
  • hal: Core hardware abstraction utilities and macros