Posted: 08:07am 25 Apr 2026 Copy link to clipboard
fred777 Regular Member
Hi there, would it be possible to feed parallel data to a pico running Memory share client from a non-pico device? For instance feeding external pixel data into the frame buffer?
Posted: 08:40am 25 Apr 2026 Copy link to clipboard
matherp Guru
In theory - yes. You will need to read into Memory.c on github to understand the synchronisation protocol needed to start the transfer. Briefly it works like this:
Posted: 08:51am 25 Apr 2026 Copy link to clipboard
fred777 Regular Member
Thanks for the great explanation! If I understand this correctly, the clock speed after the setup is completed doesn’t matter much, right? Would it matter if the host would only send data occasionally?
Posted: 08:54am 25 Apr 2026 Copy link to clipboard
matherp Guru
The client runs in a tight DMA/PIO loop waiting on the clock pulses so as long as the host stays in synch it should be OK
Posted: 09:10am 25 Apr 2026 Copy link to clipboard
fred777 Regular Member
Right, I’ll have a go at that. The idea is to feed the pixels from some stm mcus with attached camera directly into regions on the picomite’s screen buffer. And also gaining hdmi output along the way.
Posted: 08:38am 08 Jun 2026 Copy link to clipboard
fred777 Regular Member
int bus_width; // 4 or 8 data pins
This suggests that a 4 bit link could also be possible. But how would I tell MMBasic to use 4 pins only? I tried only connecting GP0-3 but then get [31] Memory Share Client 1, 0, GP0, GP10, addr%, 38400 Error : Sync failed - remote end not responding
Posted: 08:52am 08 Jun 2026 Copy link to clipboard
Posted: 09:07am 08 Jun 2026 Copy link to clipboard
fred777 Regular Member
Thanks, I was looking at an old version of the Manual.
Posted: 08:11am 09 Jun 2026 Copy link to clipboard
PhenixRising Guru
Following with interest
Posted: 04:50pm 10 Jun 2026 Copy link to clipboard
fred777 Regular Member
This is absolutely fantastic. I hooked up my good old "Black Pill" STM32 board to the Pico2. Spend an hour or so to get it running and now the STM32 can do HDMI :-) The random output comes from the STM via the 4 bit Memory Share Link, while the time is displayed by the pico. And now any MCU can have Bitmapped VGA or HDMI output using the Picomite as external graphics adapter with just 5 (or 9) pins. Just for fun I'm going to try with a Picaxe and Basic Stamp.
' Mikroe Basic for ARM dim picoclock as sbit at GPIOB_ODR.B0 dim picobyteout as byte at GPIOA_ODR dim picobytein as byte at GPIOA_IDR main: picobyteout = 0 picobytein = 0 ' Set B0 as output GPIO_Digital_Output(@GPIOB_BASE, _GPIO_PINMASK_0)
UART1_Write_Text("Phase1") GPIO_Digital_Input(@GPIOA_BASE, _GPIO_PINMASK_2 or _GPIO_PINMASK_3) UART1_Write_Text("2") GPIO_Digital_Output(@GPIOA_BASE, _GPIO_PINMASK_0 or _GPIO_PINMASK_1)
UART1_Write_Text("3") do byte1 = picobytein loop until byte1 = 9 Delay_ms 1
UART1_Write_Text("4") GPIO_Digital_Output(@GPIOA_BASE, _GPIO_PINMASK_0 or _GPIO_PINMASK_1 or _GPIO_PINMASK_2 or _GPIO_PINMASK_3) Delay_ms 5 UART1_Write_Text("56") picoclock = 1
Posted: 01:31pm 18 Jun 2026 Copy link to clipboard
fred777 Regular Member
I love the Memory share function! Memory share 8 bit link between an AVR and Picomite, the avr can write directly into the Picomite's screen memory. Now even a good old 8 bit MCU can have a VGA/HDMI display without too much fuss :-)