NXP VMU RT1170

Overview

The VMU RT1170 features an i.MX RT1176 dual core MCU with the Cortex-M7 core at 1 GHz and a Cortex-M4 at 400 MHz. The i.MX RT1176 MCU offers support over a wide temperature range and is qualified for consumer, industrial and automotive markets. The VMU RT1170 is the default VMU for CogniPilot’s Cerebri, a Zephyr RTOS based Autopilot.

VMU RT1170

Hardware

  • MIMXRT1176DVMAA MCU

    • 1GHz Cortex-M7 & 400Mhz Cortex-M4

    • 2MB SRAM with 512KB of TCM for Cortex-M7 and 256KB of TCM for Cortex-M4

  • Memory

    • 512 Mbit Octal Flash

    • TF socket for SD card

  • Ethernet

    • 2 wire 100BASE-T1

  • USB

    • USB 2.0 connector

  • Power

    • Redundant dual picoflex power ports

  • Debug

    • 10 pin debug and shell adapter board to 20 Pin JTAG debugger and USB-C shell

  • Sensor

    • BMI088 6-axis IMU

    • BMM150 Magnetometer

    • Dual BMP388 Barometer

    • Dual ICM-42688 6-axis IMU

    • IST8310 3-axis Magnetometer

    • U-blox NEO-M8N GNSS module

  • UART JST-GH connectors

  • I2C JST-GH connectors

  • CAN bus JST-GH connectors

  • RC IN

    • RC input connector for SBUS compatible RC receivers

For more information about the MIMXRT1176 SoC and VMU RT1170 board, see these references:

Supported Features

VMU-RT1170 is a “Vehicle Management Unit” based on the general i.MX RT1170 family of processors. The VMU RT1170 board configuration supports the following hardware features:

Interface

Controller

Driver/Component

NVIC

on-chip

nested vector interrupt controller

SYSTICK

on-chip

systick

GPIO

on-chip

gpio

COUNTER

on-chip

counter

CAN

on-chip

flexcan

SPI

on-chip

spi

I2C

on-chip

i2c

PWM

on-chip

flexpwm, qtmr

ADC

on-chip

adc

UART

on-chip

serial port-polling; serial port-interrupt

DMA

on-chip

dma

GPT

on-chip

gpt

WATCHDOG

on-chip

watchdog

ENET

on-chip

ethernet

SAI

on-chip

i2s

USB

on-chip

USB Device

HWINFO

on-chip

Unique device serial number

DISPLAY

on-chip

display

ACMP

on-chip

analog comparator

CAAM RNG

on-chip

entropy

FLEXSPI

on-chip

flash programming

The default configuration can be found in boards/nxp/vmu_rt1170/vmu_rt1170_mimxrt1176_cm7_defconfig

Other hardware features are not currently supported by the port.

Connections and I/Os

The MIMXRT1170 SoC has six pairs of pinmux/gpio controllers.

Name

Function

Usage

GPIO_AD_00

FLEXCAN2_TX

CAN2_TX

GPIO_AD_01

FLEXCAN2_RX

CAN2_RX

GPIO_AD_02

LPUART8_TXD

UART8_TX_TELEM2

GPIO_AD_03

LPUART8_RXD

UART8_RX_TELEM2

GPIO_AD_04

LPUART8_CTS_B

UART8_CTS_TELEM2

GPIO_AD_05

LPUART8_RTS_B

UART8_RTS_TELEM2

GPIO_AD_06

FLEXCAN1_TX

CAN1_TX

GPIO_AD_07

FLEXCAN1_RX

CAN1_RX

GPIO_AD_08

LPI2C1_SCL

I2C1_SCL_GPS1

GPIO_AD_09

LPI2C1_SDA

I2C1_SDA_GPS1

GPIO_AD_10

LPADC1_CH2A

SCALED_VDD_3V3_SENSORS1

GPIO_AD_11

LPADC1_CH2B

SCALED_VDD_3V3_SENSORS2

GPIO_AD_12

LPADC1_CH3A

SCALED_VDD_3V3_SENSORS3

GPIO_AD_13

LPADC1_CH3B

SCALED_V5

GPIO_AD_14

LPADC1_CH4A

ADC_6V6

GPIO_AD_15

LPUART10_TXD

UART10_TX_TELEM3

GPIO_AD_16

LPADC1_CH5A

ADC_3V3

GPIO_AD_17

LPADC1_CHB

SCALED_VDD_3V3_SENSORS4

GPIO_AD_18

LPI2C2_SCL

I2C2_SCL_GPS2

GPIO_AD_19

LPI2C2_SDA

I2C2_SDA_GPS2

GPIO_AD_20

GPIO3_IO19

SPI1_DRDY1_SENSOR1

GPIO_AD_21

GPIO3_IO20

SPI3_DRDY1_SENSOR3

GPIO_AD_22

LPADC2_CH2A

HW_VER_SENSE

GPIO_AD_23

LPADC2_CH2B

HW_REV_SENSE

GPIO_AD_24

LPSPI2_SCK

SPI2_SCK_SENSOR2

GPIO_AD_25

LPSPI2_PCS0

SPI2_nCS0_SENSOR2

GPIO_AD_26

LPSPI2_SOUT

SPI2_MOSI_SENSOR2

GPIO_AD_27

LPSPI2_SIN

SPI2_MISO_SENSOR2

GPIO_AD_28

LPUART5_TXD

UART5_TX_GPS2

GPIO_AD_29

LPUART5_RXD

UART5_RX_GPS2

GPIO_AD_30

LPUART3_TXD

UART3_TX_GPS1

GPIO_AD_31

LPUART3_RXD

UART3_RX_GPS1

GPIO_AD_32

USDHC1_CD_B

USDHC1_CD

GPIO_AD_33

LPUART10_RXD

UART10_RX_TELEM3

GPIO_AD_34

LPUART10_CTS_B

UART10_CTS_TELEM3

GPIO_AD_35

LPUART10_RTS_B

UART10_RTS_TELEM3

GPIO_DISP_B1_00

ENET_1G_RX_EN

ETH_CRS_DV

GPIO_DISP_B1_01

ENET_1G_RX_ER

ETH_RX_ER

GPIO_DISP_B1_02

LPUART1_TXD

UART1_TX_DEBUG

GPIO_DISP_B1_03

LPUART1_RXD

UART1_RX_DEBUG

GPIO_DISP_B1_04

LPUART4_RXD

UART4_RX_TELEM1

GPIO_DISP_B1_05

LPUART4_CTS_B

UART4_CTS_TELEM1

GPIO_DISP_B1_06

LPUART4_TXD

UART4_TX_TELEM1

GPIO_DISP_B1_07

LPUART4_RTS_B

UART4_RTS_TELEM1

GPIO_DISP_B1_08

ENET_1G_TDATA1

ETH_TXD1

GPIO_DISP_B1_09

ENET_1G_TDATA0

ETH_TXD0

GPIO_DISP_B1_10

ENET_1G_TX_EN

ETH_TX_EN

GPIO_DISP_B1_11

ENET_1G_REF_CLK

ETH_REF_CLK

GPIO_DISP_B2_00

GPIO5_IO01

nLED_RED

GPIO_DISP_B2_01

GPIO5_IO02

nLED_GREEN

GPIO_DISP_B2_02

ARM_TRACE0

TRACED0

GPIO_DISP_B2_03

ARM_TRACE1

TRACED1

GPIO_DISP_B2_04

ARM_TRACE2

TRACED2

GPIO_DISP_B2_05

ARM_TRACE3

TRACED3

GPIO_DISP_B2_06

ARM_TRACE_CLK

TRACECLK

GPIO_DISP_B2_07

ARM_TRACE_SWO

TRACESWO

GPIO_DISP_B2_08

GPIO5_IO09

ETH_POWER_EN

GPIO_DISP_B2_09

GPIO5_IO10

ETH_PHY_nINT

GPIO_DISP_B2_10

LPI2C3_SCL

I2C3_SCL_FMU

GPIO_DISP_B2_11

LPI2C3_SDA

I2C3_SDA_FMU

GPIO_DISP_B2_12

LPSPI4_SCK

SPI4_SCK_SENSOR4

GPIO_DISP_B2_13

LPSPI4_SIN

SPI4_MISO_SENSOR4

GPIO_DISP_B2_14

LPSPI4_SOUT

SPI4_MOSI_SENSOR4

GPIO_DISP_B2_15

LPSPI4_PCS0

SPI4_nCS0_SENSOR4

GPIO_EMC_B1_00

FLEXPWM4_PWM0_A + FLEXIO1_IO00

FMU_CH11

GPIO_EMC_B1_01

GPIO1_IO01

VDD_3V3_SD_CARD_EN

GPIO_EMC_B1_02

FLEXPWM4_PWM1_A + FLEXIO1_IO02

FMU_CH12

GPIO_EMC_B1_03

GPIO1_IO03

FMU_nSAFETY_SWITCH_LED_OUT

GPIO_EMC_B1_04

GPIO1_IO04

NFC_GPIO

GPIO_EMC_B1_05

GPIO1_IO05

SPI6_DRDY1_EXTERNAL1

GPIO_EMC_B1_06

FLEXPWM2_PWM0_A + FLEXIO1_IO06

FMU_CH4

GPIO_EMC_B1_07

GPIO1_IO07

SPI6_DRDY2_EXTERNAL1

GPIO_EMC_B1_08

FLEXPWM2_PWM1_A + FLEXIO1_IO08

FMU_CH5

GPIO_EMC_B1_09

GPT5_CAPTURE1

FMU_PPM_INPUT

GPIO_EMC_B1_10

FLEXPWM2_PWM2_A + FLEXIO1_IO10

FMU_CH6

GPIO_EMC_B1_11

GPIO1_IO11

SPI6_nRESET_EXTERNAL1

GPIO_EMC_B1_12

GPIO1_IO12

VDD_5V_HIPOWER_nOC

GPIO_EMC_B1_13

GPIO1_IO13

nLED_BLUE

GPIO_EMC_B1_14

GPIO1_IO14

VDD_3V3_SENSORS3_EN

GPIO_EMC_B1_15

GPIO1_IO15

VDD_5V_PERIPH_nOC

GPIO_EMC_B1_16

GPIO1_IO16

SPI4_DRDY1_SENSOR4

GPIO_EMC_B1_17

GPIO1_IO17

nARMED

GPIO_EMC_B1_18

TMR2_TIMER0

SPIX_SYNC

GPIO_EMC_B1_19

FLEXPWM2_PWM3_A + FLEXIO1_IO19

FMU_CH7

GPIO_EMC_B1_20

TMR4_TIMER0

FMU_CAP1

GPIO_EMC_B1_21

FLEXPWM3_PWM3_A + FLEXIO1_IO21

FMU_CH10

GPIO_EMC_B1_22

GPIO1_IO22

VDD_3V3_SENSORS2_EN

GPIO_EMC_B1_23

FLEXPWM1_PWM0_A

FMU_CH1

GPIO_EMC_B1_24

GPIO1_IO24

FMU_SAFETY_SWITCH_IN

GPIO_EMC_B1_25

FLEXPWM1_PWM1_A + FLEXIO1_IO25

FMU_CH2

GPIO_EMC_B1_26

GPIO1_IO26

HW_VER_REV_DRIVE

GPIO_EMC_B1_27

FLEXPWM1_PWM2_A + FLEXIO1_IO27

FMU_CH3

GPIO_EMC_B1_28

GPIO1_IO28

nPOWER_IN_A

GPIO_EMC_B1_29

FLEXPWM3_PWM0_A + FLEXIO1_IO29

FMU_CH8

GPIO_EMC_B1_30

GPIO1_IO30

nPOWER_IN_B

GPIO_EMC_B1_31

FLEXPWM3_PWM1_A + FLEXIO1_IO31

FMU_CH9

GPIO_EMC_B1_32

GPIO2_IO00

nPOWER_IN_C

GPIO_EMC_B1_33

GPIO2_IO01

VDD_3V3_SENSORS1_EN

GPIO_EMC_B1_34

GPIO2_IO02

VDD_5V_PERIPH_nEN

GPIO_EMC_B1_35

GPIO2_IO03

I2C2_DRDY1

GPIO_EMC_B1_36

GPIO2_IO04

VDD_3V3_SENSORS4_EN

GPIO_EMC_B1_37

GPIO2_IO05

VDD_5V_HIPOWER_nEN

GPIO_EMC_B1_38

GPIO2_IO06

VDD_3V3_SPEKTRUM_POWER_EN

GPIO_EMC_B1_39

GPIO2_IO07

SPI2_DRDY1_SENSOR2

GPIO_EMC_B1_40

LPUART6_TXD

UART6_TX_TO_IO__RC_INPUT

GPIO_EMC_B1_41

LPUART6_RXD

UART6_RX_FROM_IO__NC

GPIO_EMC_B2_00

LPSPI1_SCK

SPI1_SCK_SENSOR1

GPIO_EMC_B2_01

LPSPI1_PCS0

SPI1_nCS0_SENSOR1

GPIO_EMC_B2_02

LPSPI1_SOUT

SPI1_MOSI_SENSOR1

GPIO_EMC_B2_03

LPSPI1_SIN

SPI1_MISO_SENSOR1

GPIO_EMC_B2_04

LPSPI3_SCK

SPI3_SCK_SENSOR3

GPIO_EMC_B2_05

LPSPI3_PCS0

SPI3_nCS0_SENSOR3

GPIO_EMC_B2_06

LPSPI3_SOUT

SPI3_MOSI_SENSOR3

GPIO_EMC_B2_07

LPSPI3_SIN

SPI3_MISO_SENSOR3

GPIO_EMC_B2_08

LPSPI3_PCS1

SPI3_nCS1_SENSOR3

GPIO_EMC_B2_09

TMR1_TIMER0

BUZZER_1

GPIO_EMC_B2_10

FLEXSPI2_A_SCLK

FLEXSPI2_SCK_FRAM

GPIO_EMC_B2_11

FLEXSPI2_A_SS0_B

FLEXSPI2_nCS0_FRAM

GPIO_EMC_B2_12

GPIO2_IO22

GPIO_EMC_B2_12

GPIO_EMC_B2_13

FLEXSPI2_A_DATA0

FLEXSPI2_DATA0_FRAM

GPIO_EMC_B2_14

FLEXSPI2_A_DATA1

FLEXSPI2_DATA1_FRAM

GPIO_EMC_B2_15

ENET_1G_RDATA0

ETH_RXD0

GPIO_EMC_B2_16

ENET_1G_RDATA1

ETH_RXD1

GPIO_EMC_B2_17

TMR3_TIMER0

HEATER

GPIO_EMC_B2_18

GPIO2_IO28

SPI3_DRDY2_SENSOR3

GPIO_EMC_B2_19

ENET_1G_MDC

ETH_MDC

GPIO_EMC_B2_20

ENET_1G_MDIO

ETH_MDIO

GPIO_LPSR_00

FLEXCAN3_TX

CAN3_TX

GPIO_LPSR_01

FLEXCAN3_RX

CAN3_RX

GPIO_LPSR_02

SRC_BOOT_MODE00

BT_MODE0

GPIO_LPSR_03

SRC_BOOT_MODE01

BT_MODE1

GPIO_LPSR_04

LPUART11_TXD

UART11_TX_EXTERNAL2

GPIO_LPSR_05

LPUART11_RXD

UART11_RX_EXTERNAL2

GPIO_LPSR_06

LPI2C6_SDA

I2C6_SDA_EXTERNAL2

GPIO_LPSR_07

LPI2C6_SCL

I2C6_SCL_EXTERNAL2

GPIO_LPSR_08

LPSPI6_PCS1

SPI6_nCS1_EXTERNAL1

GPIO_LPSR_09

LPSPI6_PCS0

SPI6_nCS0

GPIO_LPSR_10

LPSPI6_SCK

SPI6_SCK_EXTERNAL1

GPIO_LPSR_11

LPSPI6_SOUT

SPI6_MOSI_EXTERNAL1

GPIO_LPSR_12

LPSPI6_SIN

SPI6_MISO_EXTERNAL1

GPIO_LPSR_13

JTAG_MOD

NC_JTAG_MOD_PD

GPIO_LPSR_14

SWD_CLK

FMU_SWCLK

GPIO_LPSR_15

SWD_DIO

FMU_SWDIO

GPIO_SD_B1_00

USDHC1_CMD

USDHC1_CMD

GPIO_SD_B1_01

USDHC1_CLK

USDHC1_CLK

GPIO_SD_B1_02

USDHC1_DATA0

USDHC1_DATA0

GPIO_SD_B1_03

USDHC1_DATA1

USDHC1_DATA1

GPIO_SD_B1_04

USDHC1_DATA2

USDHC1_DATA2

GPIO_SD_B1_05

USDHC1_DATA3

USDHC1_DATA3

GPIO_SD_B2_00

FLEXSPI1_B_DATA3

FLEXSPI1_DATA7_HYPERFLASH

GPIO_SD_B2_01

FLEXSPI1_B_DATA2

FLEXSPI1_DATA6_HYPERFLASH

GPIO_SD_B2_02

FLEXSPI1_B_DATA1

FLEXSPI1_DATA5_HYPERFLASH

GPIO_SD_B2_03

FLEXSPI1_B_DATA0

FLEXSPI1_DATA4_HYPERFLASH

GPIO_SD_B2_04

FLEXSPI1_B_SCLK

FLEXSPI1_nSCK_HYPERFLASH

GPIO_SD_B2_05

FLEXSPI1_A_DQS

FLEXSPI1_DQS_HYPERFLASH

GPIO_SD_B2_06

FLEXSPI1_A_SS0_B

FLEXSPI1_nCS0_HYPERFLASH

GPIO_SD_B2_07

FLEXSPI1_A_SCLK

FLEXSPI1_SCK_HYPERFLASH

GPIO_SD_B2_08

FLEXSPI1_A_DATA0

FLEXSPI1_DATA0_HYPERFLASH

GPIO_SD_B2_09

FLEXSPI1_A_DATA0

FLEXSPI1_DATA1_HYPERFLASH

GPIO_SD_B2_10

FLEXSPI1_A_DATA2

FLEXSPI1_DATA2_HYPERFLASH

GPIO_SD_B2_11

FLEXSPI1_A_DATA3

FLEXSPI1_DATA3_HYPERFLASH

USB1_DN

USB_OG1_DN

USB_D_N

USB1_DP

USB_OTG1_DP

USB_D_P

USB1_VBUS

USB_OTG1_VBUS

VBUS

Serial Port

The MIMXRT1170 SoC has 12 UARTs.

Programming and Debugging

Build and flash applications as usual (see Building an Application and Run an Application for more details).

Configuring a Debug Probe

A debug probe is used for both flashing and debugging the board.

Configuring a Console

Use the USB-C from the debug adapter board to access the console with the following settings for your serial terminal of choice (screen, minicom, putty, etc.):

  • Speed: 115200

  • Data: 8 bits

  • Parity: None

  • Stop bits: 1

Flashing

Here is an example for the Hello World application.

# From the root of the zephyr repository
west build -b vmu_rt1170 samples/hello_world
west flash

You should see the following message in the terminal:

***** Booting Zephyr OS v3.4.0-xxxx-xxxxxxxxxxxxx *****
Hello World! vmu_rt1170

Debugging

Here is an example for the Hello World application.

# From the root of the zephyr repository
west build -b vmu_rt1170 samples/hello_world
west debug

Open a serial terminal, step through the application in your debugger, and you should see the following message in the terminal:

***** Booting Zephyr OS v3.4.0-xxxx-xxxxxxxxxxxxx *****
Hello World! vmu_rt1170