Updated October 30, 2021
The PSPi Compute is an interface board that replaces the motherboard in the original 1000-series Sony PSP. This board lets you use a Raspberry Pi Compute Module 4 as the brains, which means you can either turn it into an emulation system, or just run your favorite Linux distribution.
Possible Features (will change as I prototype them):
Works with Raspberry Pi Compute Module 4 (all variants) and PSP 1000 Series Case
The CM4 has many variants. Some have eMMC Flash while others use MicroSD cards. Some have WiFi, and some do not. The board has to work with all of them, which means it has to accept MicroSD cards on the Lite versions, and it has to allow USB flashing on the eMMC versions.
No PSP case modification is needed. The new board shape matches the PSP’s original one very closely, and doesn’t require any case modification.
The LCD is driven directly by the GPIO pins in 24-bit DPI Mode 7
Works with both the 480×272 LCD from the PSPi Version 4 and the new 800×480 LCD from Buydisplay.
The LCD backlight is dimmable and you can cycle through brightness levels by pressing the Display button. The lower the brightness, the more play time you get per charge.
PAM8407/PAM8408 stereo amplifier with hardware volume control (VOL – and + buttons adjust volume, and the Sound button mutes and unmutes the amplifier)
Tweaked audio filter to remove most of the sub 1000Hz frequencies that the PSP speakers can’t produce
Better separation between power and audio circuits, which eliminates noise in the speakers and headphones. The PWM audio is buffered, filtered, and amplified on an isolated power plane.
Battery and Charging
The board has a standard JST PH connector for batteries. The battery charges using the round PSP charging connector or the miniUSB connector (see USB section below). The new charge IC uses a buck converter instead of a linear regulator, and is capable of charging the battery at 3A. I configured the IC to charge at a maximum of 1.35A because to keep the battery in good condition, and to keep board temperatures low.
5V Boost Converter for Pi
Instead of just monitoring the voltage and detecting whether the charger is plugged in, the microcontroller can constantly monitor power usage to provide accurate information about the battery status (see Input).
The board has reverse polarity protection in case your battery has a swapped pinout. The board is clearly marked + and – to prevent hooking the battery up in reverse. It’s always best not to stress-test these protection features.
The board also has a 3.08v supervisor, which will kill all power to the board if the battery drains past this point. This is just an extra layer of hardware protection for the battery in case the software on the Pi and microcontroller fail to their job.
The on/off circuit is more tolerant to quickly powering the system off and then back on. The previous version needed a few seconds to reset after poweroff, but this new one is able to power the board back on immediately after a shutdown completes. Functionally, this is identical to previous versions. A quick push of the power button will turn the system on, a quick push when the system is on will shut the system down and power it off, and a long hold of a few seconds will kill power to the board entirely regardless of whether the Pi has completed shutting down.
The miniUSB port is properly isolated from the battery . When the system is turned off, no battery power reaches the miniUSB port. Power is also unable to backfeed to the Raspberry Pi from a powered USB device.
The miniUSB port powers USB devices directly from the battery when the system is powered on with a working Raspberry Pi, and it will range from 3.0v to 4.2v depending on the charge state of the battery. This power flows through an ideal diode, and experiences no loss in voltage.
If a USB device needs the full 5v (which may be unlikely, none of my USB devices needed 5v) or high amperage, the round charging cable can be plugged in, and the board will pass 5v directly to the miniUSB port, which will power the USB device regardless of whether the PSPi Compute is off or on.
The miniUSB port is able to both send and receive power. When using a USB device such as a thumb drive or keyboard, the PSPi Compute will power the device using the battery (unless the round charger is plugged in, as stated previously). When a USB charger or other powered USB device is plugged in to the miniUSB port, the PSPi Compute will begin receiving power and charging the battery.
The CM4 uses a lot of power. Right now, I’m using a thermal pad to move the heat from the CM4 and into my board, and it seems to be adequate and eliminates the need for a cooling fan. There’s still some testing to do, but it looks promising.
An ATmega328p microcontroller handles all the input for buttons, joystick, and battery monitoring. The microcontroller is constantly calculating, storing, and transmitting button and analog statuses to the Raspberry Pi using I2C. The firmware can be updated using the SPI pads on the underside of the board.
The microcontroller has four ADCs in use. Two are used for joystick, one for battery voltage detection, and one for battery amperage detection. The joystick readings are sent directly to the Raspberry Pi, and the voltage and amperage calculations are done on the microcontroller before being sent to the Pi. The remaining pins are used for buttons, data transfer, and PWM output for the LCD brightness control.
The Raspberry Pi code is all written in C and runs more efficiently than the Python scripts used previously.
Prototype 1 – ordered February 1, 2021:
Rough proof of concept. I reused as much as I could from PSPi v4, just to see whether this project is doable with the CM4.
The ATMega328p microcontroller is up and running with very beta firmware. So far, I have the display, audio, buttons, joystick, and battery monitoring working, and I’m working out a few bugs with the I2C communication.
I’ve tested with an eMMC CM4, and I successfully flashed firmware over USB
The CM4 antenna connector is compatible with the internal antenna on the PSP case
I’ll probably film a video soon, and go over Prototype 1 thoroughly.
Prototype 2 – ordered February 21, 2021:
First test of DPI mode 7 (RGB888 reduced to RGB777 to save some pins)
Better PCB layout and pin usage
Includes connector for headphone/MicroSD board
Includes an expansion header for an Ethernet board (just testing this in case I use a non-wifi CM4, since every CM4 has gigabit ethernet)
Testing a new audio header that should be compatible with the original PSP speaker cable
Prototype 3 and 4 – ordered March 11, 2021:
Better circuit layout for the boost IC to reduce switching noise
New audio filter layout to decrease bass on the PSP speakers
Prototype 5 – ordered October 7, 2021:
Full redesign to include everything from the PSPi Zero and to substitute components that keep going out of stock
Switched to 2.1A synchronous buck charging IC instead of the 1A linear charging TP4056 to reduce the amount of heat generated during charging.
Switching from RGB777 to full 24-bit RBG888 for the display, giving the best quality possible.
This one is a major test of JLCPCB’s assembly capabilities