At the outset, we required the vehicle interface to have:
- A microcontroller with enough horsepower to process and send all CAN messages
- USB 2.0 port (controller included in microcontroller)
- 2x CAN transceivers, 2x CAN controllers
- UART with optional Bluetooth module
- Be programmable over USB with no extra hardware
- JTAG header for programming and debugging
- 6-pin ISP header for debugging
- Can be powered either via USB or the vehicle (via the OBD-II port)
- Allow USB to be attached while being vehicle powered
- Pass 12v power from the car to external peripherals
The result, documented on this site, meets all of the requirements with these
parts:
- Microcontroller: NXP LPC1769
- Includes a USB controller, 2 CAN controllers
and enough UARTs for debugging and Bluetooth output
- Dual-Channel CAN Transceiver: NXP TJA1048
- Reads from 2 different CAN buses simultaneously at up to 1Mbps per bus - by
default CAN1 and CAN2-1 (according to the OpenXC naming
scheme), with CAN2-2
available behind a solder jumper
- Bluetooth: Roving Networks RN-41, with
hardware flow control enabled
- USB Programming: we
made the OpenLPC USB
Bootloader compatible with
this board and made it more reliable across all major operating systems.
- Power: up to 6A of 12v power can be passed
through from the car, and USB can still be used when being powered by the car.