• Few notes on designing with i.MX RT 1010

    02/07/2021 at 22:41 0 comments

    I.MX RT1010 is a cheap and powerful Cortex-M7 running on 500Mhz. Poor documentation and limited peripherals are the reason behind its low price. But despite that, I see it as a very interesting MCU for some uses. I have used it for UAC2 DAC.

    These notes are usable for i.MX RT1020 too, but I will base it on RT1010.


    I'm using LPC-Link2 with MCUExpresso.

    Few things to consider before choosing RT1010:

  • There is some amount of decoupling capacitors. 
  • It can generate a bit of noise, if you have a sensitive analog on your board be careful.
  • RT1010 was made with 2 layer boards in mind but I would strongly recommend going with 4 layers.
  • Example schematic:

    • Decoupling isn't perfect but good enough, everything is done with 0603 caps. Also, I would consider ditching 100nf and just going with 1uF everywhere? and then maybe ditching 10uF caps totally? could help with the 0603 clutter in case of hand soldering.
    •  POR circuit can be omitted, I would recommend that you do so as using internal POR guarantees correct POR timing sequence.
    • ONOFF signal can be used as a signal to wake up processors from one of the deep sleep modes or it can be used as RESET. If you wish to use it as RESET you need to tie the TEST_MODE signal to logic one. If you will tie TEST_MODE to logic zero you will need to use POR_B signal as signal reset and do POR reset instead of system reset. (EVK boards are using POR reset)
    • The choice of external QSPI flash is important if you don't want to spend hours writing your custom bootloader. I presume that any memory with XIP support should work by default but if you want to be sure you can use for example this list https://www.dialog-semiconductor.com/products/memory/nxp

    On boot process:

    • GPIO_09 is UART2_RX if this pin is going to be driven low bootloader will recognize it and will get stuck on it! You won't be able to communicate with the bootloader over USB.
    • You can find useful info (including nice pin mux tables) here https://www.utasker.com/iMX/developers.html also for communicating with i.MX RT over USB bootloader and for flashing your FW there is this app: https://github.com/JayHeng/NXP-MCUBootUtility
    • You can set fuses in the MCUBootUtility app but be careful they are really fuses! One write only!
    • GPIO_SD_00, GPIO_SD_01, GPIO_SD_02 - can be used to switch between boot security levels, you can override them through fuses but if you want to play around with signed or encrypted FW not a wise idea :) 
    • GPIO_SD_03 and GPIO_SD_04 are for boot mode selection, they are useful mainly when you want to force i.MX to switch to USB bootloader instead of your program. If your flash is empty they have no practical use. Can be omitted if you really need to use them.

    If you have some tidbits of information about RT1010 you think could be added please let me know.