 IonMPI brought to you by DigiKey and AidaFruit. This week it is NXP. Lady Aida, what is this week's IonMPI? Well it is M7 week here at AidaFruit with just a coincidence, maybe it was on purpose. We're releasing our new IMX RT 1011 M7 Metro which uses a chip in the same family as this week's IonMPI which is the IMX RT 1040 series. This is a new chip in the illustrious IMX RT 1011, 1010, 1020, 1040, 1050 and 1060. I think there's even 1160 now, a wide range of chips and this one is right in the middle. This is part of what they call the crossover MCU series. So a lot of people here watching or listening they've used microcontrollers such as 8-bit picks or Atmels or maybe they've used even 32-bit Cortex M0s. If you want more M's you can go from M0 to M4 and then from there on to M7s. The M7s are very fast processors. This one they can the whole family they can be clocked up to 1 GHz. This particular chip the 1040 is a 500 or 600 megahertz processor. There's also some that have a separate sub processor Cortex M4 at 400 megahertz. They have a ton of SRAM that can be tightly coupled. They can have external RAM. They have built-in DC-DC converters so you don't need a separate PMIC graphics external Q-SPY or Octel-SPY flash memory for storing code and files and then NXP security as well. So this is the Metro M7 which is our first board that we've made with this series and I learned a lot getting this board together. So the IMX RT-1011 is kind of the entry-level version of this family. It's you know like a microcontroller but it runs really really fast and it has this M7 core. We've paired it here with an ESP32 for Wi-Fi and possibly Bluetooth add-on. Some things that are neat that you can see here is this is a two-layer board. These chips are designed to be used as low-cost upgrades from say M4 or M3 chips. You don't need a separate PMIC manager for all the cores. You just need you see on the top left there's inductor capacitors passives. On the right there's inexpensive Q-SPY memory. We use the WinBond W25Q JV series. This is 64 megabit 8 megabyte and you just give a 3 volt power crystal and you're pretty much ready to rock. It's got even built-in USB. To program these chips what's recommended is using the MCUXpresso IDE from NXP. It's kind of all-in-one IDE setup. I will say that I personally haven't used MCUXpresso instead. I just use AVR, sorry ARMGCC, ARMGCC and the NXP SDK work really well and I just use it on the command line. This particular series, the IMEX RT-1040, like I said, it's kind of in the middle. I'll show you the whole series of what's available in this family as you expect is a Cortex-M7 with of course floating point support. It runs at 600 megahertz. If you want it for I think the full temperature range you drive it down at 500 megahertz. But of course you can pick what frequency you want with the PLL. It's got the built-in DC-DC converter. So you see an inductor and you have some capacitors and some passives to run that. Inside is 512k of SRAM, which you can use as tightly coupled memory. Why you need that? Because there is no built-in flash memory. Instead you have to wire up an external, in my case I've wired up QSPY NOR flash. You can of course also use parallel NOR flash or EMCC or NAND as shown here. QSPY is kind of the cheapest and easiest and uses the fewest pins. But then if you want to get instructions off of the firmware that's running on the chip, you're bound by how fast you can get the firmware code off of that QSPY NOR flash. And so by dividing up some of that tightly coupled memory, maybe 128k, you can cache instructions. So if you're running in a loop, you're large enough loop, you can cache the whole thing in the tightly coupled memory and you'll get the benefits of that 600 megahertz processor without being slowed down by your whatever 100 megahertz maybe at the most speed of your flash memory. One thing that the 1040 kind of adds above the 1011, 1010, 1020 series is it does have the graphics support and the LCD controller so you can use a dock clock style TFT, not just your standard SPI TFT. And it comes in two packages which I'll show you. They're both the same pinout 169BGAs. One is 0.65 and one is 0.8 millimeter pitch. So it's designed for easy routing. Lots of peripherals. I'm not going to go through all of them because there's a ton, you know, SDIO, 8 URs, 4 I-squared Cs, 3 SPIs, FlexIO, which is quite interesting. It's kind of, if you've used PIO on the RP2040, FlexIO is kind of similar. It's sort of this all-in-one. You want to kind of do other protocols that might not be supported. Natively, you can mimic them with FlexIO, lots of I2S. This, the 1011 series doesn't have CAN or Ethernet, but these do. It does have one USB high speed, which can be either peripheral or controller. However, it doesn't have two. Some of the 1050 and above have two USBs. All memory stuff, like I said, in the middle, there's that parallel LCD. You've gotten a GPIO. You can control those 24-bit displays where you have 24-bits RGB, V-sync, H-sync, dot-clock, et cetera. And ADC, no DAC, but there is I2S output and lots of PWMs and timers. If you want to use the USB core for this chip series, we do have support for the NXP-IMX-RT and TINI USB TAC, one of our developers that's supported by Adafruit. Just done an excellent job adding support for the NXP series. NXP, the LPC series actually was one of the first chips supported by TINI USB, but we definitely have support for the IMX series as well. It's open source and a great way to start structuring your project. Again, if you're using ARM GCC, which is what TINI USB builds in. We also have a TINI UF2 bootloader. So there is a built-in bootloader, a ROM bootloader, and it's very fast and it works quite well. But if you would like to have a user-friendly bootloader, we have a second stage bootloader built on TINI USB called TINI UF2. And it's a drag and drop. You create these UF2 files that you might be familiar from, our SAMG processor chips and RP2040 chips, use that format for drag and drop programming. But again, there's this ROM bootloader that you don't have to worry about and you need to program it with command line tool that's available on any operating system. So if you want to debug it, you'll need a J-Link, but you don't need one to program it, built-in programmer. As we mentioned, these are available in 0.65 and 0.8mm ball pitch BGA. They are designed to be routed onto a two-layer board, and they do have dev boards that are two-layer. Just to prove it, you don't need a four-layer or six-layer. I mean, you'll, of course, benefit. You'll have a bigger ground plane. Maybe you'll be able to fit your parts tighter because you don't have to route around them. But it's designed to do a fan-out on an expensive two-layer board. So just check the application hints. They do give you suggestion on how to do the fan-out in the layout. And this is just from the NXP fan-out recommendation. They will give you, hey, here's how we suggest you do the spacing and DRC rules to make sure that your IMX processor succeeds in your BGA design. Because if you look at the Metro, it's the TQFP. And here's the rules for the 0.65, just here for your reference. So this is, again, part of the series of IMX RT chips, starting from the bottom. Again, the number is a little confusing. The RT-1010, there's only the 1011 in existence. The 1040, it's actually the 1042. So that last digit is sort of like a series of parts. So you can see kind of, you start with the RT-1011, which doesn't have Ethernet or Canvas and only has one USB and doesn't have a graphics. And you kind of move up from the bottom, 1020, doubles the amount of RAM to 256K. And then the 1040 doubles it again to 512. But it's also the first one where you move from a QFP or QFN to a BGA. Still, it's 0.8 millimeters. So I really think even though prototyping might be a challenge, any pick-and-place house should be able to handle that processor. And it has the graphic acceleration, lots of I2S and SPDIF, again, lots of peripherals. And it's not mentioned here, but it has two FlexIO peripherals, whereas I think the 1050 only has one. So they've kind of bumped up some of the peripherals. The full table isn't here, but you can check it out on the NXP website. And then as you work on the 1040, if you're like, oh man, I really want camera interface, or maybe I want USB host as well as USB peripheral, I want two USB ports, you bump yourself up to the 1050, keep going to the 1060 all the way to the 1180, which is quite a beast with built-in one or two megabytes of SRAM. The FlexIO is kind of the most interesting thing here. Again, you can emulate, there's a lot of peripheral buses, but maybe your pins are being used by that parallel CFT, or maybe you need another three UARTs. You can use FlexIO to mimic a lot of these, not that it says for the 1010, but it's for the entire IMX series, they all have the FlexIO and the 1040 has two of them. For the display, again, there's no camera, but there is a display, I don't know if that's a screen camera. I guess you can mimic the camera again with FlexIO. For display, note that you do have to have a frame buffer, so you will have to wire up external DRAM. I can show you on the available board, it looks like there is DRAM on there already, so you can follow their layout. You're going to use a bunch of pins for that, and then you'll use a lot of pins for the 24-bit parallel RGB LCD, but again, it's pretty rare to find an inexpensive processor that can drive a full TFT display that doesn't have a massive number of pins, I mean, this does have massive number of pins, but it's easy to route. The only other chips that basically have those displays which are specialty displays, where they get very, very expensive, whereas this one's pretty affordable, considering it can drive up to, I think, it's like 1,000 by 700 pixels, so a fairly large 10-inch diagonal display. And if you want to get started, I mean, the 1040 just came out, but you could expect that we'll probably add it to the list. We do have Circuit Python, so you want to use that as a core for your development. It's available, and we're adding more support, especially since we're releasing this first Metro M7 into the shop finally, so check it out if you also want to use Circuit Python, which is MIT licensed, as a building block for your design, but we'll probably end up adding flexible support, the parallel TFT support and USB host support for this series of chips through Circuit Python. And when I wrote the test code for the Metro, which I wrote in ARMGCC using the NXPSDK, I definitely cribbed from the Circuit Python code. I was like, well, how do you do the analog reads, or how do you set the pull-ups? Oh, hey, we have some example code ready to go. And I also recommend getting the eval board, which was not too expensive and has everything, so you can see kind of in the middle left there, there is a micro-E socket, and there's also Arduino socket, an XP chip in the center, and then there's like a microphone and like headphone out, and there's also a, on the top left, there's an M2 socket where you can plug in Wi-Fi. So this is like a quite a beast. We tend to target, when we develop Circuit Python, we target the eval boards, because they're pretty plentiful and they kind of have everything on them. I'll show this one on the overhead. It's quite big. Yeah, and it's available on Digi-Key. Yes, it's in stock. Sock. About 10 bucks a piece, which is a really good deal considering, you know, you get the SRAM built in, you only need, like I said, passives, crystal, small inductor, and Q-Spy Flash, maybe add like another dollar to your bomb. This is very affordable when you compare to other M7 boards, like the STM series, which you can't get anyways. This could be a very nice upgrade. It has a lot of the same features that you would expect from other well-known M7s. So let me, hold on, I'm going to back up my, this board is so chunky. Back up my overhead. Okay, so this is, and this is a little triplet that came with it. So this is the EVK, which I picked up again, a huge chip in the center. Looks like this is the DRAM, MicroSD, Micro-E socket, to use Micro-E boards. Arduino-esque header socket. M2 for Wi-Fi, it looks like there's audio. Oh, this is like a Kodak, hold on, this is a, oh, this is a WM8960, our favorite microphone and audio output, I2S Kodak. Some audio outputs, Ethernet again, this has built-in Ethernet. It does have, you will need a PHY, and this is probably the PHY for it, and then there's probably inductors, the transformers are inside here. This is that one inductor that you need for the DC-DC converter built in, and then there's the crystals, there's 32 kilohertz, and 24 megahertz. And then this is the programming and debugging interface, this is probably running some, you know, an XP debugger interface code, or maybe it's J-Link or something compatible. So it's a lot, there's a lot going on here, buttons, DC input, and then this is USB for the debugging, I think, maybe I don't know, USB for native, oh no, here it is, here's the USB native. So this you can have on the go, so if you want to have this be host, you would get a USB host adapter, and then on the bottom, we're not done yet. On the bottom, you can see the parallel TFT 40 pin connector, and this is a six pin connector, which has a pinout for capacitive touch, almost certainly this looks like it's the, goes together, so you'd have a capacitive touch interface of where I squared C here, and parallel TFT over there, and then don't forget, you know, for that, you need to buffer the display, you'll have to pop on some extra RAM, which is probably what this chip is, and then I want it to show real fast the chips themselves, now we've got to go really small, because these are very small chips. Okay, so this is, this is again the same chip, right, but one of them is 0.65 millimeter ball pitch, and this one is 0.8, so I'll flip it over, so you can see the comparison, which one do you choose? Well, you know, 0.8 is easier to route, but it's bigger, and 0.65 is nice and compact, you can still do with a two layer board, but you're going to have, you know, a very good process for your PCB manufacturer, so pick which one, same, you know, same material on the inside, just a different package on the outside. So that's the IMX RT 1040 series, so check that out, and then don't forget to pick up a Metro M7 if you want to get started with the Crossover MCU series. What's that, MPI?