前言
在进行嵌入式开发中,通讯是非常重要的,其是整个系统的神经网络,而算法便是整个系统的大脑。只有利用各种适用的通讯协议,我们才能实现系统之间以及系统与外部环境之间的数据传输、信息交换等功能,大脑才能获得各种其需要的信息。所以,本文对通讯进行简单的介绍,由于本人并非科班出生,所以难免有理解错误的地方,还望各位读者可以不吝指正,谢谢!
并行通讯与串行通讯
基本特点
顾名思义,并行通讯方式则每次可以传输多位数据,而对于串行传输方式,则每次只能传输一位数据。
两者的特性
特性 | 串行通讯 | 并行通讯 |
---|---|---|
距离 | 较远 | 较近 |
抗干扰能力 | 较强 | 较弱 |
传输速率 | 较低 | 较高 |
成本 | 较低 | 较高 |
数据线 | 一条 | 多条 |
全双工、半双工和单双工
按照通讯的方向,通讯的方式又被分为全双工、半双工、单双工。
全双工
同一时刻,两个设备之间能够同时收发数据。
半双工
两个设备之间均可以发送和接收数据,但是不能同时收发数据。
单双工
一个设备只能发送数据,另一个设备只能接收数据。
同步通讯和异步通讯
同步通讯
需要时钟信号进行同步的通讯方式,并且需要指定在什么时候开始对数据进行传输或者采样。比如:SPI协议、SDIO协议
异步通讯
不需要时钟信号进行同步的通讯方式。比如:I2C协议、USART协议,它们依靠特殊的数据位信息,对数据进行处理。
同步与异步通讯比较
使用同步通讯方式的一帧数据中的大部分都是有效数据,而异步通讯方式的数据包含各种标识符,比如:起始位、停止位、校验位等信息,所以一帧数据中的有效数据较少。
但是,同步通讯对时钟的要求更高,所以控制起来更加繁琐。
通讯速率
通讯协议中的通讯速率是衡量通讯性能的一个非常重的要参数。在实际应用中,通常以比特率来表示通讯速率,单位为bit/s,即每秒钟传输的数据位数。既然说到比特率,那么不得不提到另一个概念—波特率。对于我这样的入门选手而言,真的是很容易将两个概念混淆。
比特率指的是每秒钟传输的码元数量,而码元是通讯信号调制的概念:利用官方的语言来说:
在数字通信中常常用时间间隔相同的符号来表示一个二进制数字,这样的时间间隔内的信号称为(二进制)码元”。 而这个间隔被称为码元长度。单位为"波特",常用符号"Baud"表示,简写为"B"。
通俗的说就是,就是可以用多少Bit的数据表示一种状态。比如:我们用0V表示数字0,用3.3V表示数字1,那么一个码元可以表示两种状态,即0和1,此时,一个码元等于一个二进制比特位。这个时候,波特率和比特率在数值上是相等的。
再比如:我们用0V、2V、 4V 以及 6V 分别表示二进制数 00、 01、 10、 11,那么每个码元可以表示四种状态,即两个二进制比特位,所以码元数是二进制比特位数的一半,这个时候的波特率为比特率的一半了。
总结
本文是我在学习STM32开发板的过程中进行总结的一些笔记,并不涉及具体的开发过程,只是作为一个简单的总结,希望可以让和我一样的童鞋对通讯有一个简单的了解,大家可以一起进步。