e0dc6f4fe4
Add code to configure and program Lcu, Trgmux and Emios_Icu IPs to get the the rotations by the motor in radians. Co-authored-by: Benjamin Perseghetti <bperseghetti@rudislabs.com> Co-authored-by: Peter van der Perk <peter.vanderperk@nxp.com> Co-authored-by: Mayank Mahajan <mayankmahajan.x@nxp.com> Signed-off-by: Sumit Batra <sumit.batra@nxp.com>
113 lines
4.1 KiB
YAML
113 lines
4.1 KiB
YAML
# Copyright 2023 NXP
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
description: |
|
|
Quadrature Decoder driver which processes encoder signals to determine motor revs
|
|
with the cooperation of S32 IP blocks- eMIOS, TRGMUX and LCU.
|
|
The sensor qdec application can be used for testing this driver.
|
|
The following example uses TRGMUX IN2 and IN3 to connect to LCU1 LC0 I0 and I1.
|
|
LCU1 LC0 O2 and O3 connect to eMIOS0 CH6(Clockwise rotation) and
|
|
CH7(Counter Clockwise rotation) via TRGMUX_INT_OUT37 and TRGMUX_INT_OUT38
|
|
micro-ticks-per-rev is set as per vehicle gearbox reduction.
|
|
lcu output filters are set to capture maximum speed sensitivity and avoid channel noise.
|
|
|
|
qdec0 {
|
|
compatible = "nxp,qdec-s32";
|
|
pinctrl-0 = <&qdec_s32>;
|
|
pinctrl-names = "default";
|
|
micro-ticks-per-rev = <685440000>;
|
|
status = "okay";
|
|
trgmux = <&trgmux>;
|
|
trgmux-io-config =
|
|
<0 TRGMUX_IP_OUTPUT_EMIOS0_CH5_9_IPP_IND_CH6 TRGMUX_IP_INPUT_LCU1_LC0_OUT_I2>,
|
|
<1 TRGMUX_IP_OUTPUT_EMIOS0_CH5_9_IPP_IND_CH7 TRGMUX_IP_INPUT_LCU1_LC0_OUT_I3>,
|
|
<2 TRGMUX_IP_OUTPUT_LCU1_0_INP_I0 TRGMUX_IP_INPUT_SIUL2_IN2>,
|
|
<3 TRGMUX_IP_OUTPUT_LCU1_0_INP_I1 TRGMUX_IP_INPUT_SIUL2_IN3>;
|
|
lcu = <&lcu1>;
|
|
lcu-input-idx = <1>;
|
|
<LCU_IP_IN_0 LCU_IP_IN_1
|
|
LCU_IP_IN_2 LCU_IP_IN_3>;
|
|
lcu-mux-sel =
|
|
<LCU_IP_MUX_SEL_LU_IN_0 LCU_IP_MUX_SEL_LU_IN_1
|
|
LCU_IP_MUX_SEL_LU_OUT_0 LCU_IP_MUX_SEL_LU_OUT_1>;
|
|
lcu-output-filter-config =
|
|
/* LCU Out HW ID, Rise Filter, Fall Filter */
|
|
<0 5 5>, /* LCU O0 */
|
|
<1 5 5>, /* LCU O1 */
|
|
<2 2 2>, /* LCU O2 */
|
|
<3 2 2>; /* LCU O3 */
|
|
emios = <&emios0>;
|
|
emios-channels = <6 7>;
|
|
};
|
|
|
|
compatible: "nxp,qdec-s32"
|
|
|
|
include: [pinctrl-device.yaml, sensor-device.yaml]
|
|
|
|
properties:
|
|
micro-ticks-per-rev:
|
|
type: int
|
|
description: |
|
|
This is a number that is used to determine how many revolutions * 1000000
|
|
were done based on the current counter's value.
|
|
|
|
trgmux:
|
|
type: phandle
|
|
description: |
|
|
phandle to the TRGMUX node.
|
|
|
|
trgmux-io-config:
|
|
type: array
|
|
description: |
|
|
This gives the logic triggers configuration of TRGMUX module.
|
|
It contains 3 values for each of the 4 logic triggers used:
|
|
logic trigger number, output, input.
|
|
Hence, it's length should be '12'.
|
|
Ex:
|
|
trgmux-io-config =
|
|
<0 TRGMUX_IP_OUTPUT_EMIOS0_CH5_9_IPP_IND_CH6 TRGMUX_IP_INPUT_LCU1_LC0_OUT_I2>,
|
|
<1 TRGMUX_IP_OUTPUT_EMIOS0_CH5_9_IPP_IND_CH7 TRGMUX_IP_INPUT_LCU1_LC0_OUT_I3>,
|
|
<2 TRGMUX_IP_OUTPUT_LCU1_0_INP_I0 TRGMUX_IP_INPUT_SIUL2_IN2>,
|
|
<3 TRGMUX_IP_OUTPUT_LCU1_0_INP_I1 TRGMUX_IP_INPUT_SIUL2_IN3>;
|
|
|
|
lcu:
|
|
type: phandle
|
|
description: |
|
|
phandle to the LCU node.
|
|
|
|
emios:
|
|
type: phandle
|
|
description: |
|
|
phandle to the eMIOS node.
|
|
|
|
lcu-output-filter-config:
|
|
type: array
|
|
description: |
|
|
This array gives the configuration for each of the four outputs of LCU module.
|
|
It contains the following for each output: hardware output id, rise filter and fall filter.
|
|
The filters specify the delay in terms of CORE_CLK between the input and output line of LC.
|
|
We use this delay to generate short pulses at the rising and falling edges of input pulse.
|
|
It's length should be '12' - 3 entries for each of the four LCU outputs.
|
|
Ex: lcu-output-filter-config =
|
|
/* LCU Out HW ID, Rise Filter, Fall Filter */
|
|
<0 5 5>, /* LCU O0 */
|
|
<1 5 5>, /* LCU O1 */
|
|
<2 2 2>, /* LCU O2 */
|
|
<3 2 2>; /* LCU O3 */
|
|
|
|
lcu-mux-sel:
|
|
type: array
|
|
description: |
|
|
This array configures the sources of input to the LCU module by programming the muxsel.
|
|
|
|
lcu-input-idx:
|
|
type: array
|
|
description: |
|
|
This array configures the input indices to the LCU module which help to determine the
|
|
Logic Cell number used inside an LCU instance.
|
|
|
|
emios-channels:
|
|
type: array
|
|
description: |
|
|
This is the array containing 2 emios channel TypeG numbers used by the qdec.
|