嵌入式系统中使用的不同协议(例如UART,SPI,I2C,蓝牙,USB等)之间有什么区别?
0 663
0
该提问暂无详细描述
收藏
2021-01-18 14:45 更新 蝈蝈 •  224
共 1 个回答
高赞 时间
0

UART:代表通用异步接收/发送。简单来说,UART依赖于接收和发送控制器之间的波特率协议。接收MCU会期望以特定的波特率(例如9600)将比特接收到其RX端口,而发送MCU则会以相同的波特率9600传输比特。双方之间没有主时钟,只有协议波特率。因此,接收MCU将知道比特流入其RX端口的速率,并知道何时具有完整符号。涉及使用特定芯片组的特定项目,请阅读芯片的datasheet。

SPI:代表串行外围设备接口的主机和一个从机,或多个从机。SPI接口涉及3条或更多条线,包括时钟,串行数据输出,串行数据输入和芯片选择(如果需要)。主机MCU基本上为从机设置时钟速率,使用片选端口请求特定的主机监听,并通过其串行数据输出端口发送命令,并期望通过串行数据输入接收从机的输出。港口。有关SPI的更多信息,请参见:串行外设接口介绍,以及以下内容:I²C和SPI协议介绍同样,当涉及到使用特定芯片组的特定项目时,请阅读芯片的datasheet。

IIC:或者I ^ 2 C代表集成电路,其中电路中的每个芯片都有一个定义的地址,可以从中调用它们。涉及两条线,SDA和CLK。SDA是双向数据流,这意味着可以根据设置的条件接受和发送数据。主机设置通信时钟,主机通过SDA发送启动条件,指示所有从机监听其地址。然后,主机发送需要进行接口的芯片地址(通常以MSB为读或写命令)并等待确认。收到确认后,将发送读取或写入命令,然后传输结束。关于IIC的更多信息:I2C信息– I2C总线,接口和协议

蓝牙:只是一种通信方式(而不是通过电线通过蓝牙发送器或接收器进行无线通信)。蓝牙通常涉及UART或EUSART。我发现了使用蓝牙将数据传输到PC终端的项目示例:[蓝牙模块与微控制器的接口](Arduino 蓝牙基本教程 - 资源下载 - 理工酷 (ligongku.com))

USB:USB比其他USB稍微复杂一些。USB牵涉到主机,主机必须“同意”组件之间的任何数据沟通。数据传输如下,首先是保存数据或命令目的的标题;读取,写入或配置目标。接下来,数据流将用于写入目标,由主机读取或配置目标。传输的最后一部分可以是写操作过程中来自目标的确认,说明它们是否已接收到数据,也可以是主机发出的确认,表明它们已读取了从目标发送来的数据。USB比这要复杂得多。

如果您想完成任何事情,请阅读datasheet。

收藏
2021-01-18 14:46 更新 我爱喝牛奶G •  2074