通信协议

集成电路和微处理器之间有并行或串行数据线连接方式,并行连接比串行连接速度要快,但是却不为人所喜,以为并行连接需要更多的数据线,PCI总线就是一个并行连接的例子。通常在复杂的或者高度集中的电路中,处理器会连接很多外围设备,在这种情况下,没有太多空闲的引脚/数据线来连接额外的单个集成电路。串行通讯最多需要四条数据线,具体数据取决于所使用的通讯协议。但不能就此认为串行通讯优于并行通讯,只是在将更少引脚数量作为考虑要素时,推荐使用串行通讯。在串行通讯时,数据是按照帧或包来发送的,大数据被分解为若干块,在数据线上逐帧或逐包进行发送。

 

通信协议是在将集成电路连接到微处理器时所需要遵守的一套准则,它并不是只对连接进行规定,协议还定了数据帧的结构、帧的长度、电压水平、数据类型和数据速率等。有多种串行通讯协议,例如:UART、FireWire、Ethernet、SPI、I2C等。B型、A+、B+树莓派在扩展口上有一个SPI引脚,一个I2C引脚,一个UART引脚。

 

UART:Universal Asynchronous Receive and Transmitter的缩写,中文称为,通用异步收发传输器,也称其为 RS-232标准。

  该协议是全双工协议,它也是一种包括特定通信的电子,机械,物理特性的全面标准。当在总线上传输器不断发送数据时,数据电平需要转换为RS-232总线上的电平,在总线上传输器发送不断变化的电压。高于3V的电压值即为逻辑0,而低于-3V的电压值即为逻辑1,-3-3之间的电压称之为不确定状态。微处理器按照,晶体管-将踢馆逻辑(transistor-transistor logic,TTL)电平发送数据,当像总线发送数据时,应将电平电压提升至RS-232标准规定的值。也就是说,要将电压值在微处理器的逻辑电平(0V和5V)雨RS-232总线的逻辑电平之间进行双向转换,为此我们需要一个电平转换集成电路(例如MAX232),数据通过DB9连接器和RS-232连线进行发送,当我们进行长距离通讯时,电平转换非常有用。

 

  如果我们不用额外的电平转换器集成电路就进行连接会发生什么?这种连接被称为空(NULL)连接,TX1连接RX2,RX2连接TX1,GND-GND,这对于短距离通讯十分有用。在UART中,有一点十分重要:发送器和接收器的波特率(每秒传送的字符数)应该匹配,通常我们将波特路设置为9600或115200 。UART通信中的典型数据帧包括一个起始位(一般是0,通知接收器数据传输开始)、数据(一般是8位)和一个停止为(一般是1,通知接收器传输结束)。

  在树莓派中,用该是Python或C语言编写应用程序和UART驱动程序来接收传感器发送的数据。

 

SPI:Serial Peripheral Interface,一种全双工短距单主设备通信协议,是一种同步通讯协议。SPI简单的连接方式之一是单主从连接,一般来说,总共有四条数据线,分别是时钟(SCLK)、主入从出(Mster In Slave Out, MISO), 主出从入(Master Out Slave In,MOSI)以及片选(CS)。

  总数主设备初始化数据帧和时钟,时钟频率可以由主设备根据设备性能进行调节,时钟频率的变化范围是1~40MHz(或更高)。一些从设备由低电平激活,这意味着只要主设备在CS引脚上向从设备发送逻辑0信号,就可以启动从设备,然后从设备就能够接受主设备发来的数据和时钟。可以将多个从设备连接到主设备上,为此,我们需要从主设备上引出其他片选来连接多个从设备。当从设备增加时,这可能成为SPI通信协议的缺点之一。从设备不会向主设备发送应答信号,所以主设备在发送数据时,并不知道从设备是否收到了数据。如果主设备和从设备都可以编程(在执行程序时)可以对换主设备和从设备的功能,对于树莓派而言可以轻松的用Python或C语言编写SPI通信代码。

 

I2C: Inter-Integrated Circuit  是一种利用两条连接线工作的双半工协议(双半工协议是通信的一种类型,即只要发送端在发送数据,接收端只能监听而不能发送数据,相反也是如此)。多播通信协议只需要两条数据线就可以,这两条连接线分别被称为数据线(SDA)和时钟线(SCL) .

  I2C的连线(SDA和SCL)总是要通过电阻上拉至输入电压,I2C总线有三种速度,高速(3.14MBps)、快速400KBps、慢速 100KBps。每个I2C都有7~10位地址,主设备可以应用地址位向特定的从设备发送数据,当将从设备连接到主设备上时,从设备制造商会向你提供要用到的地址。但是某个从设备只能使用专门针对其发送的数据。主设备可以用地址位读取传感器预定义数据寄存器中的可用数据并自行处理所读数据。

 

posted @ 2016-11-02 15:17  stone08  阅读(380)  评论(0编辑  收藏  举报