Home
JAQForum Ver 24.01
Log In or Join  
Active Topics
Local Time 08:51 24 Nov 2024 Privacy Policy
Jump to

Notice. New forum software under development. It's going to miss a few functions and look a bit ugly for a while, but I'm working on it full time now as the old forum was too unstable. Couple days, all good. If you notice any issues, please contact me.

Forum Index : Microcontroller and PC projects : ESP32-S3 some comments

Author Message
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 9104
Posted: 03:16pm 22 Jan 2024
Copy link to clipboard 
Print this post

I've been playing with the ESP32-S3 as it looks on the surface an interesting chip. 240MHz dual processors + external flash like the RP2040 BUT in addition external OctalSPI SRAM - typically 8Mb

The other big enhancement in the S3 is a LCD controller (like the STM32H7). This can be programmed with all the usual parameters, clock speed, sync pulses, front and back porch values and either 8 or 16 bit RGB outputs.

My findings thus far are disappointing.

It is easy to set up LCD panels and VGA to quite high resolutions with a framebuffer in the OctalSPI RAM and, in the absence of other bus activity, the images are rock solid. However, as soon as you start to try more advanced things cracks start to appear.

There is a demo code online of a 800x480 display with touch input playing a mp3 file over I2S at the same time as refreshing the display (static image). However, the pixel rate is set to 8MHz meaning the screen is only refreshed at about 14Hz and flickers like crazy. Setting the pixel clock any higher results in the image breaking up once the I2S output starts or even when loading an image.

My experiments with VGA are the same. Nice static images but as soon as other bus activity starts, such as copying framebuffers, then strange artifacts start to appear making anything requiring large scale updates, like a game, a non-starter.
The PSRAM runs at 80MHz but shares the Octal SPI but with the flash memory containing the program (also 80MHz). However, unlike normal memory mapped ram, each access needs the read and/or write address setting up first before anything can be accessed so depending on the application this can create a big overhead.
Bitluni has developed a VGA library for the S3 but hasn't really progressed anything with it - I suspect for the same reasons.

VGA has been implemented in Annex32 but, without reading all of a very long thread, my quick impression is that users are also struggling with image integrity and getting monitors to hold lock

I'll probably keep playing for a bit but hopes for a very cheap CMM3 don't look too promising with this device.
 
stanleyella

Guru

Joined: 25/06/2022
Location: United Kingdom
Posts: 2119
Posted: 03:51pm 22 Jan 2024
Copy link to clipboard 
Print this post

I bought a esp32 vga board but can't do c. I looked at Fabgl and it looked clever :(
 
Mixtel90

Guru

Joined: 05/10/2019
Location: United Kingdom
Posts: 6778
Posted: 03:58pm 22 Jan 2024
Copy link to clipboard 
Print this post

Quite a disappointment, Peter. You can't win 'em all though.
Mick

Zilog Inside! nascom.info for Nascom & Gemini
Preliminary MMBasic docs & my PCB designs
 
atmega8

Guru

Joined: 19/11/2013
Location: Germany
Posts: 722
Posted: 05:37pm 22 Jan 2024
Copy link to clipboard 
Print this post

But also without VGA "Graphics" MMBASIC on this Chip would be cool;-)
Edited 2024-01-23 03:38 by atmega8
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 9104
Posted: 07:13pm 22 Jan 2024
Copy link to clipboard 
Print this post

Ive made a bit of progress see here .

Basically the LCD peripheral works nicely when the framebuffer is in internal RAM and it it won't fit a 640x480x8bit framebuffer in internal RAM so this is 640x400 which just fits.
 
mclout999
Guru

Joined: 05/07/2020
Location: United States
Posts: 469
Posted: 08:18pm 22 Jan 2024
Copy link to clipboard 
Print this post

You might want to look at this video by the author of FABGL describing his work on making an S3 version and it seems he has ironed some thing out. https://www.youtube.com/watch?v=muuhgrige5Q&t=658s
 
cicciocb
Regular Member

Joined: 29/04/2014
Location: France
Posts: 70
Posted: 08:38pm 22 Jan 2024
Copy link to clipboard 
Print this post

  matherp said  
VGA has been implemented in Annex32 but, without reading all of a very long thread, my quick impression is that users are also struggling with image integrity and getting monitors to hold lock


I think you stopped reading too early......  


1
2
3
4
5
6
7

On my channel there are other videos showing the VGA ....
 
gadgetjack
Senior Member

Joined: 15/07/2016
Location: United States
Posts: 142
Posted: 03:39am 23 Jan 2024
Copy link to clipboard 
Print this post

That is a pretty fast looking demo there Peter.
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 9104
Posted: 08:23am 23 Jan 2024
Copy link to clipboard 
Print this post

  Quote  On my channel there are other videos showing the VGA ....


Looks good - any chance of you sharing some code?

  Quote  That is a pretty fast looking demo there Peter.


That's with a 10mSec pause between writes
Edited 2024-01-23 18:25 by matherp
 
Volhout
Guru

Joined: 05/03/2018
Location: Netherlands
Posts: 4222
Posted: 08:41am 23 Jan 2024
Copy link to clipboard 
Print this post

  matherp said  
  Quote  That is a pretty fast looking demo there Peter.


That's with a 10mSec pause between writes


Must be..
The picoVGA is 10x faster. I added the 10ms pause, and now slowed down identical in speed. But the ESP32-S3 has higher resolution (color in 640x400) than the pico (color in 320x240) so it paints roughly 8x more pixel data (8 bit color).
Nice..

Volhout
Edited 2024-01-23 18:42 by Volhout
PicomiteVGA PETSCII ROBOTS
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 9104
Posted: 08:46am 23 Jan 2024
Copy link to clipboard 
Print this post

  Quote  But the ESP32-S3 has higher resolution (color in 640x400) than the pico (color in 320x240) so it paints roughly 4x more pixel data.


And its RGB332 not RGB121, remember though that mode 2 on the PicoMite is actually 320x480. The firmware duplicates every second line to create the 320x240 image
 
atmega8

Guru

Joined: 19/11/2013
Location: Germany
Posts: 722
Posted: 12:04pm 24 Jan 2024
Copy link to clipboard 
Print this post

"Looks good - any chance of you sharing some code?"


May be a succesfull Joint Venture?

 
 
lew247

Guru

Joined: 23/12/2015
Location: United Kingdom
Posts: 1702
Posted: 09:12am 09 Oct 2024
Copy link to clipboard 
Print this post

Peter you probably have seen this but just in case link

and also this
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 9104
Posted: 09:37am 09 Oct 2024
Copy link to clipboard 
Print this post

Not interested. Now that the RP2040 has proper H/W for generating HDMI and support for external RAM I don't see any point in looking at the ESP32 further. The in-built Basic is trivial - essentially just the open-source version I ported to a Tiny85
 
lew247

Guru

Joined: 23/12/2015
Location: United Kingdom
Posts: 1702
Posted: 09:56am 09 Oct 2024
Copy link to clipboard 
Print this post

The basic commands that allow you to configure the direction and status of GPIOs are very useful.

The first way for configuring I/O signals is based on the memory read and write functions, PEEK and POKE, respectively. This is a very low level mode and requires in-depth knowledge of the ESP32 module, which can also be found by consulting the component datasheet. The following example reads the contents of address 0x3FF44004 (register GPIO_OUT_REG), put it in OR with 0x04 (binary 100) and finally writes the value at the same address. This corresponds to setting GPIO2 high:

The address could be a memory address or a register. In this case, as we can see again on the datasheet, the address is inside the 4kB address space reserved for GPIO:

The second way, much simpler and more immediate, is to use the IODIR (set GPIO input or output direction), IOSET (set value of an output GPIO) and IOGET (get the value of an input GPIO) functions. Here is an example which first sets the direction of GPIO2 as output, then get and sets its value:
 
stanleyella

Guru

Joined: 25/06/2022
Location: United Kingdom
Posts: 2119
Posted: 05:17pm 09 Oct 2024
Copy link to clipboard 
Print this post

Not interested. Now that the RP2040 has proper H/W for generating HDMI and support for external RAM I don't see any point in looking at the ESP32 further. The in-built Basic is trivial - essentially just the open-source version I ported to a Tiny85
https://www.aliexpress.com/item/33041602035.html
pity, vga and ps2 sockets, remind you of something
 
Print this page


To reply to this topic, you need to log in.

© JAQ Software 2024