ESPi32 - SBC concept with ESP32
Posted: Wed Jul 25, 2018 10:09 am
Dear All,
I'm currently working on a design, aiming to help makers and developers alike, to get the most out of an ESP32 system.
I wanted to create something that can use a UI interface, and felxible enough for big projects.
The board shown below will be a Raspberry Pi form factor, and as you can see, it has lot's of good stuff on it.
The core of the board will be an STM32L476 microcontroller (referred to below as SMC - System management controller). This is a Cortex M4 controler, with 80MHz clock. It has USB FS, both device and Host modes are available, with OTG support.
One rare feature for this low cost controller is that it has a parallel interface, and QSPI. Additionaly it has lots of GPIO Pins.
As an SMC, it would houskeep the board, power and periferials, and control and set up many things.
The board will only have 2 USB ports, which - hopefully - would be able to support USB flash driver, and HID devices as a host, both controlled by the SMC through a USB hub controller IC.
And yes, I'm plannig to make a UI that can be controlled by mouse and keyboard as well... just for the sake of it
The board would feature an FT813, which is a QSPI display controller. It's able to drive an 800x480 resolution screen, and it has capaitive touch support with an integrated touch engine.
I wanted this from the beggining, since I wanted to create a design that is UI heavy, and with this chip it is extremely easy to make gorgeous UIs, since the host only need to send commands to this chip, which do the rendering and other jazz. Additially it is capable of MJPEG video playback, which comes in handy for streaming camera data over the network.
Also it can use the most out the the ESP32's QSPI since the FT813 can use a 30MHz max SPI clock, even with the QSPI configured.
By default on bootup, the FT813 should be driven by the SMC, and you can interact with the board and stuff going on graphicaly, but it can be driven by the ESP32 ss well. Additionally I'm planning to feature a debug console, so that you can see UART log messages on here coming from the ESP32's UART port, without the need to connect a PC to it.
On software side, APIs will be written so that either the SMC can control functions of the ESP32, or vice versa.
There would be a 40pin FPC connector and a 6pin connector, to connect any display up to 800x480 resolution. 1 caviat here is that I primarily deisgned the board to be used with capacitive touch, so using resistive touch is somewhat limited but can be done of course.
The baord will have an Audio codec, an SD card slot, and a LAN port an Phy, with separated signal transformer with PoE compatibility.
The big GPIO header (J8) will be pin compatible with the Pi, and therefore gives you the ability to work with hat boards deisgned for the Pi.
To achieve multiple GPIO configuration and connections between the SMC and the ESP32, and external bus-switch system will be designed with high speed bus switch ICs, to make the various interconnects on the board. This system will be controlled by the SMC. So you can configure with ease, how to rout the GPIO signals coming in and out of the ESP32 and SMC.
1 cool feature I want to include is a common 8bit wide bus sistem. This will use the ESP32's I2S interface, while the SMC can use it's own parallel interface. This will allow very rapid data transfer between chips.
Of course the SMC can be used as a GPIO extender.
What has been not decided yet is the size of the SMC. Currently I was thinking about using a 64pin LQFP package, but this would soon be changed to the 144pin LQFP. More pins are better as they say, but it will increase the cost, and complexity of the design.
Additionaly I was thinking about adding an FT2232H, found on the WROVER-Kit board. This would not only enable both UART and JTAG to both the SMC and ESP32, but will enable debug and programming for the SMC-s SWD interface. Since the FT2232H has 2 output busses and both can be configured as JTAG, I think this a no brainer in terms of functionality... but then again price can say otherwise.
I'm designing it a bit slowly next to my other activities, but it's going.
I will welcome your opinions and support for this concept. Regards,
Vader[BEN]
I'm currently working on a design, aiming to help makers and developers alike, to get the most out of an ESP32 system.
I wanted to create something that can use a UI interface, and felxible enough for big projects.
The board shown below will be a Raspberry Pi form factor, and as you can see, it has lot's of good stuff on it.
The core of the board will be an STM32L476 microcontroller (referred to below as SMC - System management controller). This is a Cortex M4 controler, with 80MHz clock. It has USB FS, both device and Host modes are available, with OTG support.
One rare feature for this low cost controller is that it has a parallel interface, and QSPI. Additionaly it has lots of GPIO Pins.
As an SMC, it would houskeep the board, power and periferials, and control and set up many things.
The board will only have 2 USB ports, which - hopefully - would be able to support USB flash driver, and HID devices as a host, both controlled by the SMC through a USB hub controller IC.
And yes, I'm plannig to make a UI that can be controlled by mouse and keyboard as well... just for the sake of it
The board would feature an FT813, which is a QSPI display controller. It's able to drive an 800x480 resolution screen, and it has capaitive touch support with an integrated touch engine.
I wanted this from the beggining, since I wanted to create a design that is UI heavy, and with this chip it is extremely easy to make gorgeous UIs, since the host only need to send commands to this chip, which do the rendering and other jazz. Additially it is capable of MJPEG video playback, which comes in handy for streaming camera data over the network.
Also it can use the most out the the ESP32's QSPI since the FT813 can use a 30MHz max SPI clock, even with the QSPI configured.
By default on bootup, the FT813 should be driven by the SMC, and you can interact with the board and stuff going on graphicaly, but it can be driven by the ESP32 ss well. Additionally I'm planning to feature a debug console, so that you can see UART log messages on here coming from the ESP32's UART port, without the need to connect a PC to it.
On software side, APIs will be written so that either the SMC can control functions of the ESP32, or vice versa.
There would be a 40pin FPC connector and a 6pin connector, to connect any display up to 800x480 resolution. 1 caviat here is that I primarily deisgned the board to be used with capacitive touch, so using resistive touch is somewhat limited but can be done of course.
The baord will have an Audio codec, an SD card slot, and a LAN port an Phy, with separated signal transformer with PoE compatibility.
The big GPIO header (J8) will be pin compatible with the Pi, and therefore gives you the ability to work with hat boards deisgned for the Pi.
To achieve multiple GPIO configuration and connections between the SMC and the ESP32, and external bus-switch system will be designed with high speed bus switch ICs, to make the various interconnects on the board. This system will be controlled by the SMC. So you can configure with ease, how to rout the GPIO signals coming in and out of the ESP32 and SMC.
1 cool feature I want to include is a common 8bit wide bus sistem. This will use the ESP32's I2S interface, while the SMC can use it's own parallel interface. This will allow very rapid data transfer between chips.
Of course the SMC can be used as a GPIO extender.
What has been not decided yet is the size of the SMC. Currently I was thinking about using a 64pin LQFP package, but this would soon be changed to the 144pin LQFP. More pins are better as they say, but it will increase the cost, and complexity of the design.
Additionaly I was thinking about adding an FT2232H, found on the WROVER-Kit board. This would not only enable both UART and JTAG to both the SMC and ESP32, but will enable debug and programming for the SMC-s SWD interface. Since the FT2232H has 2 output busses and both can be configured as JTAG, I think this a no brainer in terms of functionality... but then again price can say otherwise.
I'm designing it a bit slowly next to my other activities, but it's going.
I will welcome your opinions and support for this concept. Regards,
Vader[BEN]