Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.
USB generally requires specialized hardware (built into some controllers, but not most) and generally requires the host side implementation to be pretty complex. Suitable for communication between pluggable and interchangeable devices, but not optimal for cases where both ends of the connection are "known".
SPI is fast and simple, but uses a lot of wires (at least four; more if handshaking is necessary). It would be possible to design a protocol with all of SPI's advantages, plus handshaking, in only three wires; such a device could be used with existing controllers, though separate select and handshake lines may be needed. I'm unaware of anyone having done such a thing, though. SPI signals are actively driven both high and low, so there is no need to wait for signals to be passively pulled up.
I2C is a nice protocol, but its speed is limited to about 1mbps (compared with 10-60mbps for SPI). It only needs two wires, but they have to be wired open-collector with passive pullups.
UARTs can be very nice. RS-232 (using positive and negative voltage levels) is a bit more robust than logic-level signalling. UART communication needs only one wire in each direction, and may be used at speeds up to 1mpbs or more. The biggest difficulties are that speeds may be limited unless both ends of the connection have suitably-related clocks available, and that handshaking either requires injecting stuff into the datastream or using additional wires.
This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
By continuing to use this site, you are consenting to our use of cookies.