This page is for developers to decide on communication options
Most microcontrollers have these native communication protocols:
- UART (eg. for standard RS232 comm: GenBoard/CommToPC)
- BUS (eg. for LCD)
- SPI (eg. for knockchip, MCP3208)
- I2C
All 4 types are used on GenBoard/VerThree.
There are other protocols used in the industry for several reasons:
- high speed and target selection with a few wires (Ethernet, CAN chips are often driven from a BUS)
- different signal levels: in the past several standards were based on high signal levels (which sounds stupid today: think -/+8V RS232, originally -/+12V) instead of eg. symmetrically driven twisted-pair wires.
- optimized for profit: USB comes to mind: technologically many stupid decisions, but primary design target was long-term intel profit which is perfectly served by the design.
- wireless: guess what it is for
TODO: links (good designers are Capitalized :-)
- RS232 widespread
- USB (intel) widespread
- Ethernet (Xerox) very high-speed, widespread
- Bluetooth wireless (motorola)
- [Zigbee] wireless (Berkeley Mica Mote)
- 1-wire (dallas) many small devices
- firewire (texas) high-speed
- CAN (Philips?) widespread in industry
- RS422
- RS485
- Raw (eg. FSK) Radio without MAC (Media Access Control): collision => data loss
Winning strategy for now
I don't see a reason to include anything onboard our next systems other than the native communication protocols and CAN. The CAN is the notable exception because it is used for critical data paths in the vehicle where we don't want too many flying boards. The other protocols are mostly for connecting to PC (datalogging and control systems). Yes, this means that even the classic MAX232 chip should live in the cable: we can manufacture small PCB that fits into the DB9 housing. When using the USB of a PC, an off-the-shelf USB-UART (called FBUS by Nokia; TODO: check MBUS and M2BUS; links) mobile phone (or PDA) cable can be used, bypassing the -+8V level alltogether.
Maybe in a few years when we want to move huge amounts of data for some reason, we want Ethernet onboard as well (the only cheap option to move much data into a PC), but not for now.
Find the missing link - play this game: help to fill out the matrix. Links, products, notes...
Don't worry: 5..6 adapters cover everything we want, and 3 cover 95% of the needs.
The major communication matrix: native protocols to other protocols:
RS232 | USB | Ethernet | Bluetooth | Zigbee | 1-wire | Firewire1 | CAN | RS422 | RS485 | Radio | |
UART | MAX232 | FTDI, Prolific | Ethernet | ????? | Zigbee | DS2480B | Firewire | CAN | RS422 | RS485 | RadioBoard, [modules for 50..80 Euro] |
BUS | 16550A, all uC | FTDI, Prolific | RTL8019,CS8900 | many chipsets | Mica Mote | Dallas? | Firewire | inside LPC2119, XC166 | RS422 | RS485 | CC1000 |
SPI | RS232 | USB | Ethernet | Bluetooth | Zigbee | 1-wire | Firewire | MCP2551? | RS422 | RS485 | RadioBoard ? |
I2C | RS232 | USB | Ethernet | Bluetooth | Zigbee | 1-wire | Firewire | Philips? | RS422 | RS485 | RadioBoard ? |
The secondary communication matrix: other protocols to other protocols not needed too much but they might come handy sometime. The matrix below will be scarce.
RS232 | USB | Ethernet | Bluetooth | Zigbee | 1-wire | Firewire1 | CAN | RS422 | RS485 | Radio | |
RS232 | X | USB-RS232 cable | Rs2Net box, ser2net on PC | Bluetooth | Zigbee | 1-wire | Firewire | [can232] | RS422 | RS485 | RadioBoard |
USB | x | X | Ethernet | offtheshelf devices | Zigbee | 1-wire | Firewire | [can232] | RS422 | RS485 | Radio |
Ethernet | x | x | X | Bluetooth | Zigbee | 1-wire | Firewire | CAN | RS422 | RS485 | - |
Bluetooth | x | x | x | X | Zigbee | 1-wire | Firewire | CAN | RS422 | RS485 | Radio |
Zigbee | x | x | x | x | X | 1-wire | Firewire | CAN | RS422 | RS485 | Radio |
1-wire | x | x | x | x | x | X | Firewire | CAN | RS422 | RS485 | Radio |
Firewire | x | x | x | x | x | x | X | CAN | RS422 | RS485 | Radio |
CAN | x | x | x | x | x | x | x | X | RS422 | RS485 | Radio |
RS422 | x | x | x | x | x | x | x | x | X | RS485 | Radio |
RS485 | x | x | x | x | x | x | x | x | x | X | Radio |
notations:
- - unlikely that there is any reasonable solution
- Notable solution in bold
- X simple wire (diagonal)
- x the other direction is the same.
Note that native protocols to native protocols is NOT needed (no 3d matrix).
TODO: translate both matrices (so the first is rather tall than wide, and the 2nd has most info on left side)
Note that the above is not all protocols ever used. Many other in-car and in-plane plane protocols exist. See CanBus for others like flexray and [OBDII standard] used for emission and diagnostic equipment.
RS232 to USB or RS232 to CAN is not too hard, since many controllers (ARMs, Atmel AVR, Philips SJA1000 even microchip PIC) has either USB or CAN and all has FBUS (from which RS232 is just a max232 away).
However USB and CAN in one uC is not common.
See also: