对串行设备的理解

大学毕业之前一直都没有接触到嵌入式,所以对这个概念的理解也是很糊,互联网上也比较难找到通俗易懂的定义。

下面我来说说我自己的理解:

这个问题需要从数据流来考虑,一个设备时会发送信息的(数据),所谓一个局部系统(此设备),那么这个信息流就是它的输出,当然此设备肯定也会有输入,因为一个系统不可能只有输出,没有输入。从信息论的角度看,因为信息不会自发(凭空)的产生(信息的产生须有一个熵的来源)。所以程序不会自发产生数据,必然有数据是对程序的输入,因为这个输入,程序才产生了输出。那么设备也是一个硬件化的程序,这样就非常好理解。所以设备产生的数据输出,是随着时间的累加逐个过来的,以数据的处理者(一般是CPU),这些数据就可以当做输入。类似于有限状态机的模型。比如,网路上我们看视频,视频的帧信息就是逐个过来的,那么这边系统处理这些数据,就是把这些逐个过来的数据压入进队列(FIFO),然后从这个队列中逐个获取信息,这个就是所谓的流。(数据流)。有些东西必须用流的这种思想方式来做,数据的生产者一直在产生数据,数据的消费者也需要不断处理(消费)这些数据。所以从抽象上它就必须是串行的。就是一点点的处理生产者传过来的数据,而不是所有数据传过来再处理。(当然,串行设备的数据大小有点随机,也不可能知道它到底有多少数据产生,比如鼠标,键盘,调制调解器(Modem)就是串行设备,因为我们的键盘,鼠标击键的消息是随机不断的,无穷的))。

这也是UART存在的目的,在串行通信和并行通信间作为一个中间者转换。因为计算机内部使用并行数据,不可能直接把并行数据传到串行设备中。过程是这样的:CPU先把准备写入串行设备的数据放到UART的寄存器(临时内存块)中,再通过FIFO(先入先出队列)传送到串行设备,若是没有FIFO,信息将变得杂乱无章(那么就不是串行了),不可能传送到调制调解器(Modem)。

原文地址:https://www.cnblogs.com/foohack/p/4228235.html