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.
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.
Using J-Link
Install the J-Link Debug Host Tools and make sure they are in your search path.
Connect the J-Link debugger through the debug adapter 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