常用通信总线协议

目录

一、通信方式 

二、IIC、UART、SPI总线介绍

1、IIC(Inter-Integrated Circuit ,集成电路总线):低速,半双工,同步串行总线

(1)传输速率:

(2)总线构成:

(3)通讯状态:

(4)写过程:

(5)读过程:

2、UART(Universal Asynchronous Receiver and Transmitter,通用异步收/发器):全双工,异步串行总线

(1)传输速率:

(2)总线构成:

(3)协议格式:

3、SPI(Serial Peripheral Interface,串行外设接口):高速,全双工,同步串行总线

(1)传输速率:

(2)总线构成:

(3)SPI四种工作模式:

(4)SPI通信协议:

参考资料:


一、通信方式 

通信方式是指通信双方之间的工作方式或者信号传输方式。

根据数据传输方式可以分为串行通信并行通信

串行通信又称为点对点通信。

串行通信根据数据同步方式分为同步传送异步传送

串行通信根据数据传送方向与时间的关系可以分为单工半双工全双工通信。

通信方式分类
通信方式根据数据传输方式串行通信数据同步方式同步传送SPI、IIC
异步传送UART
数据传输方向与时间的关系单工通信
半双工通信IIC
全双工通信SPI、UART
并行通信

 单工、半双工、双工通信方式区别:

(1)单工:数据传输只支持数据在一个方向上传输;在同一时间只有一方能接受或发送信息,不能实现双向通信,举例:电视,广播。
(2)半双工:数据传输允许数据在两个方向上传输,但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信;在同一时间只可以有一方接受或发送信息,可以实现双向通信。举例:对讲机。
(3)全双工:数据通信允许数据同时在两个方向上传输,因此,全双工通信是两个单工通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力;在同一时间可以同时接受和发送信息,实现双向通信,举例:电话通信。

二、IIC、UART、SPI总线介绍

1、IIC(Inter-Integrated Circuit ,集成电路总线):低速,半双工,同步串行总线

(1)传输速率:

标准模式(100 kbps)快速模式(400 kbps)高速模式(3.4 Mbps),另外一些变种实现了低速模式(10 kbps)快速+模式(1 Mbps)

(2)总线构成:

SDA(数据线)SCL(时钟线),可以发送和接收数据,并且在硬件上都需要接一个上拉电阻到VCC

(3)通讯状态:

IIC总线在通信的过程中一共有一下几种状态:

<1> 空闲状态:SDA 和 SCL 两条信号线同时处于高电平

<2> 起始状态:SCL为高电平,SDA由高电平到低电平。起始信号由主控器发起,发起前处于空闲状态。

<3> 结束状态:SCL为高电平,SDA由低电平到高电平。结束信号由主控器发起,发起后处于空闲状态。

<4> 有效的数据位传输

        在 IIC 总线上传送的每一位数据都有一个时钟脉冲相对应(或同步控制),即在 SCL 串行时钟的配合下,数据在 SDA 上从高位向低位依次串行传送每一位的数据

        进行数据传送时,在 SCL 呈现高电平期间,SDA 上的电平必须保持稳定,低电平为数据 0,高电平为数据 1。只有在 SCL 为低电平期间,才允许 SDA 上的电平改变状态。

<5> 应答信号与非应答信号

I2C 总线上的所有数据都是以 8 位字节传送的,发送器(主机)每发送一个字节,就在第9个时钟脉冲期间释放数据线,由接收器(从机)反馈一个应答信号。应答信号为低电平时,规定为有效应答位(ACK简称应答位),表示接收器已经成功地接收了该字节;应答信号为高电平时,规定为非应答位(NACK),一般表示接收器接收该字节没有成功。对于反馈有效应答位 ACK 的要求是,接收器在第 9 个时钟脉冲之前的低电平期间将 SDA 线拉低,并且确保在该时钟的高电平期间为稳定的低电平。

有效应答位:

非应答位:

对非应答位(NACK)还要特别说明的是,还有以下四种情况IIC通信过程中会产生非应答位:

(1)接收器(从机)正在处理某些实时的操作无法与主机实现IIC通信的时候,接收器(从机)会给主机反馈一个非应答位(NACK)

(2)主机发送数据的过程中,从机无法解析发送的数据,接收器(从机)也会给主机反馈一个非应答位(NACK)

(3)主机发送数据的过程中,从机无法再继续接收数据,接收器(从机)也会给主机反馈一个非应答位(NACK)

(4)主机从从机中读取数据的过程中,主机不想再接收数据,主机会给从机反馈一个非应答位(NACK),注意,这种情况是主机给从机反馈一个非应答位(NACK)

(4)写过程:

<1>主机发送一个起始信号从机的设备地址(7位)+ ‘0’(写)给从机,从机发送有效应答位‘0’

<2>主机会发送想要写入的寄存器地址,从机发送有效应答位‘0’

<3>主机发送数据给从机,从机发送有效应答位‘0’

<4>主机发送一个停止信号结束发送过程

(5)读过程:

<1>主机发送一个起始信号从机的设备地址(7位)+ ‘0’(写)给从机,从机发送有效应答位‘0’

<2>主机会发送想要写入的寄存器地址,从机发送有效应答位‘0’

<3>主机会给从机再次发送一次起始信号,接着把IIC从机的7位设备地址后面添一个‘1’发送给从机,从机发送有效应答位‘0’

<4>从机继续占用SDA信号线给主机发送寄存器中的数据

<5>发送完毕以后,主机再次占用SDA信号线发送一个非应答信号‘1’给从机,主机发送一个停止信号给从机结束整个读数据的过程。

2、UART(Universal Asynchronous Receiver and Transmitter,通用异步收/发器):全双工,异步串行总线

(1)传输速率:

<1>  RS-232(全双工):3线,只允许一对一通讯。传输速率一般不超过20Kbps,速率低,抗干扰能力差,RS-232C能传输的最大距离不超过15m

 <2> RS-422(全双工):传输速率最高可到10Mbit/s,传输距离延长到4000英尺(速率低于100Kbit/s时),并允许在一条平衡总线上连接最多10个接收器。RS-422 有4根信号线:两根发送、两根接收。

<3> RS-485(半双工,差分信号):允许多个发送器连接到同一条总线上,最多32个接收器。增强了驱动能力和冲突保护特性,扩展了总线共模范围。最高传输速率10Mbps,抗干扰能力强,可以传距离1.5km。在很短的距离下才能获得最高速率传输。一般100米长双绞线最大传输速率仅为1Mbps。

(2)总线构成:

GND(地线)TXD(发送数据)RXD(接收数据);不需要时钟线

(3)协议格式:

空闲位:UART协议规定,当总线处于空闲状态时信号线的状态为‘1’即高电平
起始位:开始进行数据传输时发送方要先发出一个低电平’0’来表示传输字符的开始。因为空闲位一直是高电平所以开始第一次通讯时先发送一个明显区别于空闲状态的信号即为低电平。
数据位:起始位之后就是要传输的数据,数据可以是5,6,7,8,9位,构成一个字符,一般都是8位。先发送最低位最后发送最高位。
奇偶校验位:
数据位传送完成后,要进行奇偶校验,校验位其实是调整个数,串口校验分几种方式:
1.无校验(no parity)
2.奇校验(odd parity):如果数据位中’1’的数目是偶数,则校验位为’1’,如果’1’的数目是奇数,校验位为’0’。
3.偶校验(even parity):如果数据为中’1’的数目是偶数,则校验位为’0’,如果为奇数,校验位为’1’。
4.mark parity:校验位始终为1
5.space parity:校验位始终为0
停止位:数据结束标志,可以是1位,1.5位,2位的高电平。
波特率:数据传输速率使用波特率来表示,单位bps(bits per second),常见的波特率9600bps,115200bps等等,其他标准的波特率是1200,2400,4800,19200,38400,57600

3、SPI(Serial Peripheral Interface,串行外设接口):高速,全双工,同步串行总线

(1)传输速率:

SPI没有官方化,速率不统一,根据器件不同传输速率不一,有几M,十几M的,也有几十M的,比I2C速度快。

(2)总线构成:

SCLK(时钟信号)MOSI/SDO(主设备输出,从设备输入)MISO/SDI(主设备输入,从设备输出)CS/SS(片选信号)

(3)SPI四种工作模式:

四种模式是通过 “时钟极性 CPOL”“时钟相位 CPHA” 的电平来实现和区分的。

  • “时钟极性 CPOL” 决定总线空闲时SCLK的电平状态。
  • “时钟相位 CPHA” 决定数据开始采样时刻。
SPI四种工作模式
SPI模式CPOLCPHA空闲时SCLK时钟电平采样时刻
000低电平奇数边沿(1、3、5……)
101低电平偶数边沿(2、4、6……)
210高电平奇数边沿(1、3、5……)
311高电平偶数边沿(2、4、6……)

(4)SPI通信协议:

  • 起始信号:标号 ①,NSS 信号线由高变低
  • 停止信号:标号 ⑥,NSS 信号线由低变高
  • 数据有效性:标号② ③ ④ ⑤;MOSI 及 MISO 的数据在 SCK 的上升沿期间变化输出,在 SCK 的下降沿时被采样。在 SCK 的每个时钟周期传输一位数据,且数据输入输出是同时进行的。一般采用MSB先行模式。

参考资料:

1、https://blog.csdn.net/hezhanran/article/details/104791063/

2、https://blog.csdn.net/weixin_39900736/article/details/111115542

3、https://blog.csdn.net/Rocher_22/article/details/116586911

4、https://blog.csdn.net/sternlycore/article/details/85244515

5、https://blog.csdn.net/qq_38351824/article/details/104108162

  • 4
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FPGA (Field Programmable Gate Array) 设计常常需要与外部设备通信,这通常涉及使用一些标准的总线协议。FPGA 内置的输入/输出(I/O)接口支持多种总线协议,允许设计师轻松地将 FPGA 集成到各种系统中。以下是几种常用的 FPGA 总线协议: ### 1. AXI (Advanced Extensible Interface) AXI 是由 Xilinx 和 AMD 开发的一种高速、可伸缩接口标准,广泛用于 FPGA 设计中。它包括了 AXI4-Lite、AXI4-Stream 等多种变体,适合于控制数据流、存储器访问以及片上系统集成等多种应用。AXI 的优点在于其强大的功能集、高性能和广泛的兼容性。 ### 2. PCIe (Peripheral Component Interconnect Express) PCIe 是一种高速串行总线标准,主要用于连接计算机的各种外设。在 FPGA 应用中,通过 PCIe 接口可以实现 FPGA 与高性能 CPU 或 GPU 之间的高速数据传输。PCIe 支持全双工通信,并具有良好的错误检测和恢复机制。 ### 3. DDR (Double Data Rate) SDRAM 存储器接口 FPGA 可能需要访问高速 SRAM 或 DRAM 存储器芯片,因此 DDR 存储器接口协议对于许多 FPGA 应用尤为重要。DDR 接口提供了一种高效的方式来进行高速的数据传输,这对于内存密集型的应用非常关键。 ### 4. SPI (Serial Peripheral Interface) 和 I²C (Inter-Integrated Circuit) 尽管 SPI 和 I²C 对于现代高带宽应用不如上述协议常见,但对于低速、低成本或单通道通信需求的小型设备,它们仍然是很好的选择。SPI 提供了一个简单的并行接口,而 I²C 则是一种两线式接口,适用于需要少量设备之间通信的情况。 ### 5. JTAG (Joint Test Action Group) JTAG 接口主要用于芯片级的测试和调试。它允许设计者远程监控和调整 FPGA 的状态,这对于调试复杂的设计尤其有用。 ### 使用 FPGA 总线协议的最佳实践 - **选择合适的协议**:根据系统的性能需求、成本目标、功耗限制等因素选择最合适的总线协议。 - **考虑兼容性和互操作性**:确保所选协议能够与其他硬件组件无缝对接,同时考虑到未来的升级和扩展可能性。 - **优化电源管理**:对于动态负载变化较大的应用,合理管理和优化电源分配至关重要。 - **实施适当的错误处理和故障隔离**:总线协议的可靠性和稳定性对整个系统至关重要,应采取措施防止数据丢失或通信中断。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值