Driver+Firmware+PCB for Pi RP2040 PIO (i.e. an easy-to-configure FPGA-like card)

More
29 Aug 2022 20:51 - 29 Aug 2022 21:55 #250732 by edamametech
All – 

We’ve developed a driver + firmware + carrier board/front-end for the Pi Pico RP2040 for some internal projects.  The end use is similarly to FPGA-based cards (like the 7i76e), but it is much more configurable, the firmware is in easy-to-modify C and supply is not an issue. More details on why this is an interesting IC below.I’m posting here to see if there is interest in the community in opening sourcing this work (it will take some effort – so want to make sure others will find useful!).

Why the Pi Pico (RP2040)?
The Pi Pico is a newish chip developed inhouse by the Raspberry Pi foundation. It’s not an SBC, but instead an embedded microcontroller with an overlooked but very interesting peripheral:  8 programmable input output state machines (PIO).  These PIOs allow the writing of clock-tick accurate "micro-programs" for reading and writing of the GPIOs – perfect for tasks like generating PWM signals, reading encoders, etc. These "micro programs" are run-time configurable and loadable.

We found a number of advantages to this approach:
-  The firmware is relatively simple and easy to add custom features to – it’s in C.
-  The RP2040 is readily available in volume.
- We can easily configure and re-configure what each PIO does (stepgen, pwm, encoder)

Carrier Board
We’ve also developed a reconfigurable board for the PICO that ruggedizes/industrializes the I/O (like the FPGA-based cards do). But, given the flexible nature of the Pico PIO, we’ve made pluggable modules that provide different types of front-ends (i.e. differential buffered outputs for stepper drivers, protected inputs and output modules for general IO, relay board, etc.).  Thus, the same board can be “configured” to different types of realtime I/O - you can have it drive 8 servos, drive 2 servos and read 8 encoders, and so on (plus standard GPIO).Currently we are connected to the host LinuxCNC computer over SPI, but are looking at ethernet (if we can get the chips).

As mentioned, we’ve developed this for internal robotics/custom CNC manufacturing machines. However,  it occurred to me that there might be broader interest.  Would appreciate feedback.

Thanks!
JP
Last edit: 29 Aug 2022 21:55 by edamametech. Reason: Formatting
The following user(s) said Thank You: tommylight, elovalvo, besriworld, cakeslob, HansU, 1123M

Please Log in or Create an account to join the conversation.

More
29 Aug 2022 21:32 #250734 by tommylight
First, thank you, i never bothered to check the 2040 as i saw it just as another micro controller and the videos on youtube did not explain much.
Now i know why it is good.
I also like the flexibility of the board ...
Wait, no pictures? :)

Please Log in or Create an account to join the conversation.

More
29 Aug 2022 22:00 #250738 by edamametech
Yeah - I've been surprised how little attention this feature has gotten on the Pico. The other ICs that have this type of features (like from TI) generally require far more complex firmware.

And, no, I'm not posting pictures of my ugly V1 hand-soldered boards to the internet :). Will look into some renderings.

Please Log in or Create an account to join the conversation.

More
30 Aug 2022 08:06 #250762 by scotta
Interesting. I've got a couple of RP2040 3D Printer controller boards that I was looking to port Remora firmware to. You may have saved the effort! Looking forward to more details and some open source firmware.

Please Log in or Create an account to join the conversation.

More
30 Aug 2022 09:56 #250766 by tommylight


And, no, I'm not posting pictures of my ugly V1 hand-soldered boards to the internet :).

Why not? It shows the effort and "blood and sweat" that went into making it.
Also maybe give us a reason to laugh or be amazed ... :)

Please Log in or Create an account to join the conversation.

More
30 Aug 2022 13:33 #250778 by elovalvo
Already some time ago I thought that this microcontroller could be used as a support for Linuxcnc

forum.linuxcnc.org/18-computer/42276-rem...spi?start=550#240728
The following user(s) said Thank You: tommylight

Please Log in or Create an account to join the conversation.

More
06 Sep 2022 21:33 #251356 by andypugh
I keep meaning to buy some and work on getting SmartSerial working on the PIOs. Then it would be trival to make special-purpose peripherals and no new driver would be needed at the LinuxCNC end.
The following user(s) said Thank You: Bari, tommylight

Please Log in or Create an account to join the conversation.

More
25 Oct 2022 16:10 #255043 by koboldgn
Hi

I'm very interested in this project. Anyone already using it? 
I would be happy to help

Please Log in or Create an account to join the conversation.

More
25 Oct 2022 17:12 #255047 by HansU
It would be really great if you make this project open source!

I keep meaning to buy some and work on getting SmartSerial working on the PIOs. Then it would be trival to make special-purpose peripherals and no new driver would be needed at the LinuxCNC end.


Or what if we connect it via a serial port to the PC? Haven't calculated but I can imagine that it can achieve a reasonable update rate if setting the baud rate high enough.

Or have it as a low cost or space saving solution: Connect it to a RPi 4 or similar via SPI. For 3D printers and similar.

Please Log in or Create an account to join the conversation.

More
24 Jan 2023 02:14 #262789 by Bari
Any news, updates or open source git repo, etc. etc. for this project?

It's a great idea but of far less interest if it is just a closed source project.

Please Log in or Create an account to join the conversation.

Moderators: PCWjmelson
Time to create page: 0.137 seconds
Powered by Kunena Forum