MCUXpresso_MIMXRT1052xxxxB/boards/evkbimxrt1050/driver_examples/enc/basic
Yilin Sun 6baf4427ce
Updated to v2.15.000
Signed-off-by: Yilin Sun <imi415@imi.moe>
2024-03-18 23:15:10 +08:00
..
armgcc Updated to v2.15.000 2024-03-18 23:15:10 +08:00
board.c Updated to v2.15.000 2024-03-18 23:15:10 +08:00
board.h Updated to v2.15.000 2024-03-18 23:15:10 +08:00
clock_config.c Update SDK to v2.13.0 2023-01-26 09:35:56 +08:00
clock_config.h Update SDK to v2.13.0 2023-01-26 09:35:56 +08:00
dcd.c SDK v2.11.1 2022-04-08 22:46:35 +08:00
dcd.h SDK v2.11.1 2022-04-08 22:46:35 +08:00
enc_basic_v3_14.xml Updated to v2.15.000 2024-03-18 23:15:10 +08:00
enc_basic.c SDK v2.11.1 2022-04-08 22:46:35 +08:00
evkbimxrt1050_sdram_init.jlinkscript Updated to v2.14.0 2023-11-30 20:55:00 +08:00
pin_mux.c SDK v2.11.1 2022-04-08 22:46:35 +08:00
pin_mux.h SDK v2.11.1 2022-04-08 22:46:35 +08:00
readme.md Updated to v2.15.000 2024-03-18 23:15:10 +08:00

Overview

The enc_basic example shows how to quickly start using ENC driver.

In this example, user needs to connect a real encoder to the board. Actually, only PHASE A and PHASE B are enough for the basic application. When running the project, user can turn the encoder so that ENC module can monitor the position change. Then, the internal counter would also count for the position. User can also type keys into terminal, and the current position values recorded by ENC would display.

The ENC hardware is created with a special synchronize mechanism. There are actually 4 counters (the 32-bit position counter is combined with the two 16-bit counter registers) for position with responding hold registers. When any of the counter registers is read, the contents of each counter register is written to the corresponding hold register. Taking a snapshot of the counters' values provides a consistent view of a system position and a velocity to be attained.

SDK version

  • Version: 2.15.000

Toolchain supported

  • IAR embedded Workbench 9.40.1
  • Keil MDK 5.38.1
  • GCC ARM Embedded 12.2
  • MCUXpresso 11.8.0

Hardware requirements

  • Mini/micro USB cable
  • EVKB-IMXRT1050 board
  • Personal Computer
  • An encoder with PHASE A/B signals.

Board settings

  1. For pin connection between board and encoder, J22.5 -> kXBARA1_InputIomuxXbarIn21 -> kXBARA1_OutputEnc1PhaseAInput -> ENC_PHA J22.6 -> kXBARA1_InputIomuxXbarIn22 -> kXBARA1_OutputEnc1PhaseBInput -> ENC_PHB J22.3 -> kXBARA1_InputIomuxXbarIn23 -> kXBARA1_OutputEnc1Index -> ENC_INDEX

Prepare the Demo

  1. Connect a mini USB cable between the PC host and the OpenSDA USB port on the board.
  2. Connect the wires between encoder and the MCU board. See to the code for pin mux setting in function "BOARD_InitPins()".
  3. Open a serial terminal on PC for OpenSDA serial device with these settings:
    • 115200 baud rate
    • 8 data bits
    • No parity
    • One stop bit
    • No flow control
  4. Download the program to the target board.
  5. Either press the reset button on your board or launch the debugger in your IDE to begin running the demo.

Running the demo

Turn the encoder and type in any key into terminal. When the demo runs successfully, the log would be seen on the OpenSDA terminal like:

ENC Basic Example. Press any key to get the encoder values ...

Current position value: 0 Position differential value: 0 Position revolution value: 0

Current position value: 10 Position differential value: 10 Position revolution value: 0

...