Platform3 (testing prototype)
Need a new P1 board for a battery powered full color E-Ink display...
Haven't made a P1 board in a very long time, so this is fun.
Here's the concept so far (see image).
Think the last "platform" board for P1 that we made was called "Express".
This is an expanded update.
USB connectors updated to USB-C
FTDI chip updated to FT231X.
Doing this in Eagle, think was ExpressPCB last time. That was smaller, this is full size...
Adding a QWIIC connector (cause that's an easy way to add peripherals).
Added two P2 style headers, not sure what will do with those yet.
Adding a middle proto area. This is where the E-Ink adapter will connect.
Could have two of them...
Adding a second USB-C connector for power only (no serial).
Adding two pull-up resistors to uSD, even though maybe not 100% needed.
Adding a couple blue LEDs.
Think that's about it...
Update: Here's initial layout...

Comments
If you have µSD, you can probably add a spot for a 23LC1024 RAM chip (sharing the same SPI pins). They're pretty neat for low-complexity volatile storage (P1 being of course super RAM starved at all times)
Neat board, Ray.
Do you have a power pin (PFET) to cycle power on the uSD?
Is the Qwiic port shared with the EE I2C pins? One thing to be mindful of is that the P1 drives the clock line and the boot-up I2C frequency is a little over 250kHz. Devices that can only tolerate 100kHz (usually devices with small processors) can interfere with writing to the EE. I had this happen with a Sparkfun I2C 7-segment display and had to move it to its own set of pins.
@Wuerfel_21 Maybe just use the same APS6404L PSRAM chip as P2 Platform and other P2 things? Seems to have an SPI mode...
@JonnyMac Is there any P1 board with power pin for uSD? Could add one with option to bypass if need the pin.
You might be right about I2C pins. Do not want anything messing with boot from EEPROM. Can add solder jumpers to disable the pullups. Actually, think most QWIIC things come with pullups. Is that true? Think so...
That is a good question (and would be a boon as far as capacity goes), but those have the problem that they have a max. CE low time of 4µs (vs no limit on SRAM). This is not a lot if we consider SPI mode + slow P1 clocking (enough for a few bytes at a time only). Though IDK if the same limit applies to the slow 33MHz read command (P1 limit is 20MHz). Also, it's apparently not possible to reset the part into SPI mode if it got into quad mode and SIO2/SIO3 are not connected (consider the command table).
The 23LC1024 I know works well and can be read/written from Spin even.
The parts both have the same pinout though, so can easily try it both ways.
@Wuerfel_21 ok thanks. Same pinout makes it easy…
Unrelated off-topic oddity: The AP datasheet claims max. higher clock speeds for 3.0V vs 3.3V -> might make sense (on P2 boards) to regulate that whole VIO bank down to 3.0V
I created a P2-type accessory that works with the P1 and the P2. Having power control requires an extra pin, but given the tricky nature of uSD cards, might be worth it.
I think you're right. You might put light pull-ups (e.g., 47K) on the EEPROM so that if nothing is plugged into the Qwiic port (assuming it's shared), things don't get too stiff (though that's usually not a problem in my experience).
Don't need power switch if you're just going with SPI mode, don't think I ever saw a lock-up even under extreme access patterns. It is needed for native SD mode, since if you enter it once, you can never ever get back out of SPI mode without a hard reset, but we're not doing that on P1. Also the pull-ups for the SD data pins need to be behind the power switch for it to work 100% properly, which would be annoying for secondary use of the SPI bus.
Here's an initial design. Don't see room for PSRAM. But, think have plenty of memory boards for P1 Platform in the stash somewhere...
Added connectors for bluetooth (HC-05), wifi (ESP-01), and ultrasonic distance (HC-SR04). Haven't used any of these before, think they might work.
Added a coin cell battery connector on the bottom.
Also added a place for a large capacitor in case want to connect servos...
The second USB-C power can be isolated from main power so that servos can't take down the P1 with power glitch.
Think it's in good shape now...
Got these boards in...
Hope it works...
A nice PCB, good luck with your project!
Want to get some made next week... We'll see...
Like to use the pick and place these days and that takes a while to set up...
Finally put one mostly together

Seems made a rather bad copy and paste error from P2... Seems P1 doesn't have P62/P63 for RX/TX...
Works with jumpers, but have to get this fixed...
Great work! Thanks for sharing the progress with your PCB, it's looking good!
I'm interested in adding USB comms and power to a future version of my P1 project 'MIDIBEAT1'.
About to test the mosfet controlled power to uSD. Maybe the need for it is questionable, but it is there if needed and can be bypassed with solder switch if not needed.
But, one reason maybe to want it is when operating P1 off of a coin cell. Actually, have to make sure uSD will work with coin cell 3.0 V...
Anyway, to save power might be good idea to turn off power to uSD and the pullups.
Was looking around the web and seems that idle current draw in SPI mode may or may not be something to worry about... It's not 100% clear to me...
The default state is to not use P4 for power control. One would need to flip the solder switch to enable it...
I use a PFET in my new designs. This is my P2 code, but it easily converts to P1. It has worked well in our Battle Tower product.
if (sd_inserted(sddet) == false) return false repeat 5 sd_power(sdpwr, true) waitms(50) mount_sd() if (mounted == true) quit else sd_power(sdpwr, false) waitms(50)I got the power cycle timing from ChatGPT and then made it a bit longer.
Hmm... Delays and retry after cycling power sounds like good ideas, should use that.
For now have:
CON 'uSD card pins SD_MISO = 0 SD_CLK = 1 SD_MOSI = 2 SD_CSn = 3 SD_POWER = 4 'Set to -1 if not used SD_BufferSize = 1000PUB MountSD|i ser.str(string("Attempting to mount SD card",13)) waitms(100) 'Turn on uSD power via mosfet if enabled by constant, SD_POWER if (SD_POWER>0) outa[SD_POWER]:=0 dira[SD_POWER]:=1 repeat 'try forever to mount the SD card i:=\sd.mount_explicit(SD_MISO, SD_CLK, SD_MOSI, SD_CSn) if i==0 quit 'mounted, so exit waitcnt(cnt+clkfreq/4) ser.tx(".") ser.str(string("SD card mounted.",13))This seems to work, but should improve with the @JonnyMac way
250ms is a long time. I think I started with 100 based on some of your demo code (I'm using your P2 port of FSRW with a small fix I made). Some suggest that power-cycling is not required in SPI mode, but I think it's worth the pin and, so far, I've had no issues. I put the power-controlled circuit on my on P2 Accessor pcb and have used in on my P1 Eval board.