element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Raspberry Pi
  • Products
  • More
Raspberry Pi
Blog P42 Pico M.2: A RPI Pico RP2040 board in new form factor.
  • Blog
  • Forum
  • Documents
  • Quiz
  • Events
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Raspberry Pi to participate - click to join for free!
Featured Articles
Announcing Pi
Technical Specifications
Raspberry Pi FAQs
Win a Pi
GPIO Pinout
Raspberry Pi Wishlist
Comparison Chart
Quiz
  • Share
  • More
  • Cancel
Group Actions
  • Group RSS
  • More
  • Cancel
Engagement
  • Author Author: wolfgangfriedrich
  • Date Created: 10 Aug 2024 11:55 PM Date Created
  • Views 2034 views
  • Likes 14 likes
  • Comments 7 comments
Related
Recommended
  • rpi pico
  • rp2040
  • m.2

P42 Pico M.2: A RPI Pico RP2040 board in new form factor.

wolfgangfriedrich
wolfgangfriedrich
10 Aug 2024

So, after carrying this idea around since October last year, I finally got my act together and designed/built my RPI Pico RP2040 M.2 dev-board. It is a M.2 2230 card with A and E key and has as many communication interfaces to the M.2 side as possible. USB, UART, I2C and status/control signals. All other GPIOs are on castellated pins on the perimeter of the board. SWD debug interface and +3.3 V/GND is accessible too. 2 GPIOs could be traded for a 4-pin QWIIC header. I tried a poor-mans version of the castellated pins, because the board and assembly house is charging ridiculous amounts for a 3-sided castellation and I knew the board will not go anywhere at all.

But here is the kicker: I received those boards back on Wednesday last week and on Thursday was the big announcement of the brand new RP2350 chip family. I might have waited with the order to take advantage of the superior functionality, but with my un-timely timing I did not have to make this decision. In the end, I do have working boards in hand now and the new chips will not be available for some time. I take that as a win.

I was fascinated by the M.2 interface since I read about it first as a new standard for peripherals (insert obligatory XKCD 927), but it did not catch a good hold in the maker world yet. It is all about professional PCIe SSDs and WiFi cards for now. There was a proof of concept from [Timonsku] about a similar card as mine, but that one did not become an actual product.  

Here are some pictures from my board as a proof that it really exists on my bench.
- The board itself (22mm x 30mm is really tiny)

image  image

- When the frame for pick&place is about 7 times larger than the board

image

- 1st test using a USB cable instead of a M.2 connection and getting to blinky

image

- Schematic pages

image

image

And here is a full list of features:
- M.2 2230-D5-AE card (22 mm x 30 mm; D5 = 1.5mm on top and bottom side violated by the QWIIC connector and the bottom SD card holder; A and E key)
- Used interfaces on the M.2: USB, UART, I2C, ALERT, WAKE, DISABLE1/2, LED 1/2, VENDOR_DEFINED
- 1.8V regulator for level-shifters
- Power LEDs for 3.3 V and 1.1 V
- RP2040 peripherals: 2 MB Flash, SWD debug acccess, RESET and BOOTSEL button, QWIIC connector, 1 LED, 1 solder bridge for config, 9 GPIOs on castellated pins
- castellated pins on 25.4 mm/0.1" raster (almost with a 22 mm board)
- optional uSD card holder on the bottom side
 
 It is really hard to find good information when manufacturer use M.2 connections, which interface is present. My current favourite is the RadXA ROCK 3A SBC. This one has USB, UART and I2C on the M.2 connector available. A unit will be on order soon. I will not have a chance to test my board in a real M.2 setup until mid of September, after I am back from traveling.
 
 Currently my initial board has a USB cable soldered with a 3.3 V regulator on the VBUS wire. I will add a 1.8V UART-USB cable and a loopback to the QWIIC connector to test out the other interfaces. And I need to buy the correct uSD holder to have that tested as well. A lot more to test, but getting to blinky is always a good feeling.
 
 I did ignore the PCIe interface for now until a clever mind does an implementation with the use of the PIOs on the RP2040/2350. If anybody sees a major flaw in this design, please let me know in the comments. And I just saw Shabaz' review of the Pirimoni Pico Plus 2 with the comments about castellated pins. Good points, I had to add them because there was just no room for full through holes for GPIO access and my board with the edge connector is not really a good use case to be soldered on a carrier anyways. Hm, maybe it is, when programmed in a M.2 slot and then mounted somewhere else. 
 
 My long term plan is to sell this board to the public, but I will probably hold off until the RP2350A is available as chip, unless I get an overwhelming demand response for the current version as it is. In the back of my head is also a M.2 PicoW compatible board, but that is very long term and I am dreading the EMC compliance journey already. Maybe the Pico2W has a full module with integrated antenna.
 

  • Sign in to reply
  • wolfgangfriedrich
    wolfgangfriedrich 5 months ago in reply to wolfgangfriedrich

    Documentation update

    SPI1 is working with the following hardware setup:

    define     GP    wire        SD adapter     SDcard pin

    SD_CS   13    green      D3                    2

    SD_DI     12    black       D0                   7

    SD_DO   11    blue         CMD               3

    SD_CLK 10   grey          CK                   5

    This was more difficult than it should be, but finally it is done.

    image

    image

    SDcard test.
    Writing to test.txt...done.
    test.txt:
    1161011151161051101033249443250443251461310
    SD Card Speed Test...
    Writing to byte.txt...done.
    Duration [millisec]: 8250
    FileSize [bytes]: 1048576
    Write Speed(8bit) [KByte/sec]: 128
    Writing to 16bit.txt...done.
    Duration [millisec]: 13657
    FileSize [bytes]: 2097152
    Write Speed(16bit) [KByte/sec]: 157
    Writing to 32bit.txt...done.
    Duration [millisec]: 23569
    FileSize [bytes]: 4194304
    Write Speed(32bit) [KByte/sec]: 178
    done.
    >d
    
    SDcard root directory.
    System Volume Information/
            IndexerVolumeGuid               76      CREATION: 2024-12-20 22:24:20   LAST WRITE: 2024-12-20 22:24:22
            WPSettings.dat          12      CREATION: 2024-12-20 22:24:40   LAST WRITE: 2024-12-20 22:24:42
    test.txt                18      CREATION: 2098-01-01 00:00:12   LAST WRITE: 2098-01-01 00:00:42
    byte.txt                1048576 CREATION: 2098-01-01 00:00:42   LAST WRITE: 2098-01-01 00:00:58
    16bit.txt               2097152 CREATION: 2098-01-01 00:00:58   LAST WRITE: 2098-01-01 00:01:22
    32bit.txt               4194304 CREATION: 2098-01-01 00:01:22   LAST WRITE: 2098-01-01 00:01:12
    >uSD Card removed!

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • wolfgangfriedrich
    wolfgangfriedrich 6 months ago in reply to wolfgangfriedrich

    For whatever reason (which I will find out later) I could not make the SD card work on the SPI1 port of the RPi Pico with (CS=GPIO13, CLK=GPIO10, MOSI=GPIO11, MISO=GPIO12).

    So I did some re-wiring and used the standard SPI port with the pin mapping as follows:

    #define SD_CS         17
    #define SD_DI         16
    #define SD_DO         19
    #define SD_CLK        18
    
    // uSD card
    SPI.setRX(SD_DI);
    SPI.setCS(SD_CS);
    SPI.setSCK(SD_CLK);
    SPI.setTX(SD_DO );

    This approach worked flawlessly and I could do all the file system commands provided by the SD.h library.

    A simple speed test did show sufficient performance for basic data logging:

    SD Card Speed Test...
    Writing to byte.txt...done.
    Duration [millisec]: 10377
    FileSize [bytes]: 1048576
    Write Speed(8bit) [KByte/sec]: 102
    Writing to 16bit.txt...done.
    Duration [millisec]: 15828
    FileSize [bytes]: 2097152
    Write Speed(16bit) [KByte/sec]: 136
    Writing to 32bit.txt...done.
    Duration [millisec]: 28910
    FileSize [bytes]: 4194304
    Write Speed(32bit) [KByte/sec]: 146
    done

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • wolfgangfriedrich
    wolfgangfriedrich 8 months ago

    As it happens too often, this revision 1 board has its issues. With my RadXA ROCK 3A SBC not arrived yet, I was going for the fly-wire test approach.

    imageimage

    USB and power through an external 3.3 V regulator are working flawlessly. Power LEDs are on and the user LED is blinking away. Nice! UART on the m.2 and on GPIOs are doing simple loopback and the USB/UART is running a simple command line already.

    Things that did not work out of the box: I2C (of course). I should pay more attention to the pin mapping. I cannot use I2C1 at the same time on the m.2 and the QWIIC connector. Also pin4 on the QWIIC is SCL, not SDA. Nothing a few cuts and wires cannot fix. Now I have a loop-back from the m.2 end to the QWIIC connector. One port is master, one is slave. Mint.
    More wires will be required to test the uSD card, the SPI signals are connected up-sidedown to the SPI port on the RP2040. Pin mapping again! I blame this one on the schematic symbol, not showing all pin functions. 

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • shabaz
    shabaz 11 months ago in reply to wolfgangfriedrich

    Oh well, it was worth a try!

    I just took a look, JLC PCB typically charge about $39 for castellations, which is a lot for a prototype. : (

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • wolfgangfriedrich
    wolfgangfriedrich 11 months ago

    I managed to solder pin headers to the castellated holes, but only barely. Had to use a lot of hot glue to hold the header in place and still managed to rip off one pad image .
    Real holes would work much better, I give this idea a -1 out of 10. Would not recommend.
    Even better is probably adding wires and have the pin headers somewhat strain-relieved from the 0.8mm PCB.

    image

    image

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
>
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube