Hacker News new | ask | show | jobs
by unwind 1207 days ago
I thought this was a fun journey through a tiny DIY tooling project, and I enjoyed it! I liked the detail level which is turned up quite high, taking care to explain many of the steps that are (typically) taken for granted by electronics hobbyists.

Still, this part stuck with me so I feel a need to comment:

The high level overview is that "serial", or UART (Universal Asynchronous Receive and Transmit) is a protocol for exchanging data between two systems over two independent wires, with each side able to transmit and receive simultaneously, without those two lines necessarily being synchronised (hence "Asynchronous" in the name).

I would argue that "asynchronous" here means that UART traffic is not explicitly clocked; there is no CLK signal to go along with the TX and RX lines for the data. This is of course because both sender and receiver have to already know and agree about the communication speed ("baud rate", which is actually just bits/second at this level) or they will get garbage.

This is in contrast to synchronous serial protocols like I2C and SPI which both have a clock signal.

2 comments

You're absolutely right, I don't know why I had attributed the name to the full duplex nature. And of course, there is also USART, where you can have a separate clock line, which allows you to omit the start and stop bits too. At that point, you're essentially turning your UART into a single connection SPI bus.
I miss USART.
Actually synchronous in this context has nothing to do with clock. It refers to the fact that the data does not come at regular intervals (synchronous), but asynchronously.
(A)Synchronous is a term of art. It precisely means what the GP said. Data can also not come at regular intervals for a synchronous setup.