【面试八股文之通信协议】

本文详细介绍了IIC总线中拉电阻的作用,开漏输出的原理,MQTT通信的步骤,以及串口数据帧格式。对比了UART、SPI和I2C这三种串行通信协议的概念和适用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.IIC为什么要加上拉电阻,为什么使用开漏输出?

        (1)上拉电阻:当IIC总线在空闲状态,SDA和SCL需要处于高电平状态,开漏输出无法输出高电平,使用上拉电阻可以完成高低电平之间的转换。

        (2)开漏输出:

        假如使用推挽输出可能导致器件的烧毁,因为如果总线上同时有器件输出高低电平时会短路。

        另外是要实现线与功能,在多个主设备抢占总线时仲裁总线。

2.MQTT的通信过程

(1)创建客户端  

(2)指定IP地址和端口号  

(3)进行连接  

(4)发布主题或者订阅主题  

(5)数据传输

(6)断开连接  

3. 串口数据帧格式

        起始位,数据位,校验位,停止位。

4. UART,SPI,IIC的区别和概念

(1)UART概念:UART是一种全双工异步串行通信协议,用于在两个设备之间实现简单的点对点通信。它使用两根传输线(TX和RX)进行数据传输,其中TX(发送线)负责发送数据,RX(接收线)负责接收数据。

(2)SPI概念:SPI是一种同步串行通信协议,用于在一个主设备(主控器)和一个或多个从设备之间实现全双工的高速数据传输。

(3)IIC概念:I2C是一种串行双线制通信协议,用于在多个设备之间进行数据传输。它使用两根传输线(SDA和SCL)进行数据传输,其中SDA(串行数据线)负责发送和接收数据,SCL(串行时钟线)用于数据同步。

区别:

        UART是异步通信协议,用于点对点通信;SPI是同步通信协议,适用于高速数据传输;I2C是双线制通信协议,适用于连接多个低速外设的场景,传输数据可靠。

### 关于嵌入式通信协议面试的知识点总结 #### I²C (Inter-Integrated Circuit) I²C是一种用于连接微控制器及其外围设备的串行总线系统,支持多主机多从机模式。该协议使用两根双向开放集电极线路:一根数据线(SDA),另一根时钟线(SCL)[^1]。 #### SPI (Serial Peripheral Interface) SPI是一个同步串行接口标准,允许全双工的数据传输。它通常由一个主控器多个从属器件组成,通过四条信号线实现通信:MOSI(Master Out Slave In)、MISO(Master In Slave Out)、SCK(Serial Clock)以及SS/CS(Slave Select)。相较于I²C而言,SPI具有更高的速度,在十几到几十兆赫兹范围内工作[^3]。 #### USART (Universal Synchronous Asynchronous Receiver Transmitter) USART可以配置成异步UART模式或是同步操作方式来发送接收字符流。其特点在于能够灵活调整波特率,并且兼容多种帧格式以适应不同应用场景下的需求。 #### CAN (Controller Area Network) CAN被设计用来支持汽车内部网络及其他分布式实时控制系统之间的可靠消息传递。此总线采用差分信令技术提高抗干扰能力,具备自动重传错误帧的功能,确保了高可靠性鲁棒性。 #### DMA (Direct Memory Access) DMA提供了一种无需CPU干预即可完成外设间大量数据快速转移的方法。这不仅减轻了处理器负担,还提高了系统的整体效率。 ```c // 使用DMA进行数据传输的例子 void StartDMATransfer(uint8_t* src, uint8_t* dst, size_t length) { DMACHANNEL->SRCADDR = (uint32_t)src; DMACHANNEL->DSTADDR = (uint32_t)dst; DMACHANNEL->CONTROL = length | DMA_CONTROL_DIR_MEMTOMEM; // 设置控制寄存器 DMACHANNEL->CONFIG |= DMA_CONFIG_ENBL; // 启动DMA通道 } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

放牛的守护神_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值