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.
fred777 Regular Member Joined: 01/07/2021 Location: United KingdomPosts: 86
Posted: 08:07am 25 Apr 2026
Copy link to clipboard
Print this post
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?
matherp Guru Joined: 11/12/2012 Location: United KingdomPosts: 11479
Posted: 08:40am 25 Apr 2026
Copy link to clipboard
Print this post
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:
fred777 Regular Member Joined: 01/07/2021 Location: United KingdomPosts: 86
Posted: 08:51am 25 Apr 2026
Copy link to clipboard
Print this post
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?
matherp Guru Joined: 11/12/2012 Location: United KingdomPosts: 11479
Posted: 08:54am 25 Apr 2026
Copy link to clipboard
Print this post
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
fred777 Regular Member Joined: 01/07/2021 Location: United KingdomPosts: 86
Posted: 09:10am 25 Apr 2026
Copy link to clipboard
Print this post
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.
fred777 Regular Member Joined: 01/07/2021 Location: United KingdomPosts: 86
Posted: 08:38am 08 Jun 2026
Copy link to clipboard
Print this post
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
matherp Guru Joined: 11/12/2012 Location: United KingdomPosts: 11479
fred777 Regular Member Joined: 01/07/2021 Location: United KingdomPosts: 86
Posted: 09:07am 08 Jun 2026
Copy link to clipboard
Print this post
Thanks, I was looking at an old version of the Manual.
PhenixRising Guru Joined: 07/11/2023 Location: United KingdomPosts: 1944
Posted: 08:11am 09 Jun 2026
Copy link to clipboard
Print this post
Following with interest
fred777 Regular Member Joined: 01/07/2021 Location: United KingdomPosts: 86
Posted: 04:50pm 10 Jun 2026
Copy link to clipboard
Print this post
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