一、IIC

连接线:VCC、GND、SDA、SCL。

半双工同步通信。MSB。

速率:100Kbps、400Kbps、3.4Mbps。

数据采集:SCL为高电平期间采集,因此SDA必须在SCL为低期间跳变。

空闲状态:SCL、SDA同为高。因此电路设计一般加上拉电阻。

起始信号:SCL为高时SDA上出现下降沿。

停止信号:SCL为高时SDA上出现上升沿。

读写位    :1为读,0为写。

应答信号:发送方发送完毕会将SDA拉高,然后等待接收方发送ACK或者NACK,如果下一个SCL为高的时候接收方已经将SDA拉低表示ACK,为高则为NACK。

读数据:起始信号+7位地址|写+WACK+读地址+WACK+起始信号+7位地址|读+读数据0+ACK+读取数据1+ACK......+读取数据N+NACK+停止信号。(AT24C02)如果读取一个数据就直接返回NACK。

写数据:起始信号+7位地址|写+WACK+写地址+WACK+写数据+WACK+停止信号。

二、SPI

连接线:VCC、GND、MOSI、MISO、SCLK、SSN 。

全双工同步通信。MSB。

速率:从机限制。最大50Mbps。

数据采集与输出与极性和相位配置有关:

CPOL表示空闲时SCLK电平状态,0为低1为高。

CPHA表示数据采集在什么边沿,0为时钟前沿,1为后边沿。数据输出则为另外一个边沿。具体是上升还是下降沿需要结合CPOL确定。因此可以以CPOL为第1位,CPHA为第0位组成4种模式。

模式0:CPOL = 0 CPHA = 0;

模式1:CPOL = 0 CPHA = 1;

模式2:CPOL = 1 CPHA = 0;

模式3:CPOL = 1 CPHA = 1;

当数据从在时钟前沿采集时,第0位没有数据输出边沿,在片选信号SSN使能时输出。

三、U(S)ART

连接线:VCC、GND、TX、RX(RTC、CTS、DTR、DSR在TTL中不常用)。

UART:全双工异步通信。USART:全双工同步/异步通信。LSB。

数据包描述:起始位+数据位+(奇偶检验)+停止位+空闲位,

起始位(低电平,时长为1个bit长度);

数据位(LSB,可配置为4-9个bit);

奇偶检验(使得加上该位后数据位中的1为奇数或者偶数,也可没有该位);

停止位(可配置时长为1、1.5、2个bit,高电平);

空闲位(高电平)。

bit时长为1/比特率。

比特率 = 波特率 *log2(N);N为一个码元可以表示的状态。在uart通信中一个码元就是一个bit为0或者1,N=2,波特率等于比特率。

四、同步/异步通信

同步通信wiki百科如下:

异步通信wiki百科如下:

同步通信特征:

1、发送端以一个恒定的速率把数据以连续的数据流发送出去。

2、发送端使用与接收端采集速率相同的速率发送数据。

3、随着时间推移时钟可能变得不同步,在传输数据时需要重新同步。

4、没有起始位、停止位。

异步通信特征:

1、不需要额外的时钟信号。

2、数据可以间歇性传输,而不是一个恒定的数据流。

3、数据发送时不需要以一个恒定的间隔(regular interval)去发送,因此不需要一个额外的时钟同步信号并且可以变比特率通信。

4、每个字节都需要加上起始位、停止位来传输。

IIC、SPI、UART串行通信以及同步/异步通信学习相关推荐

  1. IIC,SPI,UART,单总线

    IIC与SPI通信 IIC SPI通信 IIC与SPI的比较 UART 单总线 因为面试时被问到IIC和SPI通信,所以又重新学习了一下. IIC IIC顾名思义就是两根线,一根SCL(时钟线),一根 ...

  2. I/O接口和外部通信接口——嵌入式系统 GPIO/IIC/SPI/UART/USB/HDMI/RS-232/RS-485/CAN

    I/O接口:GPIO.IIC.SPI.UART.USB.HDMI (1)GPIO         通用输入输出接口,General Purpose Input Output, GPIO. 输出引脚的两 ...

  3. 开发调试工具:USB转IIC/I2C/SPI/UART适配器模块可编程开发板

    开发调试工具:USB转IIC/I2C/SPI/UART适配器模块可编程开发板 发个方便测试I2C.SPI.1Wire接口的工具模块 总的思路是通过USB或者UART接口发送一些协议字符串,由模块转换成 ...

  4. XR20M1170实现FPGA 的SPI/IIC转UART

    最近基于FPGA实现UART通讯,因为项目中UART的各项参数需要可配置,使用verilog直接实现一个UART会麻烦一些,稳定性也会降低,因此使用了更为方便的方案,FPGA加上一块SPI/IIC转U ...

  5. 韦东山 嵌入式Linux应用开发基础知识 下【串口 IIC SPI

    10 串口 因为UART没有时钟信号,无法控制何时发送数据,也无法保证双方按照完全相同的速度接收数据.因此,UART为每个字节添加额外的起始位和停止位,以帮助接收器在数据到达时进行同步: 双方还必须事 ...

  6. 异步通信还要设置波特率?_深入理解同步/异步通信

    异步通信还要设置波特率?_深入理解同步/异步通信   上一篇我们解释了串口通信中同步通信和异步通信的区别,详见上篇链接.其中我们分析同步/异步通信最重要的不同点就是是否同步时钟,可能就有很多小伙伴不理 ...

  7. UART串行通信模式

    UART串行通信模式 What How 举例 Task sao话一下 What   单片机可以与其他机器(像上位机,我们所用的上位机就是我们的PC)进行数据之间的传输也就是通信.而通信具有不同的通信模 ...

  8. Syncthing-P2P文件同步工具学习

    Syncthing-P2P文件同步工具学习 简介 windows安装 其他 linux安装 linux vps安装配置 linux vps内安装syncthing 简介 开源的文件同步工具,基于P2P ...

  9. 数据传输方式(并行/串行通信;同步/异步;单工、半双工、全双工)

    数据传输主要有三种不同的划分方式. 并行/串行通信: 同步/异步传输: 按数据的不同传输方向可分为单工.半双工.全双工. 1.并行通信和串行通信 (1)并行通信 并行通信是同时传送数据的各个位进行发送 ...

最新文章

  1. 独家 | 使EfficientNet更有效率的三种方法(附链接)
  2. 数据结构与算法 | 用栈实现队列
  3. LeetCode 983. 最低票价(动态规划)
  4. mysql 系统月份_MySQL里求给定的时间是所在月份的第几个星期
  5. python、java、C三种方法打印乘法表
  6. Spring 常见注解原理和自定义@interface注解
  7. MATLAB关于xlsread函数的用法
  8. YOLOv3 SPP源码分析
  9. 平均数 中位数 四分位数 方差 标准差
  10. centos8 配置DNS服务
  11. python实战项目词云生成器(wordcloud+jieba+pyinstaller打包)——词云生成软件【Pyinstaller打包问题解决】
  12. 地图作业平台低代码实战(搭建能力提升)
  13. msdn i tell you网址及下载系统详细步骤
  14. 《时代三部曲》感悟三
  15. 碧蓝航线皇家巡游服务器更新维护,碧蓝航线更新公告
  16. EasyCVR家庭远程视频监控解决方案
  17. 【手绘漫画】图解LeetCode之相交链表(LeetCode 160)
  18. vb python excel_震惊!当Python遇到Excel后,将开启你的认知虫洞
  19. 新手21天学java后端-day4-oracle数据库
  20. 工信部开展端口类短信群发业务清理整顿专项行动

热门文章

  1. Java paypal如何实现付费订阅(循环扣费)
  2. 计算机测控技术在线作业二答案,华东《计算机测控技术》2020年春季学期在线作业(二)答卷【标准答案】...
  3. 玩了一下 SAP Fiori ABAP编程模型
  4. 用 Python 分析各国人口性别比例
  5. DingTalk「开发者说」第8期 钉钉微应用开发实战
  6. 高等数学笔记-乐经良老师-第三章-导数和微分
  7. mysql上机试题_mysql上机试题
  8. Adaptive Icons - Android O 自适应图标简单用法
  9. linux 大文件编辑sed,Linux高级文本处理工具之sed(一)
  10. sherlock软件使用_如何在不使用电缆的情况下播放BBC的“ Sherlock”