New Part Day: STM32F7, An ARM Cortex-M7

It was announced last year, but ST is finally rolling out the STM32F7, the first microcontroller in production that is based on the ARM Cortex-M7.

The previous go-to part from the ST catalog was the STM32F4, an extremely powerful chip based on the ARM Cortex M4 processor. This chip was incredibly powerful in its time, and is still a respectable choice for any application that needs a lot of horsepower, but not a complete Linux system. We’ve seen the ~F4 chip pump out 800×600 VGA, drive a thermal imaging camera, and put OpenCV inside a webcam. Now there’s a new, even more powerful part on the market, and the mind reels thinking what might be possible.

Right now there a few STM32F7 parts out, both with speeds up to 216MHz, Flash between 512k and 1MB, and 320kB of RAM. Peripherals include Ethernet, USB OTG, SPDIF support, and I²S. The most advanced chip in the line includes a TFT LCD controller, and a crypto processor on-chip. All of the chips in the STM32F7 line are pin compatible with the STM32F4 line, with BGA and QFP packages available.

As with the introduction of all of ST’s microcontrollers, they’re rolling out a new Discovery board with this launch. It features Ethernet, a bunch of audio peripherals, USB OTG, apparently an Arduino-style pin layout, and a 4.3 inch, 480×272 pixel LCD with capacitive touch. When this is available through the normal distributors, it will sell for around $50. The chips themselves are already available from some of the usual distributors, for $17 to $20 in quantity one. That’s a chunk of change for a microcontroller, but the possibilities for what this can do are really only limited by an engineer’s imagination.

62 thoughts on “New Part Day: STM32F7, An ARM Cortex-M7

  1. Needs more RAM if you’re gonna run Linux. There’s a memory controller, but you’ll have to spin your own board in order to add memory. Hope you like BGA soldering.

    1. The soldering part doesn’t scare me – it is easy. Put it in a reflow oven and bake at right temperature profile.

      It is being able to break out the pins of a solid fine pitched part in 4 layers PCB (good luck with that), aligning the BGA package to the PCB, xray the solder for voids. Those can get expensive, takes time and a bit out of budget. Good luck if if you are the type that take at least 3 tries to get things right for simple things.

      1. Take a look at Freescale’s i.MX283 or i.MX283 … The designers were thinking when they made this part, as when they pinned the BGA they paid particular attention to the DDR memory routing… The result is that you can do a basic design with DDR, etc on 4 layers…

        As for working with BGAs… Indeed, aligning the BGA during placement is important, but if you are slightly off the part will self align during reflow. Hand Placing the part is tricky, but with a steady hand and a well defined silkscreen (for registration) it has not been a problem for me… but this was for 1mm and 0.8mm pitch parts… Smaller parts I am not so sure. Now I have my own PnP and so I simply rely upon the machine to place the part. As for Xray-ing the BGAs… I have not had the need. I have had or assembled myself over 1000 BGA boards and so far no issues… and this is after 10 years of 24/7/365 use. Is it a good idea to XRay? you bet, but not everyone has the gear

        1. The silkscreen on the Chinese board house are horrible. I even have silkscreen on my BGA pads. On the other hand I was crazy enough to place 0.4mm pitched chip scale BGA on cheap Chinese proto PCB with HASL finishes. Their large solder mask aperture was large enough for my hand placement error. I placed a few of those without stencils with good success. OSHW PCB with the vendor suggested footprint on the other hand really need a stencil and pick & place machine.

          The ball pitch and the board house spacing rule would determine if you could escape the traces. It is a little bit out of what I want to get a properly made PCB and stencils if I have to pay from my own pocket.

          I’ll stick with QFN parts for now. I have remove and reattach small parts like that half a dozen times without problems. They are so much easier than working with TQFP/QFP that I don’t think I would bother if the QFN package is available.

      2. I’ll do fine pitch external leads, but when the leads are ‘hidden’ (balls) that’s where I draw the line for DIY. if it needs a microscope, then its not really DIY (for most of us). and even if you can bake the chip on, what happens when you want to repair the board or diag it? bga is still pro level stuff and hobbiests will not want to have anything to do with raw bga’s. breakout boards, fine. but raw chips like that? no way.

        1. You are quite right that reworking a BGA board is extremely difficult… If I have to rework a BGA part, then the baord is a throw away (i.e. recycled). That being said, larger QFPs are not that easy to rework… Depending on the board quality, some pads may lift because of the reflow temps and mechanical extraction needed. The positive is that replacing a QFP on a reworked PCB is a lot easier as each pin can accommodate any PCB landing surface irregularity.. whereas the BGA cannot.
          Overall I would not be too afraid of BGAs… you just need to properly design your PCB (i.e. escape routing for pins needed access), use the correct solder paste (solder paste ball size), and an accurate reflow oven (I have a small commercial one, but also one I made out of a toaster oven…both work excellently.).

      3. Aligning BGAs isn’t really that hard, but if you’re really scared (and the chip is actually worth it), you can just use a stencilquik stencil.

        http://www.solder.net/products/stencilquik/

        They’re around $10 each or so, which, OK, sucks, but if the BGAs are like $20-30, it’s not that much extra cost. Still way freaking cheaper than having the board assembled.

        And if the cost bothers you, and you have access to a laser cutter, you can just do it yourself…

        http://www.instructables.com/id/Easy-BGA-alignment-with-Laser-Cut-Kapton/

        Or you can just order a polyimide stencil from e.g. OSHStencil, and spray adhesive on one side.

        1. My apologies… I should have stated earlier that a quality Stencil is a must for BGAs…Personally I only use Laser Cut stencils and they are (now) cheap… like $20 for an unframed stencil, $20 for shipping, and they arrive in about 4-5 days.

          1. Nono, these aren’t normal PCB stencils like you’re thinking of. These are thin adhesive stencils that you can stick onto the board right where the BGA is.

            Why is this awesome? Because the extra stencil thickness, stuck onto the board, allows you to align the BGA by feel. Slide it around, and when it ‘drops’, it’s aligned. Then you reflow with the stencil left between the BGA and the board: it’s thin, so no worries about it causing problems.

          2. One would only need to align the balls on the outside edges of the BGA. So in theory, someone can make a single row of that on a tape or even fixed lengths of it and it would work quite well.

            Kickstarter for 1mm, 0.8mm, 0.5mm and 0.4mm tapes or precut strips? :)

  2. I used to use STM32 parts, but the development environment was too much work to maintain and lacked a lot of features that commercial packages offered. If you’re not willing to pay for an expensive suite or live with a crippled suite, you need to cobble together your own tool chain based on GNU. That worked, but it lacks a lot of tools for generating ST-specific code.

    ST should package and support a free, uncrippled toolchain, like many other microcontroller manufacturers are doing.

    1. I’m successfully using Code::Blocks to compile for STM32F0 and STM32F4 with gcc, and I use startup code generated with CubeMX. This is not supported by ST, but once the setup is done it really works even on linux. Code::Blocks allows writing custom project wizards, making the whole thing quite comfortable.

      1. Do you have any documentation for newbies on what you are doing (either stuff you wrote yourself, or sources where you assembled your information from)? I am thinking of jumping into ARM programming, and have an STM32F4 dev board to play with, but I have not gotten past the blinkylights hello world stuff.

        I like having as open a toolchain as possible, but am just finding the learning curve for ARM stuff to be very steep as compared to AVR.

          1. Ahh, that is you :-) I’m already following that project, actually (looks like I neglected to skull it, though; that is now rectified). That project is the one which has given me hope that working directly with ARM chips is possible by mere mortals.

            I will have to go deeper into the logs now… so far I have been concentrating on the hardware itself, but I am starting to see that the software / toolchain is the more complicated part of it all.

            (It may take a me a while to go through everything, though… I am just starting a new project based on the Teensy 3.1 + Audio board; while I am completely cheating by using existing libraries for most everything, I want to get my initial revision up and running quickly. ;-) )

            Cheers

        1. I never tried Em::Blocks mainly because I already had Code::Blocks running on my computer, and I had already used it for AVR and Teensy development. I have never heard much negative about Em::Blocks, so it’s probably worht a look.

      2. Okay, you didn’t hear if from me on a worldwidewebsite, but ST and Keil now have an extended trial license of 3 years… Contact your local ST.com rep (maybe this news is US only)

      1. “Accessing OpenSTM32.org is free, but you need to be logged in to have access to some parts of the site, like the System Workbench for STM32 documentation and download instructions”

        Forcing you to register just to have a look at documentation tells me it’s not very open. I’ll pass.

        1. This is unfortunately standard fare now. Both Freescale and Atmel require you to login to access their custom IDE’s (Kinetis Studio & Atmel Studio). TI Requires you to login an go through a series of non-export agreements e.t.c to download CCS studio and TivaWare. Interestingly enough NXP’s LPCXpresso can be downloaded without creating any accounts.

          1. There are atmel studio links if you google, but I have given up an gotten an account.
            Kinetis Studio is a mess on my setup – there was something weird going on with the GUI that I had to go back to their old Processor Expert to generate clock init code. That was the type of code that I would rather not write from scratch. Their generated code are bloated as they assume you want their framework.

          2. Cypress used to require an account to download PSOC Creator. I’d like to think the note they got in the feedback feature changed that policy. Next task is to get all the vendors standardize on an open debug interface.

          3. They sort of standardize on the SWD for the Cortex chips.
            As to standardize on a way of making SWD, there is CMSIS-DAP. It is kinda slow implementation. Vendor specific debuggers are still popular on eval boards.

    2. Had the same issue: worked on a project with commercial expensive software, was ok.
      For hobby, i gave up after a couple of tries to build up an environment. I wish they would do like atmel and offer a complete IDE based on some open/free tools.

      1. In addition to stm32’s CubeMX code generation tool. ST is currently developing an eclipse-based full development software tool (IDE, debug, compiler, libraries e.t.c). It’s called the “System Workbench for STM32” http://www.openstm32.org/System+Workbench+for+STM32. I haven’t tried it myself but a Windows version is available for download for free(You need to register with the website however). . A Linux version is in the works.

        I’ve been meaning to use it but find myself always reverting to the ‘roll your own’ setup. I rarely need the debugging facilities and end up using stm32flash “https://github.com/ARMinARM/stm32flash” to flash chip via the resident USART bootloader. One can also use the dfu-util cli tool to flash chips that have a DFU USB bootloader. No programmer required.

        If you got to have the debugger/programmer… an st-linkv2 / stlinkv2-1 is accessible on every discovery/nucleo board, and Chinese clones of it can be bought as cheaply as $3. ST’s official stlinkv2 is like $18. These programmers all have debugging/programming capabilities and work with OpenOCD (my preferred choice) or Texane’s STLink.

        I don’t even use eclipse anymore. I simply rely on using makefiles for the build, ATOM as the text editor and Nemiver as by debugger frontend (not as capable as I would like…but its OK). I use Linux for my setup.

        My two favorite STM32F0 chips are the stm32F072 and the stm32F411. Both are fairly easy to use,come in easy to solder 48-qfn packages and offer a great bang for the buck.

        1. stm32f103 has project boards super cheap from China, not exactly sure why they seem to like that chip, the peripherals are quite buggy. That said, I do use it with a bare metal gcc environment. ST docs suck hard, and everything assumes you want to use their bloated libs. I would switch to another if I could identify a similarly cheap bit of silicon that has fully working peripherals and clear docs. Maybe Atmel’s ARM offerings. *sigh*

        2. I have not seen a vendor without silicon errata.

          The thing about popular China parts is mostly because of price. Some products are using them in high volume, so they are available much cheaper than similar parts. Then everyone jumps in because they are cheap.

          In one of my projects, I used Freescale parts. The user manual talks a lot about the actual I2C spec ( I think I can read I2C spec on my own!), but don’t talk about how their own I2C implementation works. Their generated code are also very bad as they also assume that you want their bloated os framework.

      2. As a side effect of developing a free software OS kernel for Cortex MCUs I release a prebuilt GNU toolchain for stm32 including instructions for configuring an IDE (Netbeans). Moreover, you get boot code for most stm32 dev boards (linker script and such) and multithreading with a pthread interface. You can find it here https://miosix.org

  3. The Atmel version of cortex M7 (ATSAME70) is much better than the ST.
    -Higher clock rate
    – larger I/D cache
    – better power consumption.
    – better peripherals

    Big plus for the Atmel chip is the on the fly encrypt decrypt of the external memories.

    Also You can by the developer board for the Atmel part right now, and it’s only $130.

    1. those do look interesting, i’d been reworking a board to use the STM32F4 but it wasn’t fast enough so this was good news, but the SSC port is really useful on the ATSAM’s, SAME70 Series 300 MHz 2 MB Flash 384 kB SRAM for $13 not to shabby, though can’t find anything in stock.

      1. I like Atmel products. I’ve been using AVR’s since the late 90’s. But I now prefer STM32 because the parts are cheaper, Programmers/Debuggers are cheaper and development platforms are cheaper. Sure the ST-Nucleo/Discovery boards are far from perfect, but they are low cost and do the job. The combination of Mbed+STNucleoF411RE cost about $12-$15 and has much more to offer than the $40+ SAMD/SAM4 Xplained boards or god forbid the $55+ Arduino Zero/Due boards.

        Having said that, Atmel Studio is nice though I prefer a cross platform IDE such as Eclipse over the Visual Studio shell. Also Atmel’s ASF libraries while not perfect are in my mind a little easier to work with than STM32Cube Libraries.

    1. SPDIF IN but no SPDIF OUT? Thhe people who design The Discovery boards make some “interesting” decisions.
      At least this board has HS USB OTG. That was missing from previous Discovery boards.

  4. I’m excited. Just yesterday I went to my EE at work and begged for this chip T replace our F4s. It’s double the performance and binary/pin compatible. The future looks good right now.

    1. Unfortunately the ARM Architecture that the Cortex-M cores are based around (v7-M) don’t really work too well in multi-processor setups unlike the A and R class Cortex cores which is why the current “multi-core” devices tend to skew the system to be effectively two specialist cores (rather than equal ones).
      In order to justify an ‘N’-core version, you’d have to pick out specific roles for each of the cores as NXP did in the LPC4300 & LPC54100; they just about differentiated it for the M4/M0 systems by making it a bit of a “bigLITTLE” (akin to the high-end Cortex-A processor systems) but it’s arguably not much better than just having two single-core chips on a PCB given their roles and restrictions, so trying to make 3-core general micro-controller is probably even tougher.

    1. To answer my own questions and anyone else who cares: (via STM32CubeF7 config documentation)

      1) Does the USB host library support composite devices (for example Massstorage
      + HID)? Yes, providing the users write a custom composite class handler for the composite device.
      2) Can I use at the same time the OTG HS and the OTG FS host controller? Yes
      3) Can the USB host library handle devices connected through a USB HUB? No
      4) Does the USB host library allow to handle multiple configuration devices? No

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s