我是靠谱客的博主 聪明小懒虫,最近开发中收集的这篇文章主要介绍IIC、SPI、UART、USART、USB、CAN等通讯协议原理及区别,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

(1)IIC   (PHILIPS公司开发)

Inter-Integrated Circuit ,它为两线式串行总线(SDA数据线、SCL时钟线),用于连接微控制器和外围设备、传输速度100-400kHz=400kbps(48.8KB/s),高速模式最高可达4MHz(488KB/s),非全双工

注意KB和kbps的区别:

KB代表K个字节

kbps代表k个位每秒。

传送过程中有三种类型的信号:开始、结束、应答信号

图参考:【1】IIC总线工作原理IIC总线工作原理_怀想天空2010的博客-CSDN博客

1.1开始发送信号和结束发送信号时SDA和SCL电平的转换:

1.2主机向从机发送信号,等待从机应答,应答为低电平、非应答为高电平,在第9个时钟周期完成:

数据传输的时序:

从高位开始传输,若有中断来,则SCL置低电平等待,SCL高电平时数据传输,SCL低电平时数据转换

补充读写过程

【2】IIC总线解析IIC总线解析 - zalebool - 博客园

【3】对 IIC 总线的理解、调用函数以及常见面试问题 对 IIC 总线的理解、调用函数以及常见面试问题 - AlanTu - 博客园

(2)SPI (Motorola公司)

Serial Peripheral interface 串行外围设备接口

全双工同步数据传输,数据传输速率很高可达到50Mhz(转化一下约,相当于1s传输50M个位,速度为5.9MB/s)

有4根线进行通信:MISO MOSI SCLK CS

MISO:主设备数据输入,从设备数据输出

MOSI:主设备数据输出,从设备数据输入

SCLK:主设备产生的时钟信号

CS:片选信号

其中:外设的写操作和读操作是同步完成的。如果只进行写操作,主机只需忽略接收到的字节;反之,若主机要读取从机的一个字节,就必须发送一个空字节来引发从机的传输

传输时序:

依据时钟极性和相位可以进行相应的传输:CPOL时钟极性(为1时,高电平代表空闲状态)反之亦然,CPHA为时钟相位,CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样,为1时,第二个跳变沿被采样。


补充读写过程 

可参考:SPI和IIC总线的对比,写的不错I2C和SPI总线对比_kerneler_的博客-CSDN博客_spi总线

(3)UART

UART,全称Universal Asynchronous Receiver/Transmitter,通用异步收发传输器

传输速率取决于波特率的设置

例如:

波特率115200 = 115200 (位/秒)

如果没有校验位,就应该除以 10,得到的是每秒字节数:
波特率115200 = 115200 (位/秒) = 11520 (字节/秒) 

再除以 1024,就是每秒 KB 数:
波特率115200 = 115200 (位/秒) = 11.25 (KB/秒) 

如果有一位奇偶校验位,就应该除以 11,得到的是每秒字节数。

参考关于波特率与字节传输速率计算_偏执灬的博客-CSDN博客_波特率115200每秒传多少字节

UART是通用异步收发器(异步串行通信口)的英文缩写,它包括了RS232、RS499、RS423、RS422和RS485等接口标准规范和总线标准规范,即UART是异步串行通信口的总称。而RS232、RS499、RS423、RS422和RS485等,是对应各种异步串行通信口的接口标准和总线标准,它规定了通信口的电气特性、传输速率、连接特性和接口的机械特性等内容。实际上是属于通信网络中的物理层(最底层)的概念与通信协议没有直接关系。而通信协议,是属于通信网络中的数据链路层(上一层)的概念。 COM口是PC(个人计算机)上,异步串行通信口的简写。由于历史原因,IBM的PC外部接口配置为RS232,成为实际上的PC界默认标准。所以,现在PC机的COM口均为RS232

参考: 通信方式梳理:GPIO,I2C,SPI,UART,USART,USB的区别_步印的博客-CSDN博客_gpio和i2c区别

RS-232是一个串行通信接口标准,它规定了逻辑“1”为-3 ~ -15V,逻辑“0”为+3 ~ +15V,符合该标准的串口也叫RS-232串口,比如电脑的COM口。不符合RS-232标准的串口?如单片机(如stm32)的UART/USART,它不遵循RS-232标准,使用的是TTL电平(Transistor-Transistor Logic),该电平的逻辑“1”为+5V,逻辑“0”为0V,称为TTL串口。
参考:https://blog.csdn.net/qq_26904271/article/details/79829363 

(4)USART 

Universal Synchronous/Asynchronous Receiver/Transmitter 通用同步/异步串行接收/发送器 全双工同步异步方式

支持异步通信或者同步通信(时钟同步)

UART和USART的区别是USART多了一根时钟同步线

参考:UART和USART有区别 - 通信设计应用 - 电子发烧友网

注意一般情况下使用:全双工异步通信(时钟不同步需要加上标志位识别)

TX和RX

(5)USB(英特尔、康柏、IBM、Microsoft等多家公司联合提出

Universal Serial BUS(通用串行总线)

USB2.0属于半双工 异步通信方式

USB3.0属于全双工

用于规范电脑与外部设备的连接和通讯,是应用在PC 领域的接口技术

传输速度:

标准的5口:

3.0:参考:USB3.0连接器引脚、接口定义及封装尺寸 - 百度文库

(6)CAN (德国电气商博世公司开发出面向汽车的 CAN 通信协议)半双工的通信方式

Controller Area Network ,传输速率1Mbps相当于125KB/s

可参考:CAN总线要点 CAN总线要点 - wfjiang - 博客园

1、同步和异步通信的问题?

参考:同步异步通信

参考:通信方式梳理:GPIO,I2C,SPI,UART,USART,USB的区别   通信方式梳理:GPIO,I2C,SPI,UART,USART,USB的区别_步印的博客-CSDN博客_gpio和i2c区别 

2、单片机与电脑的连接问题?

需要解决电平转换的问题

参考:区分:串口,COM口,UART,USART区分:串口,COM口,UART,USART_马可波罗包的博客-CSDN博客

关于信道的概念以及通信交互方式:半双工、全双工(上述涉及的)可联系(计算机网络)物理层的如下描述

最后

以上就是聪明小懒虫为你收集整理的IIC、SPI、UART、USART、USB、CAN等通讯协议原理及区别的全部内容,希望文章能够帮你解决IIC、SPI、UART、USART、USB、CAN等通讯协议原理及区别所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部