第19章 通讯的基本概念—零死角玩转STM32-F429系列
来源:互联网 发布:管家婆千方百计软件 编辑:程序博客网 时间:2024/05/17 03:35
全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn
野火视频教程优酷观看网址:http://i.youku.com/firege
在计算机设备与设备之间或集成电路之间常常需要进行数据传输,在本书后面的章节中我们会学习到各种各样的通讯方式,所以在本章中我们先统一介绍这些通讯的基本概念。
19.1 串行通讯与并行通讯
按数据传送的方式,通讯可分为串行通讯与并行通讯,串行通讯是指设备之间通过少量数据信号线(一般是8根以下),地线以及控制信号线,按数据位形式一位一位地传输数据的通讯方式。而并行通讯一般是指使用8、16、32及64根或更多的数据线进行传输的通讯方式,它们的通讯传输对比说明见图 191,并行通讯就像多个车道的公路,可以同时传输多个数据位的数据,而串行通讯,而串行通讯就像单个车道的公路,同一时刻只能传输一个数据位的数据。
图 191 并行通讯与串行通讯的对比图
很明显,因为一次可传输多个数据位的数据,在数据传输速率相同的情况下,并行通讯传输的数据量要大得多,而串行通讯则可以节省数据线的硬件成本(特别是远距离时)以及PCB的布线面积,串行通讯与并行通讯的特性对比见表 191。
表 191 串行通讯与并行通讯的特性对比
特性
串行通讯
并行通讯
通讯距离
较远
较近
抗干扰能力
较强
较弱
传输速率
较慢
较高
成本
较低
较高
不过由于并行传输对同步要求较高,且随着通讯速率的提高,信号干扰的问题会显著影响通讯性能,现在随着技术的发展,越来越多的应用场合采用高速率的串行差分传输。
19.2 全双工、半双工及单工通讯
根据数据通讯的方向,通讯又分为全双工、半双工及单工通讯,它们主要以信道的方向来区分,见图 192及表 192。
表 192 通讯方式说明
通讯方式
说明
全双工
在同一时刻,两个设备之间可以同时收发数据
半双工
两个设备之间可以收发数据,但不能在同一时刻进行
单工
在任何时刻都只能进行一个方向的通讯,即一个固定为发送设备,另一个固定为接收设备
仍以公路来类比,全双工的通讯就是一个双向车道,两个方向上的车流互不相干;半双工则像乡间小道那样,同一时刻只能让一辆小车通过,另一方向的来车只能等待道路空出来时才能经过;而单工则像单行道,另一方向的车辆完全禁止通行。
图 192 全双工、半双工及单工通讯
19.3 同步通讯与异步通讯
根据通讯的数据同步方式,又分为同步和异步两种,可以根据通讯过程中是否有使用到时钟信号进行简单的区分。
在同步通讯中,收发设备双方会使用一根信号线表示时钟信号,在时钟信号的驱动下双方进行协调,同步数据,见图 193。通讯中通常双方会统一规定在时钟信号的上升沿或下降沿对数据线进行采样。
图 193 同步通讯
在异步通讯中不使用时钟信号进行数据同步,它们直接在数据信号中穿插一些同步用的信号位,或者把主体数据进行打包,以数据帧的格式传输数据,见图 194,某些通讯中还需要双方约定数据的传输速率,以便更好地同步。
图 194 某种异步通讯
在同步通讯中,数据信号所传输的内容绝大部分就是有效数据,而异步通讯中会包含有帧的各种标识符,所以同步通讯的效率更高,但是同步通讯双方的时钟允许误差较小,而异步通讯双方的时钟允许误差较大。
19.4 通讯速率
衡量通讯性能的一个非常重要的参数就是通讯速率,通常以比特率(Bitrate)来表示,即每秒钟传输的二进制位数,单位为比特每秒(bit/s)。容易与比特率混淆的概念是"波特率"(Baudrate),它表示每秒钟传输了多少个码元。而码元是通讯信号调制的概念,通讯中常用时间间隔相同的符号来表示一个二进制数字,这样的信号称为码元。如常见的通讯传输中,用0V表示数字0,5V表示数字1,那么一个码元可以表示两种状态0和1,所以一个码元等于一个二进制比特位,此时波特率的大小与比特率一致;如果在通讯传输中,有0V、2V、4V以及6V分别表示二进制数00、01、10、11,那么每个码元可以表示四种状态,即两个二进制比特位,所以码元数是二进制比特位数的一半,这个时候的波特率为比特率的一半。因为很多常见的通讯中一个码元都是表示两种状态,人们常常直接以波特率来表示比特率,虽然严格来说没什么错误,但希望您能了解它们的区别。
- 第19章 通讯的基本概念—零死角玩转STM32-F429系列
- 第20章 USART—串口通讯—零死角玩转STM32-F429系列
- 第40章 CAN—通讯实验—零死角玩转STM32-F429系列
- 第41章 RS-485通讯实验—零死角玩转STM32-F429系列
- 第4章 初识STM32—零死角玩转STM32-F429系列
- 第9章 初识STM32固件库—零死角玩转STM32-F429系列
- 第16章 STM32中断应用概览—零死角玩转STM32-F429系列
- 第18章 SysTick—系统定时器—零死角玩转STM32-F429系列
- 第23章 I2C—读写EEPROM—零死角玩转STM32-F429系列
- 第24章 SPI—读写串行FLASH—零死角玩转STM32-F429系列
- 第26章 FMC—扩展外部SDRAM—零死角玩转STM32-F429系列
- 第27章 LTDC/DMA2D—液晶显示—零死角玩转STM32-F429系列
- 第28章 LTDC—液晶显示中英文—零死角玩转STM32-F429系列
- 第29章 电容触摸屏—触摸画板—零死角玩转STM32-F429系列
- 第30章 ADC—电压采集—零死角玩转STM32-F429系列
- 第31章 TIM—基本定时器—零死角玩转STM32-F429系列
- 第32章 TIM—高级定时器—零死角玩转STM32-F429系列
- 第34章 IWDG—独立看门狗—零死角玩转STM32-F429系列
- QNX system architecture 1 - QNX neutrino RTOS设计理念
- 第15章 RCC—使用HSE/HSI配置时钟—零死角玩转STM32-F429系列
- 第16章 STM32中断应用概览—零死角玩转STM32-F429系列
- 第17章 EXTI—外部中断/事件控制器—零死角玩转STM32-F429系列
- 第18章 SysTick—系统定时器—零死角玩转STM32-F429系列
- 第19章 通讯的基本概念—零死角玩转STM32-F429系列
- UIScrollView中的UITableView接收不到点击事件
- json——标准的JSON请求实现过程
- 第20章 USART—串口通讯—零死角玩转STM32-F429系列
- 【Qt开发】Qt测试计算时间
- 第21章 DMA—直接存储区访问—零死角玩转STM32-F429系列
- 第22章 常用存储器介绍—零死角玩转STM32-F429系列
- 顶级黑客欢乐解析:宝宝事件中人肉搜索的七种方法
- 第23章 I2C—读写EEPROM—零死角玩转STM32-F429系列