Home
JAQForum Ver 24.01
Log In or Join  
Active Topics
Local Time 08:23 26 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 : A new Pico PCB for V5.09.00 - comments

     Page 1 of 3    
Author Message
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 9115
Posted: 05:52pm 10 Feb 2024
Copy link to clipboard 
Print this post


Existing PCB designs for LCDs all suffer from the slow speed of transfer to the screen so I thought can I get the Pico to support a full 16-bit parallel RGB565 I/F and still make it useful?

The answer was NO

However, I could get it to support RGB555 and that one pin makes the difference. With the new USB support for Keyboard, mouse and game controllers the allocation of every single pin on the RP2040 is not the issue it would have been previously.

Here is the design:


3e2a4967-01dd-411f-8f0d-87a8da272427.pdf

The intention is that this design can, if you wish, be used completely standalone with the LCD acting as the console device and, of course, a USB keyboard for input.


Pins GP0 to GP15 are the data pins for the LCD except that GP5 (least significant bit of green) is not connected and G0 on the LCD is connected to G1

GP16, GP17, and GP18 are the control lines for the LCD. The reset line is connected to the processor reset which in turn is controlled by a proper reset controller chip (TCM809)

GP5 and GP19 are used for the touch I/O (CS and IRQ)

GP20, GP22 and GP23 are SYSTEM SPI

GP21 is the SDcard chip select

GP24 and GP25 are the SYSTEM I2C and control the RTC and a pair of 8-bit port expanders (TCA6408)
that individually can be selected for 3.3 or 5V I/O and connect to a 20-pin card-edge header

GP26 and GP27 are the audio output pins and output via a line level jack and stereo PAM8302 amplifiers

and finally

GP28 and GP29 are the serial console connected to the outside world by a ch340 USB to TTL convertor.

The USB-C connector for the serial console also provides the power.

I've included interfaces for both 34-pin and 40-pin LCDs so that covers:

2 variants of ILI9341
All variants of SSD1963 up to 7" (480x272 and 800x480)
and both types of 4" 800x480 LCD (OTM8009A and NT35510)

The  reason for pairs of both the 34-pin and 40-pin headers is to allow screens of different sizes to be roughly centered, however 1 or both of the duplicates may not survive the layout phase.

Thoughts?
 
thwill

Guru

Joined: 16/09/2019
Location: United Kingdom
Posts: 4038
Posted: 06:57pm 10 Feb 2024
Copy link to clipboard 
Print this post

  matherp said  Thoughts?


You need to get a hobby .

Hope you are having a good weekend,

Tom
Game*Mite, CMM2 Welcome Tape, Creaky old text adventures
 
Amnesie
Guru

Joined: 30/06/2020
Location: Germany
Posts: 396
Posted: 07:05pm 10 Feb 2024
Copy link to clipboard 
Print this post

Nice, but the "old" PicoMiteVGA firmware with PS/2 is still supported? For me I don't see the need for USB and it would be bad if I now have to abandon all my picoMiteVGA PCB designs.

-Daniel
 
Mixtel90

Guru

Joined: 05/10/2019
Location: United Kingdom
Posts: 6786
Posted: 07:15pm 10 Feb 2024
Copy link to clipboard 
Print this post

This is an alternative to the VGA - it's a much-upgraded standard PicoMite. The display will be fast as it's 16-bit parallel - good for the larger screen LCDs. It will also make good use of colour on those displays (you get more colour on LCD than you can get on the PicoMite VGA). So, it's different to the PicoMite VGA, not a replacement for it.



Comment for Peter:
The thing that would bother me most would be the choice of the TCA6408. This appears to be SMD only, but all the data pins are exposed on the GPIO connector. Any damage to a pin is a SMD replacement rather than simply swapping a DIL like a MCP23008 or something similar. Alternatively a Pico could be used as a GPIO output (it's a bit big though).
Edited 2024-02-11 05:25 by Mixtel90
Mick

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

Joined: 11/12/2012
Location: United Kingdom
Posts: 9115
Posted: 07:16pm 10 Feb 2024
Copy link to clipboard 
Print this post

  Quote  Nice, but the "old" PicoMiteVGA firmware with PS/2 is still supported?


Yes, of course. If you download the 5.09.00 beta you will see there are now 3 variants.

  Quote  You need to get a hobby


Got lots. Turned this earlier today (new old lathe arrived yesterday)


 
thwill

Guru

Joined: 16/09/2019
Location: United Kingdom
Posts: 4038
Posted: 07:18pm 10 Feb 2024
Copy link to clipboard 
Print this post

  matherp said  
  thwill said  You need to get a hobby


Got lots. Turned this earlier today (new old lathe arrived yesterday) ...


I'm very jealous.

Tom
Game*Mite, CMM2 Welcome Tape, Creaky old text adventures
 
stanleyella

Guru

Joined: 25/06/2022
Location: United Kingdom
Posts: 2127
Posted: 09:59pm 10 Feb 2024
Copy link to clipboard 
Print this post

Interesting ideas. would i2c to parallel display be same speed as to i2c display?
a dual dil port expander also and no stereo amp, power from usb
 
Mixtel90

Guru

Joined: 05/10/2019
Location: United Kingdom
Posts: 6786
Posted: 10:37pm 10 Feb 2024
Copy link to clipboard 
Print this post

A graphic LCD RGB555 display over I2C would be painfully slow. It's not practical because there's a lot of data to transfer. What matherp is proposing is probably the fastest RGB555 display you can get on a PicoMite. The price you pay is the number of GPIO pins used, hence the port expanders to get some back.
Mick

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

Guru

Joined: 25/06/2022
Location: United Kingdom
Posts: 2127
Posted: 11:05pm 10 Feb 2024
Copy link to clipboard 
Print this post

  Mixtel90 said  A graphic LCD RGB555 display over I2C would be painfully slow. It's not practical because there's a lot of data to transfer. What matherp is proposing is probably the fastest RGB555 display you can get on a PicoMite. The price you pay is the number of GPIO pins used, hence the port expanders to get some back.

I see.
 
Volhout
Guru

Joined: 05/03/2018
Location: Netherlands
Posts: 4233
Posted: 10:59am 11 Feb 2024
Copy link to clipboard 
Print this post

Hi Peter,

By connecting G0 to G1 on the LCD, can you still configure the LCD driver correctly ?
I assume the data lines are also used for configuration.
Can you still do hardware scrolling on the SSD display ?

Regards,

Volhout
Edited 2024-02-11 21:02 by Volhout
PicomiteVGA PETSCII ROBOTS
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 9115
Posted: 02:36pm 11 Feb 2024
Copy link to clipboard 
Print this post

  Quote  By connecting G0 to G1 on the LCD, can you still configure the LCD driver correctly ?

No, I realised this last night too - I'm going to have to try and multiplex the use of one of the pins or something. This problem only arises with the need for a serial console on the USB version. The standard PicoMite has enough pins assuming all I/O is through the port expanders.

  Quote  Can you still do hardware scrolling on the SSD display ?


Yes
Edited 2024-02-12 00:41 by matherp
 
stanleyella

Guru

Joined: 25/06/2022
Location: United Kingdom
Posts: 2127
Posted: 03:09pm 11 Feb 2024
Copy link to clipboard 
Print this post

When I used ili9341 with a uno and great cow basic, I didn't connect lcd reset to uno, I tied it high.
Scoped picomite ili9341 reset and seems hi always.
any use?
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 9115
Posted: 04:36pm 11 Feb 2024
Copy link to clipboard 
Print this post

I've now got most of the 16-bit drivers working except for the IPS 800x480 displays

Here are some timings for interest on a ILI9341 in different modes - all in mSec


                       SPI              8-BIT              16-BIT

CLS                     35.0              27.2                 6.6

FRAMEBUFFER COPY        35.3              23.2                 9.7  

FRAMEBUFFER MERGE       47.8              26.1                12.7

 
karlelch

Senior Member

Joined: 30/10/2014
Location: Germany
Posts: 172
Posted: 04:50pm 11 Feb 2024
Copy link to clipboard 
Print this post

Interesting. Why is 16bit so much faster?
 
darthvader
Regular Member

Joined: 31/01/2020
Location: France
Posts: 76
Posted: 09:46pm 11 Feb 2024
Copy link to clipboard 
Print this post

  karlelch said  Interesting. Why is 16bit so much faster?

 
Because in SPI you send bit per bit (so as serial and i2c) , in 8 bits you send 2 bytes and in 16 bits you just send one word    , it's allot faster but take allot more pins  

@Peter :
What was the mcu speed for this results ? , i tested some years ago on stm32h7 at 480 Mhz with DMA2D and LDTC at something like 1.2 to 1.4mS for CLS and your result are impressive with no dedicated hardware  
Theory is when we know everything but nothing work ...
Practice is when everything work but no one know why ;)
 
bigmik

Guru

Joined: 20/06/2011
Location: Australia
Posts: 2914
Posted: 10:26pm 11 Feb 2024
Copy link to clipboard 
Print this post

Hi Peter, All,

Do you think that by using a pair of fast 8 bit latches (1 high order the other low order) and 9 GPIO you could still get the required 16 pins, albeit with 2 x 8 bit loads using the 9th bit to control which latch is read to.

Then both latches (together) provide the 16 required bits.

This will no doubt be slower than direct 16 bits but still should be considerably faster than a single SPI.

The sequence could be like, enable high order latch, write relevant 8 bits, enable low order latch write relevant 8 bits, enable TFT, clock in the latched 16bits.

Yes requires extra latch circuitry but I think is a possibility.

Just tossing it out there for consideration.

Kind Regards,

Mick
Mick's uMite Stuff can be found >>> HERE (Kindly hosted by Dontronics) <<<
 
Mixtel90

Guru

Joined: 05/10/2019
Location: United Kingdom
Posts: 6786
Posted: 10:53pm 11 Feb 2024
Copy link to clipboard 
Print this post

Some of the displays can be set for either 8-bit or 16-bit operation. I'm thinking of the parallel version of the ILI9341 in particular.
Mick

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

Joined: 05/03/2018
Location: Netherlands
Posts: 4233
Posted: 07:19am 12 Feb 2024
Copy link to clipboard 
Print this post

@Peter,

Assuming you do not want to use the 6'th bit of green (G0) for video data, but do want the bit diring setup, you could use the LCD display D line (distinguishes between register write and scrren write) to switch a 74LV1G18 (single gate mux) on the GP5 pin. Then the pin is used for Touch CS when you are writing to screen, and touch is disconnected when setting up the LCD driver IC.

The 74LVC1G18 chip is a SOT23-6, and is easier to solder than the RP2040, much easier.

You have to use pullup(CS)/pulldown(G0) resistors for the outputs, just to make sure they are in controlled state when not used.

Volhout
Edited 2024-02-12 17:25 by Volhout
PicomiteVGA PETSCII ROBOTS
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 9115
Posted: 07:24pm 13 Feb 2024
Copy link to clipboard 
Print this post

I've been thinking more about this and the best solution I can come up with is combining TOUCH_CS and SD_CS on a single pin with an inverting transistor to one of chip selects. By definition, since they share the same SPI bus, only one can be low at any one time. With a bit of thought it should be possible to also allow both to be high by putting the output in high-Z mode.

If any of the electronics wizards want to propose a simple circuit to get all three states from a single pin I would be very appreciative

The truth table I want is

Input      Output 1      Output 2
HighZ       H              H
low         L              H
high        H              L

Edited 2024-02-14 05:40 by matherp
 
Mixtel90

Guru

Joined: 05/10/2019
Location: United Kingdom
Posts: 6786
Posted: 07:44pm 13 Feb 2024
Copy link to clipboard 
Print this post

I was looking at your circuit earlier today, wondering if there was a way to use it with the YD-RP2040. I hope it's me that's messed up, but is it correct that GP6 is going to two adjacent data pins on the display?


I can get your truth table with a twin op-amp (or comparator) and 5 resistors...
bias the pico output to 1.fv
use a string of 3 resistors to get 1V and 2V points for the op amp inputs.
it's like a 555. - on the top is linked to + on the bottom is linked to the pico output.
Now the top op amp goes low if the pico is high and the bottom op amp ios low if the pico is low.



Edited 2024-02-14 06:01 by Mixtel90
Mick

Zilog Inside! nascom.info for Nascom & Gemini
Preliminary MMBasic docs & my PCB designs
 
     Page 1 of 3    
Print this page
© JAQ Software 2024