对于新手来说,UART、SPI、I2C等通信总线是学习单片机必备的技能,也是我们实际项目常用的一些总线。
UART 总线UART(Universal Asynchronous Receiver-Transmitter)是一种用于串行通信的硬件模块,它在计算机和外部设备之间传输数据。让我们深入了解UART的工作原理:起始位 (Start Bit):起始信号:通信的每个数据帧开始时,UART发送一个逻辑低电平的起始位(Start Bit)来指示数据的传输开始。同步校准:接收方根据起始位的变化来进行同步校准,确保正确解析数据的开始。数据位 (Data Bits):传输数据:在起始位之后,UART逐位传输数据位。每个数据位代表数据中的一个二进制位,可以是5至8位,具体取决于通信协议。传输顺序:通常,数据位是按照最低有效位(LSB)优先的顺序进行传输。校验位 (Parity Bit):校验数据:校验位是可选的。如果使用校验位,UART会根据数据位的值计算出一个奇偶校验位,使得数据帧中1的位数为奇数(奇校验)或偶数(偶校验)。数据完整性:接收方使用接收到的数据位和校验位来检查数据是否传输正确。如果校验失败,可能意味着数据在传输过程中发生了错误。停止位 (Stop Bit):结束信号:在数据位和可能的校验位之后,UART发送一个或多个停止位来指示数据的结束。停止位通常为逻辑高电平。分离数据:停止位提供了数据帧之间的分隔,让接收方知道何时结束解析当前数据并准备接收下一个数据帧。空闲位 (Idle State):空闲状态:在数据帧之间,UART线路保持在逻辑高电平状态,称为空闲位。这个空闲时间用于下一个数据帧的准备,同时也有助于同步。UART通信通过逐位传输起始位、数据位、校验位、停止位和空闲位,实现了串行数据的可靠传输。这种通信方式适用于许多不同领域的应用,如计算机与外部设备的连接,嵌入式系统通信以及传感器数据传输等。每个位的状态和顺序都具有特定的意义,确保了数据的完整性和正确性。SPI总线SPI(Serial Peripheral Interface)协议解释:SPI是一种同步的串行通信协议,用于在主机和多个外设(从机)之间进行数据传输。SPI通信使用一组信号线进行数据和时钟同步传输。SPI协议包括以下几个核心信号:CS (Chip Select):片选信号,由主机控制,用于选择特定的从机设备以进行通信。SCK (Serial Clock):时钟信号,由主机产生,用于同步数据传输。MOSI (Master Output Slave Input):主机向从机传输数据的信号线。MISO (Master Input Slave Output):从机向主机传输数据的信号线。
(CPOL) Clock Polarity:时钟极性被设置为0,表示时钟信号在空闲期间为低电平状态。(CPOL) Clock Polarity:时钟极性被设置为1,表示时钟信号在空闲期间为高电平状态。(CPHA) Clock Phase :时钟相位被设置为0,表示在时钟信号的第一个跳变沿进行数据采样(捕获)。(CPHA) Clock Phase :时钟相位被设置为1,表示在时钟信号的第二个跳变沿进行数据采样(捕获)。1. 模式0(CPOL = 0,CPHA = 0):模式0的特点是时钟信号从低电平开始,交替在低电平和高电平之间切换。数据在时钟的上升沿进行捕获,并在下降沿进行传输。2. 模式1(CPOL = 0,CPHA = 1):模式1保持时钟在低电平状态下的空闲期间。数据在时钟的下降沿进行捕获,并在上升沿进行传输。3. 模式2(CPOL = 1,CPHA = 0):模式2的特点是时钟信号从高电平开始,交替在高电平和低电平之间切换。数据在时钟的下降沿进行捕获,并在上升沿进行传输。4. 模式3(CPOL = 1,CPHA = 1):模式3保持时钟在高电平状态下的空闲期间。数据在时钟的上升沿进行捕获,并在下降沿进行传输。I2C总线I²C(Inter-Integrated
Circuit,又称为IIC或I2C)总线是一种常用于连接集成电路芯片(IC)之间的串行通信协议。它被广泛应用于数字设备之间短距离的通信,如连接传感器、存储器、显示屏、扩展模块等。I²C总线允许多个设备在同一总线上通信,通过共享两根信号线(串行数据线SDA和串行时钟线SCL)来传输数据。以下是I²C总线的一些关键特点:双线制:I²C总线由两根信号线组成:SDA(Serial Data Line)和SCL(Serial Clock Line)。SDA用于传输数据,SCL用于传输时钟信号。主从结构:I²C总线有两种设备类型:主设备(Master)和从设备(Slave)。主设备负责发起通信并控制总线上的时钟信号,而从设备则被主设备控制以响应通信请求。起始和停止条件:通信的开始由主设备发送的起始条件标志,而通信的结束由主设备发送的停止条件标志。这些条件标志帮助控制通信的开始和结束。起始:时钟线SCL为高时,数据线SDA由高到低停止:时钟线SCL为高时,数据线SDA由低到高地址传输:每个I²C设备都有一个唯一的7位或10位地址,用于在总线上标识自己。通信始终以发送设备地址开始,指示通信目标设备。数据传输:I²C使用两个信号线在时钟信号的辅助下传输数据。数据通过SDA线传输,每个数据位都在SCL线的时钟脉冲上同步传输。I2C总线进行数据传送时,在SCL的每个时钟脉冲期间传输一个数据位,时钟信号SCL为高电平期间,数据线SDA上的数据必须保持稳定
,只有在时钟线SCL上的信号为低电平期间,数据线SDA上的高电平或低电平状态才允许变化,因为当SCL是高电平时,数据线SDA的变化被规定为**
控制命令**(START或STOP,也就是前面的起始信号和停止信号)。字节和帧:通信以字节为单位进行,每个字节都由8位数据组成。在传输数据时,一个字节的数据会在SCL线上的8个时钟脉冲内传输。应答机制:每个数据字节的传输后,接收设备会返回一个应答(ACK或NACK)信号,以指示是否成功接收了数据。这表示IIC的应答机制SCL,主机产生的时钟脉冲SDA,主机发送的8位数据,然后从机在第9个时钟信号进行拉低回应,表示收到了主机发来的数据,拉高则表示不应答IIC应答是一种相互关系,单片机发数据给IIC器件,IIC器件要进行应答,表示收到了数据,同样,单片机接收IIC器件的数据后,也要给IIC器件一个应答。既然发送完都需要对方回应,那什么时候使用不应答呢?就是在读取到本次数据后,如果不需要继续读取,则发送非应答,对方以为你没收到这次数据,则就不会继续发送了。时钟速率:I²C总线支持不同的时钟速率,通常为100 kbps、400 kbps和1 Mbps等。时钟速率取决于主设备和从设备的能力。多主设备:I²C总线支持多主设备操作,允许多个主设备在总线上交替进行通信。I²C总线提供了一种简单、有效的方式来连接多个数字设备,并支持可靠的数据传输。它在嵌入式系统、电子设备和通信领域广泛应用,为设备之间的通信提供了一种灵活和标准化的解决方案。I2S总线I2S(Inter-IC Sound)总线是一种用于在集成电路之间传输音频数据的串行通信协议。它通常用于数字音频应用,如音频编解码器、数字信号处理器、音频接口等。I2S总线由三条线组成:串行数据线(Serial Data or SD): 用于传输音频数据的串行位流。这条线上的数据通常是左声道和右声道的交替采样数据。串行时钟线(Serial Clock or SCK): 这是一个同步时钟信号,用于同步传输数据的节奏。每个数据位都在时钟的边沿进行传输。帧同步线(Word Select or WS): 也称为帧时钟(Frame Clock or FCLK),它指示一个音频帧的开始。在左声道和右声道之间切换时,会发出这个信号。I2S总线的工作方式可以通过以下步骤进行描述:帧同步(Frame Sync): 帧同步信号指示一个音频帧的开始。在传输开始时,帧同步线会发出一个脉冲。数据传输: 在每个帧内,左声道和右声道的音频数据会在串行数据线上交替传输。传输发生在串行时钟信号的边沿。时钟同步: 串行时钟信号用于同步数据传输。接收器需要根据时钟信号的边沿来正确解析音频数据。I2S总线广泛用于数字音频系统中,例如将麦克风或模拟音频信号转换为数字格式,然后通过I2S接口将其传输到音频处理器或编解码器。它在许多消费电子产品中都有应用,包括音频播放器、智能手机、电视等。I2S总线是一种方便的音频数据传输协议,可以有效地在集成电路之间传输音频信号。
来源地址:https://www.liuwei.vin/808.html声明:本文素材来源网络,版权归原作者所有。如涉及作品版权问题,请与我联系删除。
|