|
| #define | AM335X_EQEP_REGS (0x00000180) |
|
#define | AM335X_EQEP_0_REGS (AM335X_PWMSS0_MMAP_ADDR + AM335X_EQEP_REGS) |
|
#define | AM335X_EQEP_1_REGS (AM335X_PWMSS1_MMAP_ADDR + AM335X_EQEP_REGS) |
|
#define | AM335X_EQEP_2_REGS (AM335X_PWMSS2_MMAP_ADDR + AM335X_EQEP_REGS) |
|
#define | AM335x_EQEP_QPOSCNT 0x0 |
|
#define | AM335x_EQEP_QPOSINIT 0x4 |
|
#define | AM335x_EQEP_QPOSMAX 0x8 |
|
#define | AM335x_EQEP_QPOSCMP 0xC |
|
#define | AM335x_EQEP_QPOSILAT 0x10 |
|
#define | AM335x_EQEP_QPOSSLAT 0x14 |
|
#define | AM335x_EQEP_QPOSLAT 0x18 |
|
#define | AM335x_EQEP_QUTMR 0x1C |
|
#define | AM335x_EQEP_QUPRD 0x20 |
|
#define | AM335x_EQEP_QWDTMR 0x24 |
|
#define | AM335x_EQEP_QWDPRD 0x26 |
|
#define | AM335x_EQEP_QDECCTL 0x28 |
|
#define | AM335x_EQEP_QEPCTL 0x2A |
|
#define | AM335x_EQEP_QCAPCTL 0x2C |
|
#define | AM335x_EQEP_QPOSCTL 0x2E |
|
#define | AM335x_EQEP_QEINT 0x30 |
|
#define | AM335x_EQEP_QFLG 0x32 |
|
#define | AM335x_EQEP_QCLR 0x34 |
|
#define | AM335x_EQEP_QFRC 0x36 |
|
#define | AM335x_EQEP_QEPSTS 0x38 |
|
#define | AM335x_EQEP_QCTMR 0x3A |
|
#define | AM335x_EQEP_QCPRD 0x3C |
|
#define | AM335x_EQEP_QCTMRLAT 0x3E |
|
#define | AM335x_EQEP_QCPRDLAT 0x40 |
|
#define | AM335x_EQEP_REVID 0x5C |
|
#define | AM335x_EQEP_QEPCTL_UTE (1 << 1) |
|
#define | AM335x_EQEP_QEPCTL_QCLM (1 << 2) |
|
#define | AM335x_EQEP_QEPCTL_PHEN (1 << 3) |
|
#define | AM335x_EQEP_QEPCTL_IEL (1 << 4) |
|
#define | AM335x_EQEP_QEPCTL_SWI (1 << 7) |
|
#define | AM335x_EQEP_QEPCTL_PCRM (3 << 12) |
|
#define | AM335x_EQEP_QDECCTL_QSRC (3 << 14) |
|
#define | AM335x_EQEP_QDECCTL_XCR (1 << 11) |
|
#define | AM335x_EQEP_QDECCTL_SWAP (1 << 10) |
|
#define | AM335x_EQEP_QDECCTL_IGATE (1 << 9) |
|
#define | AM335x_EQEP_QDECCTL_QAP (1 << 8) |
|
#define | AM335x_EQEP_QDECCTL_QBP (1 << 7) |
|
#define | AM335x_EQEP_QDECCTL_QIP (1 << 6) |
|
#define | AM335x_EQEP_QDECCTL_QSP (1 << 5) |
|
#define | AM335x_EQEP_CLK_EN (1 << 4) |
|
#define | AM335x_EQEP_QEINT_UTO (1 << 11) |
|
#define | AM335x_EQEP_QFLG_UTO (1 << 11) |
|
#define | AM335x_EQEP_QFLG_MASK 0x0FFF |
|
#define | BBB_P8_11_MUX_QEP 4 |
|
#define | BBB_P8_12_MUX_QEP 4 |
|
#define | BBB_P8_15_MUX_QEP 4 |
|
#define | BBB_P8_16_MUX_QEP 4 |
|
#define | BBB_P8_31_MUX_QEP 2 |
|
#define | BBB_P8_32_MUX_QEP 2 |
|
#define | BBB_P8_33_MUX_QEP 2 |
|
#define | BBB_P8_35_MUX_QEP 2 |
|
#define | BBB_P8_39_MUX_QEP 3 |
|
#define | BBB_P8_40_MUX_QEP 3 |
|
#define | BBB_P8_41_MUX_QEP 3 |
|
#define | BBB_P8_42_MUX_QEP 3 |
|
#define | BBB_P9_25_MUX_QEP 1 |
|
#define | BBB_P9_27_MUX_QEP 1 |
|
#define | BBB_P9_41_MUX_QEP 1 |
|
#define | BBB_P9_42_MUX_QEP 1 |
|
#define | NANO_SEC_PER_SEC 1000000000 |
|
#define | SYSCLKOUT 100000000 |
|
| enum | BBB_QEP_COUNT_MODE { QUADRATURE_COUNT = 0
, DIRECTION_COUNT
, UP_COUNT
, DOWN_COUNT
} |
| | The set of possible eQEP Position Counter Input Modes. More...
|
| enum | BBB_QEP_QUADRATURE_MODE { ABSOLUTE = 0
, RELATIVE
} |
| | The set of possible modes for Quadrature decode.
|
| enum | bbb_qep_pin {
BBB_P8_11_2B_IN
, BBB_P8_12_2A_IN
, BBB_P8_15_2_STROBE
, BBB_P8_16_2_IDX
,
BBB_P8_31_1_IDX
, BBB_P8_32_1_STROBE
, BBB_P8_33_1B_IN
, BBB_P8_35_1A_IN
,
BBB_P8_39_2_IDX
, BBB_P8_40_2_STROBE
, BBB_P8_41_2A_IN
, BBB_P8_42_2B_IN
,
BBB_P9_25_0_STROBE
, BBB_P9_27_0B_IN
, BBB_P9_41_0_IDX
, BBB_P9_42_0A_IN
} |
| | The set of possible eQEP input pins.
|
|
| rtems_status_code | beagle_qep_init (BBB_PWMSS pwmss_id) |
| | Initialises the eQEP module of the specified PWMSS unit. This configures the clocks, sets up the interrupt handler and unit timer, The module is configured in Quadrature decode mode using absolute position by default.
|
| rtems_status_code | beagle_qep_enable (BBB_PWMSS pwmss_id) |
| | Enables the eQEP module of the specified PWMSS unit.
|
| rtems_status_code | beagle_qep_disable (BBB_PWMSS pwmss_id) |
| | Disables the eQEP module of the specified PWMSS unit.
|
| rtems_status_code | beagle_qep_pinmux_setup (bbb_qep_pin pin_no, BBB_PWMSS pwmss_id, bool pullup_enable) |
| | Configures a given pin for use with the eQEP function of the supplied PWMSS module.
|
| int32_t | beagle_qep_get_position (BBB_PWMSS pwmss_id) |
| | Returns the current position value of the eQEP function for the specified PWMSS module.
|
| rtems_status_code | beagle_qep_set_position (BBB_PWMSS pwmss_id, uint32_t position) |
| | Sets the initial position value of the eQEP function for the specified PWMSS module.
|
| rtems_status_code | beagle_qep_set_count_mode (BBB_PWMSS pwmss_id, BBB_QEP_COUNT_MODE mode) |
| | Sets the count mode for the eQEP module.
|
| BBB_QEP_COUNT_MODE | beagle_qep_get_count_mode (BBB_PWMSS pwmss_id) |
| | Gets the currently configured count mode for the eQEP module.
|
| BBB_QEP_QUADRATURE_MODE | beagle_qep_get_quadrature_mode (BBB_PWMSS pwmss_id) |
| | Returns the currently configured quadrature mode - either absolute, or relative.
|
| rtems_status_code | beagle_qep_set_quadrature_mode (BBB_PWMSS pwmss_id, BBB_QEP_QUADRATURE_MODE mode) |
| | Sets the quadrature mode to either absolute or relative.
|
| uint32_t | beagle_eqep_get_timer_period (BBB_PWMSS pwmss_id) |
| | Returns the the currently configured unit timer period.
|
| rtems_status_code | beagle_eqep_set_timer_period (BBB_PWMSS pwmss_id, uint64_t period, bbb_eqep_timer_callback timer_callback, void *user) |
| | Sets the unit timer period for the eQEP module. 0 = off, greater than zero sets the period.
|
eQEP (enhanced Quadrature Encoder Pulse) support API.
| #define AM335X_EQEP_REGS (0x00000180) |
For details of the Enhanced Quadrature Encoder Pulse (eQEP) Module refer to page 2511 of the TI Technical Reference Manual (https://www.ti.com/lit/ug/spruh73q/spruh73q.pdf)
This driver supports using the QEP modules in Quadrature-clock Mode. Direction-count Mode is not currently supported. Similarly the QEPI: Index or Zero Marker and QEPS: Strobe Input pins are not currently supported.
The mode can be any one of:
- Quadrature-count mode - For encoders that generate pulses 90 degrees out of phase for determining direction and speed.
- Direction-count mode - for position encoders that provide direction and clock outputs, instead of quadrature outputs.
- UP-count mode - The counter direction signal is hard-wired for up count and the position counter is used to measure the frequency of the QEPA input.
- DOWN-count mode - The counter direction signal is hard-wired for a down count and the position counter is used to measure the frequency of the QEPA input.
When the eQEP module is configured in quadrature mode, the module can either provide an absolute position, or a relative position. Absolute simply increments or decrements depending on the direction. Relative increments until the unit timer overflows at which point it latches the position value, resets the position count to zero and starts again.