ESPi32 - SBC concept with ESP32

User avatar
Vader_Mester
Posts: 300
Joined: Tue Dec 05, 2017 8:28 pm
Location: Hungary
Contact:

ESPi32 - SBC concept with ESP32

Postby Vader_Mester » 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 :D

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.
ESPi32_concept.png
ESPi32_concept.png (205.08 KiB) Viewed 6841 times
Regards,
Vader[BEN]

Code: Select all

task_t coffeeTask()
{
	while(atWork){
		if(!xStreamBufferIsEmpty(mug)){
			coffeeDrink(mug);
		} else {
			xTaskCreate(sBrew, "brew", 9000, &mug, 1, NULL);
			xSemaphoreTake(sCoffeeRdy, portMAX_DELAY);
		}
	}
	vTaskDelete(NULL);
}

Deouss
Posts: 425
Joined: Tue Mar 20, 2018 11:36 am

Re: ESPi32 - SBC concept with ESP32

Postby Deouss » Thu Jul 26, 2018 10:11 am

This looks very good. Will design be open sourced?

User avatar
Vader_Mester
Posts: 300
Joined: Tue Dec 05, 2017 8:28 pm
Location: Hungary
Contact:

Re: ESPi32 - SBC concept with ESP32

Postby Vader_Mester » Thu Jul 26, 2018 11:14 am

Deouss wrote:This looks very good. Will design be open sourced?
Of course! This is why I'm posting this here 8-) And I keep posting as I progress.
For the moment I'm focusing on the hardware part, and I'm hoping to find a competent people who can help me on the software side, to be tested on the shipped boards.
Designs would be available on OSHPark.

I'm also planning to have 2 versions. 1 which would have the USB and ethernet and GPIO connectors soldered and 1 that doesn't have the connectors soldered, but sent with the board separately, so that people can put them inside compact stuff.
I always had problems with the Raspberry having such a big profile, because of those connectors, I have hard time integrating it into small form factor devices.

Code: Select all

task_t coffeeTask()
{
	while(atWork){
		if(!xStreamBufferIsEmpty(mug)){
			coffeeDrink(mug);
		} else {
			xTaskCreate(sBrew, "brew", 9000, &mug, 1, NULL);
			xSemaphoreTake(sCoffeeRdy, portMAX_DELAY);
		}
	}
	vTaskDelete(NULL);
}

Who is online

Users browsing this forum: No registered users and 35 guests