【自动驾驶汽车通讯协议】I2C(IIC)总线通讯技术详解

文章目录

      • [0. 前言](#0. 前言)
      • [1. I2C简介](#1. I2C简介)
      • 2.I2C的工作原理
        • [2.1 硬件要求:](#2.1 硬件要求:)
        • [2.2 半双工通信:](#2.2 半双工通信:)
      • [3. 通信时序](#3. 通信时序)
      • [4. 其他特性](#4. 其他特性)
        • [4.1 通信速率](#4.1 通信速率)
        • [4.2 抗干扰措施](#4.2 抗干扰措施)
        • [4.3 注意事项](#4.3 注意事项)
      • [5. 在自动驾驶汽车中的应用](#5. 在自动驾驶汽车中的应用)
        • [5.1 I2C操作模式](#5.1 I2C操作模式)
        • [5.2 I2C的用途](#5.2 I2C的用途)
      • [6. 总结](#6. 总结)

0. 前言

按照国际惯例,首先声明:本文只是我自己学习的理解,虽然参考了他人的宝贵见解及成果,但是内容可能存在不准确的地方。如果发现文中错误,希望批评指正,共同进步。

I2C(Inter-Integrated Circuit Communication,也写作IIC,或I 2 ^2 2C,读成"I方C")通讯是一种广泛应用的串行通信协议,通过总线连接微控制器与多个外围设备。由于其简单的设计和较低的成本,I2C成为了许多嵌入式系统中首选的通信方式之一。本文将详细介绍I2C通信的基本原理、工作方式、时序要求以及实际应用中的注意事项。

1. I2C简介

I2C是由NXP(前身为Philips)开发的一种两线式串行总线标准 ,用于连接单片机及其多个外围设备。I2C的主要特点是只需要两条信号线:SCL(时钟线)和SDA(数据线),并且支持多主控模式 ,即多个设备可以轮流担任主控角色。

2.I2C的工作原理

2.1 硬件要求:
  • SCL:用于同步数据传输的时钟信号。
  • SDA:用于数据的双向传输。
  • 上拉电阻:连接到电源,保证线路处于高电平时的数据稳定性。
  • 共地:所有设备必须共享同一接地参考点。
2.2 半双工通信:

I2C是一种半双工通信方式,意味着在同一时刻,数据线只能用于发送或接收数据,不能同时进行。

  • 主从模式:
    主设备:控制整个通信过程,包括产生时钟信号和发起通信。
    从设备:响应主设备的请求,接收或发送数据。
  • 寻址机制:
    每个从设备都有一个唯一的7位地址。
    主设备通过地址选择特定的从设备进行通信。

3. 通信时序

I2C通信的时序主要包括以下几个关键阶段:

  1. 开始信号:SCL保持高电平,SDA从高电平变为低电平。

  2. 地址传输:通信开始时,主设备发送从设备的地址,以选择通信目标。

  3. 数据传输:数据字节传输:每个字节传输后需要跟随一个应答位。

  4. 应答位:从设备接收到一个字节后,返回一个应答位(ACK,Acknowledgment)表示接收成功,或非应答位(NACK,Not Acknowledgment)表示接收失败。

  5. 停止信号:SCL保持高电平,SDA从低电平变为高电平。

4. 其他特性

4.1 通信速率

标准模式:最高可达100 kbps。

快速模式:最高可达400 kbps。

高速模式:某些设备支持高达1 Mbps甚至更高。

4.2 抗干扰措施

上拉电阻的选择:根据通信距离和所需速度选择合适的上拉电阻值。

屏蔽线缆:在长距离或电磁干扰严重的环境中使用屏蔽线缆。

4.3 注意事项

上拉电阻的稳定性:确保电源稳定,以减少干扰。

最大设备数量:理论上最多可连接128个设备,但实际应用中受限于总线负载能力。

总线冲突:多主模式下需注意避免总线冲突。

5. 在自动驾驶汽车中的应用

在 AGX Orin SOM(系统级模块)配备了8个通用I2C控制器,可以扩展系统以支持基于I2C的设备。I2C6端口还可以用作DP AUX(DisplayPort辅助通道)或传统的I2C功能。

5.1 I2C操作模式

I2C控制器支持以下几种操作模式:

  • 标准模式 (Sm, 最高速率可达100 Kbit/s)
  • 快速模式 (Fm, 最高速率可达372 Kbit/s)
  • 快速模式+ (Fm+, 最高速率可达985 Kbit/s)

这些模式允许与不同速度等级的设备进行通信。

5.2 I2C的用途

在AGX Orin中,I2C可以用于多种用途,包括但不限于:

  • 传感器连接:用于连接温度传感器、加速度计等。
  • 配置外设:配置GPIO(通用输入输出)扩展器或电源管理芯片。
  • 读取EEPROM:从非易失性存储器中读取设备配置信息。
  • 监控电源状态:监控电压水平、电流消耗等。
  • 连接显示接口:某些显示器或触摸屏控制器可能使用I2C进行配置。

6. 总结

I2C通信以其简洁的设计和高效的数据传输能力,在嵌入式系统中占据重要地位。理解和掌握I2C的工作原理可以帮助开发者更好地利用这一协议来构建可靠且高效的通信系统。

相关推荐
沐欣工作室_lvyiyi4 小时前
基于STM32的宠物自动喂食器(论文+源码)
stm32·嵌入式硬件·毕业设计·宠物
学生哥-_-11 小时前
STM32点亮WS2812 RGB灯板展示像素图片(一种较方便的取色值数据的方法)
stm32·单片机·嵌入式硬件
西欧伯爵11 小时前
模拟电路入门四
单片机·嵌入式硬件·集成电路
偶像你挑的噻12 小时前
12-Linux驱动开发- SPI子系统
linux·驱动开发·stm32·嵌入式硬件
逆小舟12 小时前
【STM32】手把手教你完成“天气预报项目”
stm32·单片机·嵌入式硬件
绿蕉15 小时前
高精地图:自动驾驶的“数字神经网络“
自动驾驶·高精地图
cjy_Somnr16 小时前
keil5报错显示stm32的SWDIO未连接不能烧录
stm32·单片机·嵌入式硬件
luoganttcc16 小时前
RoboTron-Drive:自动驾驶领域的全能多模态大模型
人工智能·机器学习·自动驾驶
Lay_鑫辰17 小时前
西门子诊断-状态和错误位(“轴”工艺对象 V1...3)
服务器·网络·单片机·嵌入式硬件·自动化
无垠的广袤19 小时前
【工业树莓派 CM0 NANO 单板计算机】本地部署 EMQX
linux·python·嵌入式硬件·物联网·树莓派·emqx·工业物联网