??? 03/18/10 13:50 Read: times |
#174272 - SPI solves completely different problem than HDLC Responding to: ???'s previous message |
Andy Peters said:
I dunno, it seems as if there's a ton of devices that communicate over SPI, which is a synchronous protocol and in many cases goes pretty damn fast. Just a bit of comments here. HDLC sounds ancient. Sounds like those big modems used on leased lines by newspapers when they sent facsimiles of their pages between each other or for printing. SPI is fast multi-signal solution for short-distance communication. Without special encoding of the data, you need a slave-select signal to allow the signal to synchronize with the transfer. Or you need to regularly insert pauses in the clock output so the slave can notice the pause in received data and reset the bit counter to zero. HDLC is a fast single-signal solution for short- or long-distnce communication. HDLC does not send a byte of data as-is, but is expanding the bit pattern into a longer bit pattern. This means that there are reserved bit patterns that can not exist in the data transfer. On one hand, it makes sure that you don't get too long runs of zeroes or ones after each other, to make sure that the listener regularly sees transitions and can synchronize the baudrate. On the other hand, the receiver can be put in hunt mode, and start receiving data when it sees the flag sequence representing the lead-in, so in a conintinuous stream with zero breaks, a listener can find a synchronization point and know that it isn't one or multiple bits off or just random matching data in the middle of a message. Depending on electrical interface and configuration, it is also possible to use dominant bit states so multiple transmitters may start sending data at almost the same time, and the dominant data will win while the other transmitters will catch the collision and stop the transmission and restart later. Running really high link speeds (such as gbit Ethernet) obviously means that it makes a difference to have crc evaluations in hardware instead of doing it by the controlling processor. Another thing - toggling a single signal once/bit is easier than running SPI and having the clock signal toggle two times/bit. So HDLC - or very similar concepts - may be found in ethernet, CAN, data streams in disk controllers, any many, many, many other applications. It is very applicable today, even if most newer hardware may integrate multiple layers and shield the developer from the actual HDLC layer. Close relatives - often just configuration settings different from "normal" HDLC - includes data link control for AppleTalk, SS7 etc. So in the end - SPI is good for local communication on a PCB, and with zero errors on the link. For longer distances, with need for error detection and recovery, HDLC is definitely a better choice. |