This last week we decided to drop the STM32 microcontroller for using a SmartFusion SoC. It is a mixed IC that contains a ARM CortexM3 core (called Microcontroller SubSystem – MSS), a FPGA and an analog bloc. This would allow students to practice not only microcontroller programming but also do logic exercises by programming the FPGA in some HDL.
Since this decision we all started to research about the SmartFusion, and from the moment we had already got some overall knowledge, each one is following an specific task. I’m working on the PCB schematics. I first listed all SmartFusion pins and descriptions. Now I’m trying to close the peripherals choice. I choose a motor driver IC, and then went to check the FTDI chip we had chosen. I found out it needs an external EEPROM attached, so I’m chosing one right now. I also discovered the FTDI chip resets in a USB to UART mode, and some sort of programming must be performed so it works in a different mode (JTAG for instance). The programming is performed via the USB port on the chip. FTDI provides some drivers and libraries. There is a Linux version of them, but it seems that Windows has a better support. That is an issue that will need further research when we try to program the FTDI.
Next thing is choosing an SPI Flash memory. It is a way to program the FPGA, and even if we don’t use it right now, as it is a cheap chip, we are going to put one. After that I think all ICs and major components are chosen.
After that I have to solve a little dilemma : which peripherals connect with the MSS IO pins, which ones connect to FPGA IO pins. Maybe multiplex some of them so they can be controlled either directly by the FPGA or by the MSS, but having in mind that the MSS has a lot less IO pins than the FPGA. If we programmed the FPGA with some IO controller bus, I think we could use FPGA IO pins from the MSS. This bus would be a slave to the main MSS’s AHB bus. Well, when we decide that I’ll surely write another post. Any suggestions on this issue are welcome =).
Possibly related posts: