[WIP] Display Board
Hardware Github link: https://github.com/lhr-solar/Controls-RasPi-Breakout/tree/main
Clickup link: https://app.clickup.com/t/868e8qn90
Description
This board handles driving graphics for the display as well as receiving and displaying data from CarCAN and rear and side facing cameras.
Design Specification
Hardware
Receive main power/ground (24V)
Buck to 5V
supply power to display (fused on this board)
Coin cell battery for RTC (onboard CM5)
Raspberry Pi Compute Module 5 (CM5) - pip.raspberrypi.com/documents/RP-008180-DS-cm5-datasheet.pdf
All GPIO mapped to 40-pin header for debugging
CAN
Using MCP2515T chip to convert SPI <--> CAN
2x CAN connectors (1x2)
1x Transceiver TCAN337DCNR
Ports:
HDMI type A (2.0) for display
ESD chip: TPD4E05U06DQAR
Current lim + RPP chip: TPS2557QDRBTQ1
USB type A (SuperSpeed) for downstream USB hub for cameras
ESD chip: TPD4E05U06DQAR
USB type C for debugging (puts CM5 into device mode rather than host; also for USB boot)
ESD chip: TPD4E05U06DQAR
Other IO:
Power button
short press = wake, sleep, or soft shutdown
press + hold = hard shutdown
Hard reset button
press = resets all components (5V and 3.3V)
Software
Run linux for peak graphics development
Read from CarCAN:
Gear status (D, N, R)
Speed (mph)
Accel and brake pedals % depressed
All contactor statuses
L/R turn indicator statuses
Fault status of critical boards/systems
BPS fault
VCU fault
Controls fault
State of cruise control (enabled? set at what?)
State of regen (enabled? active?)
Main battery temperature + voltage
Any other info on CarCAN useful for debugging
Look for faults in button/switch states
Receive video streams from USB for cameras
create udev rules to map each camera consistently across power cycles/ hard resets
always display rear view stream
when L/R turn indicator is active, display respective peripheral view stream; stop displaying when turn indicator is inactive
On any nonrecoverable fault, display an attention grabbing screen with relevant info:
fault type
evacuation needed or not
battery information
any other info on CarCAN useful for debugging
Design Decisions
Opted for an HDMI display over others (quadSPI, MIPI, UART, etc)
allows for much better graphics
can test display board without needing the display itself (as HDMI is basically universal)
more options for bright rugged display
Opted for a separate USB hub near the actual cameras over implementing the hub on this board.
allows for power for the cameras to be supplied at 24V (rather than the USB VBUS 5V)
allows for simpler wiring (1 wire going display board <--> cameras rather than 3)
means board is also simpler
Opted for CM5 over CM4
was originally planned to be with CM4 but CM5 came out during development of this board
CM5 has lots of quality of life improvements over the CM4 such as a built in RTC, a GPIO dedicated for power button (soft shutdown), and the potential for USB 3.0
CM5 and CM4 have basically the same hat connector
Opted for this board to supply power to the display
frees up 1 fusebox connection
doesn’t overcomplicate the board (just the addition of a fuse)
Revisions
A --> B
what all did you change between revisions A and B?
Testing
This is where you would put in successes/failures of the board as you incrementally solder and test each subcircuit. This section is temporary and allows this doc to be an easy stop for anyone to see how the board is looking.