_____ / ____| | | __ | | |_ | | |__| | \_____|
____ | _ \ | |_) | | _ < | |_) | |____/
_ (_) | | | | | | (_)
_______ ( ____ \ | ( \/ | (__ | __) | ( | ) |/
______ ( __ \ | ( \ ) | | ) | | | | | | | ) | | (__/ ) (______/
IMPORTANT: enter the case-INsensitive alphabetic (no numbers) code AND WRITE SOME SHORT summary of changes (below) if you are saving changes. (not required for previewing changes). Wiki-spamming is not tolerated, will be removed, so it does NOT even show up in history. Spammers go away now. Visit Preferences to set your user name Summary of change: '''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) * '''wireless''': guess what it is for * 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. ** Simply stating that ''XXX'' design is a bad design without stating why is simply not useful and very ''immature''. TODO: links (good designers are Capitalized :-) * RS232 widespread * USB (intel) widespread * Ethernet (Xerox) very high-speed, widespread * Bluetooth wireless (motorola) * [http://zigbee.org/ 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, [http://www.soselectronic.hu 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||[http://www.can232.com/ can232]||RS422||RS485||RadioBoard|| ||'''USB'''||x||X||Ethernet||'''offtheshelf devices'''||Zigbee||1-wire||Firewire||[http://www.can232.com/ 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 [http://www.planetfall.com/~jeff/obdii/ 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: * UsbToFbus Optional: Add document to category: Wiki formatting: * is Bullet list ** Bullet list subentry ... '''Bold''', ---- is horizontal ruler, <code> preformatted text... </code> See wiki editing HELP for tables and other formatting tips and tricks.