The ADC problem as well as cost of the voltage level shifter leads me to think having a co-processor is the best solution. The last two posts look at 8 bit and 16/32 bit processors I could use for this purpose. For firmware update, I want the co-processor to have USB capability. This would allow me to get rid of the USB to serial bridge chip.
The choices:
I ended up with Microchip as the manufacturer for both architectures. The PIC16 line of controllers and the SAM32C21 line of controllers.
PIC16:
I am very familiar with the PIC16 controllers. They are generally fast for simple processes like data transfer. They are also generally less expensive. The development environment is MPLAB X provided by Microchip. It is available on the three Major desktop OSs.
SAM32:
The SAM32C21 line of controllers are ARM core M0+ based. I have never programmed any ARM systems at the bare metal level. I would expect to have a large learning curve getting started with ARM systems. I don’t know what development looks like for ARM systems. I do know there are compilers available on the three major Desktop OSs.
I have ordered some ARM based controller development boards. A couple of STM32F103s from china, and a 1 bitsy with a Black Magic Probe from Kickstarter(STM32F415). These are a great place to get started in ARM Cortex M architecture. I think learning the ARM Cortex M architecture is a good side project after I am done designing the Arduino Compass Toy.
The decision:
I have decided on the PIC16 line of chips. The important specifications are Built in USB, Wide voltage range, an SPI port that can work with DMA capabilities, and a protectable USB bootloader.
Arduino Compass Toy:
I played with OLED display this week and made a little progress. I was able to send a power on command and I measured a current change when that happened. I removed the serial data pins and the current stayed the same. So, now I know the display is receiving and acting on commands sent over serial. However, I sent a turn all pixels command on and supplied the high voltage and I never saw any light come out of the display.
Moving Forward:
Over the next few weeks, I will decide on the exact PIC16 chip I will use and start prototyping it into the circuit. The first things I want it to be able to do is reprogram the ESP-12F and have it’s own USB bootloader.
Would you have chosen differently? The ARM chips are significantly more powerful, would you have preferred that?