A basic minimum GMAX3412 (1" / 4096×3072 / Global Shutter) board for Raspberry Pi.
In general this is a simple breakout board for the GMAX3412 sensor — see the driver repo here.
The sensor itself is quite interesting: it needs a trigger pulse to start a new frame, and it can’t generate that pulse by itself. Because of that, this board includes a MSPM0G1505 MCU to generate the signal (sweet 32bit PWM output) and listen for commands over I2C.
The MCU firmware and the Python script to talk to it live under software/.
But if you are planning to send the clock/trigger via other means, you can ignore that and use the U.FL connector to feed signals in.
The driver is set up as external exposure:
- Rising edge triggers a new frame
- Pulse width is the exposure duration
Gerbers/— manufacturing filesbom/— BOM / parts listsoftware/— MSPM0 firmware + Python I2C control scriptdatasheet/— datasheet backup copy
See it in action here: Youtube.
The board is tested with Raspberry Pi 5.
The trigger signal looks like this:
Yellow is the TEXP, and blue one is the TDIG output from the sensor showing "Frame Overhead Time".
It is not every day you see a detailed datasheet directly from the manufacture appared on the top search result:
https://gpixel.com/public/uploads/admin/file/pdf-7917552d763a512ce4860ce10e70934f.pdf
…but I also keep a backup under the datasheet/ folder.
Current issue I would say is that RPI will shows different FPS reading then the setting because RPI/CAM/MCU are all on different clock, and it is hard to have fine tuning to the timers (the current setup is using 16bit timer), that is why I have VCTCXO on board providing the clock to both MSPM0 and GMAX3412 so the clock can be fine tuned with software. But I left the resistor jumper and the pad that you could instead simplified it a bit to just a simple OSC for GMAX3412 and MCU can use it's internal 80Mhz clock.
Final note is that the power consumption is a step higher then normal rolling shutter sensors, so the board might be a bit warm when operating.

