IIC、SPI、UART串行通信以及同步/异步通信学习
一、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串行通信以及同步/异步通信学习相关推荐
- IIC,SPI,UART,单总线
IIC与SPI通信 IIC SPI通信 IIC与SPI的比较 UART 单总线 因为面试时被问到IIC和SPI通信,所以又重新学习了一下. IIC IIC顾名思义就是两根线,一根SCL(时钟线),一根 ...
- 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. 输出引脚的两 ...
- 开发调试工具:USB转IIC/I2C/SPI/UART适配器模块可编程开发板
开发调试工具:USB转IIC/I2C/SPI/UART适配器模块可编程开发板 发个方便测试I2C.SPI.1Wire接口的工具模块 总的思路是通过USB或者UART接口发送一些协议字符串,由模块转换成 ...
- XR20M1170实现FPGA 的SPI/IIC转UART
最近基于FPGA实现UART通讯,因为项目中UART的各项参数需要可配置,使用verilog直接实现一个UART会麻烦一些,稳定性也会降低,因此使用了更为方便的方案,FPGA加上一块SPI/IIC转U ...
- 韦东山 嵌入式Linux应用开发基础知识 下【串口 IIC SPI
10 串口 因为UART没有时钟信号,无法控制何时发送数据,也无法保证双方按照完全相同的速度接收数据.因此,UART为每个字节添加额外的起始位和停止位,以帮助接收器在数据到达时进行同步: 双方还必须事 ...
- 异步通信还要设置波特率?_深入理解同步/异步通信
异步通信还要设置波特率?_深入理解同步/异步通信 上一篇我们解释了串口通信中同步通信和异步通信的区别,详见上篇链接.其中我们分析同步/异步通信最重要的不同点就是是否同步时钟,可能就有很多小伙伴不理 ...
- UART串行通信模式
UART串行通信模式 What How 举例 Task sao话一下 What 单片机可以与其他机器(像上位机,我们所用的上位机就是我们的PC)进行数据之间的传输也就是通信.而通信具有不同的通信模 ...
- Syncthing-P2P文件同步工具学习
Syncthing-P2P文件同步工具学习 简介 windows安装 其他 linux安装 linux vps安装配置 linux vps内安装syncthing 简介 开源的文件同步工具,基于P2P ...
- 数据传输方式(并行/串行通信;同步/异步;单工、半双工、全双工)
数据传输主要有三种不同的划分方式. 并行/串行通信: 同步/异步传输: 按数据的不同传输方向可分为单工.半双工.全双工. 1.并行通信和串行通信 (1)并行通信 并行通信是同时传送数据的各个位进行发送 ...
最新文章
- 独家 | 使EfficientNet更有效率的三种方法(附链接)
- 数据结构与算法 | 用栈实现队列
- LeetCode 983. 最低票价(动态规划)
- mysql 系统月份_MySQL里求给定的时间是所在月份的第几个星期
- python、java、C三种方法打印乘法表
- Spring 常见注解原理和自定义@interface注解
- MATLAB关于xlsread函数的用法
- YOLOv3 SPP源码分析
- 平均数 中位数 四分位数 方差 标准差
- centos8 配置DNS服务
- python实战项目词云生成器(wordcloud+jieba+pyinstaller打包)——词云生成软件【Pyinstaller打包问题解决】
- 地图作业平台低代码实战(搭建能力提升)
- msdn i tell you网址及下载系统详细步骤
- 《时代三部曲》感悟三
- 碧蓝航线皇家巡游服务器更新维护,碧蓝航线更新公告
- EasyCVR家庭远程视频监控解决方案
- 【手绘漫画】图解LeetCode之相交链表(LeetCode 160)
- vb python excel_震惊!当Python遇到Excel后,将开启你的认知虫洞
- 新手21天学java后端-day4-oracle数据库
- 工信部开展端口类短信群发业务清理整顿专项行动
热门文章
- Java paypal如何实现付费订阅(循环扣费)
- 计算机测控技术在线作业二答案,华东《计算机测控技术》2020年春季学期在线作业(二)答卷【标准答案】...
- 玩了一下 SAP Fiori ABAP编程模型
- 用 Python 分析各国人口性别比例
- DingTalk「开发者说」第8期 钉钉微应用开发实战
- 高等数学笔记-乐经良老师-第三章-导数和微分
- mysql上机试题_mysql上机试题
- Adaptive Icons - Android O 自适应图标简单用法
- linux 大文件编辑sed,Linux高级文本处理工具之sed(一)
- sherlock软件使用_如何在不使用电缆的情况下播放BBC的“ Sherlock”