[WIP] Display Board

[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.