欢迎来到军工软件开发人才培养基地——学到牛牛

常见总线讲解

时间:2024-05-06 07:01:10 来源:学到牛牛

 

SPI(Serial Peripheral Interface):串行外设接口。

SPI总线由三条信号线组成:串行时钟(SCLK),串行数据输入(SDO),串行数据输出(SDI)。

SPI总线可以实现多个SPI设备互相连接。提供SPI串行时钟的SPI设备为SPI主机或主设备(Master),其它设备为SPI从机或从设备(Slave)。主设备间可以实现全双工通信(同时接收和发送数据),当有多个从设备时还可以增加一条从设备选择线。

 

I2C(INTER IC BUS):集成电路总线。

I2C总线是双向、两线(SCL、SDA)、串行、多主控接口标准,具有总线仲裁机制,非常适合在器件之间进行近距离,非经常性的数据通信。

I2C使用的线更少,需要双向IO的支持,使用上拉电阻,抗干扰能力较弱,一般使用于同一板卡上芯片之间的通信,较少使用于远距离通信。

 

UART(Universal Asynchronous Receiver Tranmitter):通用异步收发器。

UART总线是异步串口,一般由波特率产生器(产生的波特率等于传输波特率的16倍)、UART接收器、UART发送器组成,硬件上有两根线,一根用于发送,一根用于接收。

UART一般可以实现全双工的信号传输。且需要固定的波特率才能实现。

UART通信:

UART首先将接收到的并行数据转换成串行数据来传输。消息帧从一个地位起始位开始,后面是7个或8个数据位,一个可用的奇偶位和一个或几个高位停止位。接收器发现开始位时它就知道数据准备发送,并尝试与发送器时钟频率同步。如果选择了奇偶,UART就在数据位后面加上奇偶位。奇偶位可用来帮助错误检验。

USART是一个全双工通用同步/异步串行收发模块,该接口是一个高度灵活的串行通信设备:

主要有以下特点:

全双工操作(相互独立的接收数据寄存器和发送数据寄存器);

支持同步和异步操作;

同步操作时,可主机时钟同步,也可以从机时钟同步;

独立的高精度波特率发生器,不占用定时/计数器;

支持5、6、7、8和9位数据位;1或2位停止位的串行数据帧结构;

由硬件支持的奇偶校验位和检验;

数据溢出检测;

帧错误检测;

包括错误起始位的检测噪声滤波器和数字低通滤波器;

三个完全独立的中断,TX发送完成、TX发送数据寄存器空、RX接收完成;

支持多机通信模式;

支持倍速异步通信模式。

CAN(Controller Area Network):控制器局域网络。

CAN总线不设定节点的地址,而是通过消息的标识符(Identifier)来识别消息。其总线的通信原理可简单的描述为多路载波侦听+基于消息优先级的冲突检测和非破坏性的仲裁机制。

多路载波侦听:网络上的所有节点以多点接入的方式连接在同一根总线上,且发送数据是广播式的。网络上各个节点在发送数据前都要检测总线上是否有数据传输:若网络上有数据,暂时不用发送数据,等待网络节点空闲时再发送:若无数据,则立即发送已准备好的数据。

冲突检测:节点在发送数据时,要不停的检测发送的数据,确定是否与其它节点数据发送冲突,如果有冲突,则保证优先级高的报文先发送。

非破坏性仲裁机制:通过ID仲裁,ID数值越小,报文优先级越高。

 

发送低级优先级报文的节点退出仲裁后,在下次总线空闲时自动重发报文。

高优先级的报文不能中断低优先级报文的发送。