ARM微控制器与嵌入式系统学习笔记 - 2

在学习完ARM MCU的基础理论以及点亮LED灯实现了Hello World之后,就应该继续学习各种外设以及它们之间的通讯了。

通讯的基本概念和分类

什么叫通讯(Communication)?广义上讲就是交换信息,在计算机中它是点与点、人与人或者设备与设备之间的信息交换,而信息是消除不确定性的载体。

串行/并行

在串行(Serial)通讯中,0和1的比特是依次传递的,它只需要很少的线路和端口,通常宽带较小,适合长距离的通信。而并行(Parallel)通讯则是同时传递多个比特(比如一次一个byte),需要更多线路,通常较快,适合短距离通信。

虽然传统认为并行更快,但是目前很多高速通讯又回归了串行通信,例如USB、SATA,并行通信受制于它必须严格控制时间使其同时到达。

点对点/总线

点对点(P2P)只有两个通讯对象,不需要地址。而总线(Bus)则可以有多个对象,但是就需要地址。我们平时使用的以太网、USB都是典型的总线通讯。

同步/异步

当我们的设备接受端从发射端获得一个时钟信号,在这样一个时钟信号的驱动下,去看我们所发送出来的数据的时候,我们称为接受和发送端是同步(Synchronous)的,他们共享一个时钟信号。相反的当发送和接受端并没有共享一个时钟信号,而是按照一个约定的速率去进行通讯的时候,就成为异步的通讯。

半双工/全双工

半双工是收和发的双方在一个单位时间同一时刻里只有一方可以完成一个单向的通信,信道只有一个,比如对讲机。而全双工的系统允许两台设备间同时进行双向资料的传递,比如电话、以太网。

主从方式/对等方式

在对等方式(Equal Partners)的通讯中,所有节点都可以在介质空闲时传输信息。而主从方式(Master-slave)只有主机才能开始通讯,从属需要从主机获取通讯的权限。

单端信号/差分信号

单端信号就是说用某个特定的电压值来代表0和1,例如0V代表0,3.3V代表1,通讯双方都需要接地。差分信号则是用两条线来表示一个信号,用这两条线的电压差来表示0和1,它能达到更高的速度。

异步串行通讯UART的原理

UART是一类典型的异步串行通讯,是Universal Asynchronous Receiver Transmitter的简称,也就是通用异步接收/发送装置。UART把数据的字节按照比特顺序发送,接收端把比特组装成字节。

UART 数据帧

UART的数据帧大致如图所示,用高电平(1)来表示空闲状态,至于原因我搜索了一下,是因为电报时代用线路保持高电平来表明线路与传输设备没有损坏。一个低电平为开始位,表示接下来会有数据了。然后是数据比特,这其中的最后一位是可选为奇偶校验位的。最后是一个或多个停止比特,也是高电平。大多数场景下都是先发LSB(Least Significant Bit)最后发MSB(Most Significant Bit),也就是说它通常先发送最低位,与我们的书写顺序相反。当然现在有些MCU可以通过设置先发送MSB。

在UART上追加同步方式的序列信号变换电路的产品,被称为USART(Universal Synchronous Asynchronous Receiver Transmitter)。USART在使用同步通信时需要时钟来触发数据传输,也就是能提供主动时钟。在使用异步通信的时候它就与UART没什么区别了。

本页面的全部内容在 CC BY-NC-SA 4.0 协议之条款下提供,附加条款亦可能应用
本文链接:https://www.copperion.com/2019/arm-mcu-notes-2/