【自动驾驶汽车通讯协议】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的工作原理可以帮助开发者更好地利用这一协议来构建可靠且高效的通信系统。

相关推荐
manhuami200742 分钟前
51单片机ALE引脚的作用 - 锁存地址和输出时钟信号并不冲突
单片机·嵌入式硬件·51单片机
搬砖的小码农_Sky1 小时前
单片机如何入门?
单片机·嵌入式硬件
Q23553688721 小时前
60V恒流IC SL8443B内置功率MOS 支持2.5A电流 降压LED恒流驱动芯片
单片机·嵌入式硬件
暮雪倾风2 小时前
【STM32-HAL库】TEMT6000光照强度传感器(STM32F407ZGT6)(附带工程下载链接)
stm32·单片机·嵌入式硬件
三菱-Liu2 小时前
三菱FX5U CPU实时监视功能GX LogViewer Version
驱动开发·嵌入式硬件·硬件工程·制造
板子小哥3 小时前
Lua语法基础全面剖析(中篇)
开发语言·嵌入式硬件·junit·单元测试·硬件工程·lua·1024程序员节
Industio_触觉智能4 小时前
瑞芯微RK3566/RK3568 Android11下该如何默认屏蔽导航栏/状态栏?看这篇文章就懂了
嵌入式硬件·物联网·rk3568·rk3566·鸿蒙开发板
陌夏微秋4 小时前
00 硬件、嵌入式硬件知识-目录篇
linux·stm32·单片机·嵌入式硬件·mcu·ubuntu
Whappy0015 小时前
4. STM32之TIM实验--输出比较(PWM输出,电机,四轴飞行器,智能车,机器人)--(实验2:PWM驱动舵机)
stm32·嵌入式硬件·机器人
RIGOL小普5 小时前
如何利用双踪示波器测量两个电压信号的相位差?如何判别波形的超前与滞后?
单片机·嵌入式硬件·fpga开发·硬件工程·射频工程