One of the many important choices when starting a hardware project is to choose the part that is going to be what everything else revolves around. Namely the Microcontroller.
I knew my minimum requirements were something like this:
- 1 SPI
- 2 I²S with master clock out
- 1 I²C
- 1 U(S)ART
- LCD 8080/6800 parallel peripheral
- USB FS (pref HS) Device
These all need to be accessible at the same time, so I don’t want to keep reconfiguring pins and all that jazz. I want a chip powerful enough to comfortably do what I want it to do. Comfortably for me, that is.
Gathering all the information
Initially I considered various models from Atmel, NXP, Texas Instruments, Renesas, ST Microelectronics. They were my first choice as I had experience with their environments – albeit just slightly for some of them – and would have at least a bit know-how to kick start the project. Though after having a frustrated but kind chat with the kind folks over at EEVBlog the excellent youtuber mikeselectricstuff tipped off about a contender! Just like that Microchip and their PIC32MZ got thrown into the mix.
As in any project I start every decision with being as open minded as possible. Gathering information and the last part has taken me too long to be good at: ASKING FOR ADVICE AND HELP!
There’s never anything wrong with asking kindly for input from your peers.
Narrowing it back down
Let’s take a step back on evaluate what’s important when selecting a micro for a project that you want out of the door. Not a project for learning. I love an opportunity to learn, but this project is not it. I’m hyped and want to get started! So, let’s review:
- Peripheral support for the intended selection of external input and output
- Sensible package (for me this means no BGA)
- More than enough space to fit the current scope of the program, plus additional features of the future
- Time to market
- Any previous experience with the chip or it’s close relatives?
- Is the part released and available in high quantities?
- Is the part already used in designs you can play with, a devkit perhaps?
Make a decision and stick with it as long it’s practical
With that in mind I came to realize that I should go for the 32bit family I’ve got the most experience in and that is the STM32F1. It’s what we’ve used over at Wice AS:
This particular board is hand soldered. And my first experience with surface mount components. Never going back!
So, why go through this exercise if I knew all along that I had previous experience with a chip that could probably do what I needed from it?
Maybe there existed a microcontroller designed especially for streaming four channels of audio off an SD card! Though, I have more tasks planned for this thing so even that would not change my mind.
I’ll be using the smallest STM32F103Z I can get away with!