概述
目标:
- 理解同步/异步通信、单工/半双工/全双工的概念
- 理解I2C、SPI、UART通信协议
I2C、SPI、UART都是串行通信协议,都是通过一根线作为数据线传输数据。
1.基本概念
1.1 同步通信/异步通信
- 同步:阻塞模式,发送方发送数据后,只有等到接收方响应后才能发送下一个数据包(带时钟线,SPI、I2C)
- 异步:非阻塞模式,发送方发送数据后,不考虑接收方进行响应直接发送下一个数据包(不带时钟线,UART)
1.2 单工/半双工/全双工
- 单工:一方发送数据,一方接收数据,数据只能单方向传输
- 半双工:双方均可发送数据,但同一时间,只能一方发送数据(I2C)
- 全双工:双方均可发送数据,同一时间,双方均可发送数据(UART、SPI)
2.I2C
2.1 信号线
两根信号线:
- 时钟线——SCL;
- 数据线——SDA;
2.2 工作原理
数据传输格式:以7位寻址格式为例,起始条件+从机地址(7bit)+读写位(1bit)+应答位(1bit)+数据位(8bit)+应答位(1bit)+停止条件
SDA和SCL需要接上拉电阻,总线空闲时应为高电平,且时钟信号仅由主机产生。接收方产生应答信号,注意即使是主发从收模式时地址也是由主机发送,地址应答信号都是从机给的。
数据格式:7位寻址、10位寻址、自由数据格式
更多详细工作原理可参考:文末链接中I2C部分
3.SPI
3.1 信号线
一般为四根信号线(也可以3线,单向传输):
- 主出从入信号线——MOSI(用于主机向从机发送数据);
- 主入从出信号线——MISO(用于从机向主机发送数据);
- 时钟信号——SCLK;
- 片选信号线——SS/CS(用于选择从机设备,低有效);
3.1 工作原理
数据传输格式:片选信号拉低选择从机,根据时钟极性和相位决定读取数据的方式
无起始位和停止位,数据可以持续传输不会中断;独立的MISO、MOSI可以同时发送和接收数据。通过串行时钟极性(CPOL)和相位(CPHA)搭配出SPI的四种工作模式:
CPOL+CPHA=00/01/10/11:
- CPOL = 0:串行时钟低电平空闲
- CPOL = 1:串行时钟高电平空闲
- CPHA = 0:串行时钟第一个跳变沿传输数据
- CPHA = 1:串行时钟第二个跳变沿传输数据
更多详细工作原理可参考:文末链接中SPI部分
4.UART
4.1 信号线
两根信号线:
- 发送数据线——TX;
- 接收数据线——RX;
4.2 工作原理
数据传输格式:起始位+数据位+奇偶校验位+停止位
UART数据传输线通常在不传输数据时保持在高电平,发送和接收UART的波特率必须在彼此的10%之内。
- 空闲位:数据线在空闲状态的时候为逻辑“1”状态。
- 起始位:当要传输数据的时候先将数据线拉低,表示开始数据传输。
- 数据位:即要传输的数据,数据位数可选择 5~8 位,低位在前,先传输,高位最后传输。
- 奇偶校验位:这是对数据中“1”的位数进行奇偶校验用的,可不使用。
- 停止位:数据传输完成标志位,停止位的位数可以选择 1 位、1.5 位或 2 位高电平,一般都选择 1 位停止位。
- 波特率:波特率就是 UART 数据传输的速率,也就是每秒传输的数据位数。
更多详细工作原理可参考:文末链接中UART部分
参考资料:
【数字IC精品文章收录】近500篇文章|学习路线|基础知识|接口|总线|脚本语言|芯片求职|安全|EDA|工具|低功耗设计|Verilog|低功耗|STA|设计|验证|FPGA|架构|AMBA|书籍|_myhhhhhhhh的博客-CSDN博客
最后
以上就是专一向日葵为你收集整理的数字IC学习之协议篇:I2C、SPI、UART1.基本概念2.I2C3.SPI4.UART的全部内容,希望文章能够帮你解决数字IC学习之协议篇:I2C、SPI、UART1.基本概念2.I2C3.SPI4.UART所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复