Introduction
One of the biggest issues with MSXI's electrical system was its inconsistency in parts and pinouts. There were at least 3 variations of the CAN controller/transceiver circuit and which SPI bus they were connected to, making debugging difficult. Some used different footprints, while others used different parts. This also made inventory a challenge, as each board had its own very specific set of components.
To increase board consistency and ease debugging, we propose a controller board that consists of shared core components such as the microcontroller, CAN transceiver, and possibly some debug LEDs or IOs. These controller boards would likely use a mezzanine connector to allow breakouts to carrier boards, which should be much simpler.
Key Features
- Allows creation of a debug carrier board to allow self-test of the MCU and CAN
- CAN lines are directly routed through the board, reducing the use of T-junctions
- Includes CAN, USB 2.0, SPI, UART protocols
- Simplifies inventory management and software, allowing a single core config for all boards
- Simplifies board debugging - isolates issues to either the controller or carrier boards
- Reduces cost of bringing up backup boards
- Debug/Heartbeat LEDs and programming header
Things To Consider
- UART/USB? If we use USB, may need serial-to-usb converters on-board (In-car debugging)
- Daisy-chaining power or not (LV Power granularity)
- Hermaphroditic or not (Cost)
- Switching regulator circuit or integrated DC-DC converter (board complexity, cost)
- LQFP vs UFQFPN
- How many pins do we dedicate to 3.3V, 12V, and GND on the mezzanine?
Part Selection
Part | Info | Digikey Link | Price |
---|---|---|---|
STM32F072CBT6 | ARM Cortex-M0 Includes CAN controller, 37 IOs, 48-LQFP | $5.03 | |
TCAN332DR | CAN Transceiver Replacement for the SN65HVD232DR | ||
Molex CLIK-Mate Connectors | 1.25mm pitch for signal, 1.5mm pitch for power Off-board connectors used for CAN, power, etc. | ||
Mezzanine connector | Used to connect the controller board to a carrier board | TBD | |
Switching regulator | Converts 12v → 3.3v | TBD | |
LEDs | For debug | TBD | |
Debug headers (same as off-board?) | For SWD and UART/USB | TBD |
MCU Schematic Capture
Peripheral Selection
- 51 GPIOs
- 2 SPI, 2 I2C, 4 USART, CAN, USB, HDMI-CEC
- 16 Channel 12-bit ADC
- 18 Capacitive Sense Channels
- 2 Analog Comparators
- Serial Wire Debug (SWD)
Most I/O pins on the STM32F072 are also used for peripheral functions such as SPI, I2C, USART, CAN, USB, CEC, SWD, etc. To increase flexibility, most of the I/O will be routed to the carrier board. Since the peripherals and I/O pins are muxed internally, the controller board can provide either function to the carrier board without special requirements.
Important notes
- PC13, PC14 and PC15 are supplied through the power switch. Since the switch only sinks a limited amount of current (3 mA), the use of GPIOs PC13 to PC15 in output mode is limited: The speed should not exceed 2 MHz with a maximum load of 30 pF. These GPIOs must not be used as current sources (e.g. to drive an LED).