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

文章目录

      • 0. 前言
      • 1. I2C简介
      • 2.I2C的工作原理
        • 2.1 硬件要求:
        • 2.2 半双工通信:
      • 3. 通信时序
      • 4. 其他特性
        • 4.1 通信速率
        • 4.2 抗干扰措施
        • 4.3 注意事项
      • 5. 在自动驾驶汽车中的应用
        • 5.1 I2C操作模式
        • 5.2 I2C的用途
      • 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的工作原理可以帮助开发者更好地利用这一协议来构建可靠且高效的通信系统。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/56289.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java—类和对象习题讲解

如果您觉得这篇文章对您有帮助的话 欢迎您一键三连,小编尽全力做到更好 欢迎您分享给更多人哦 目录 习题一: 习题二: 习题三:.import static 能够导入一些静态方法 习题四: 习题五: 习题六&#xff1…

【刷题册】2024.10.13 - 2024.10.15

目录 一、2024.10.131.1 BC153 [NOIP2010]数字统计1.2 NC313 两个数组的交集1.2.1 思路一:暴力O(N^2)1.2.2 思路二:hash 1.3 AB5 点击消除 二、2024.10.142.1 BC64⽜⽜的快递2.2 DP4 最⼩花费爬楼梯2.3 数组中两个字符串的最⼩距离 三、2024.10.153.1 BC…

Visual Studio Code基础:使用debugpy调试python程序

相关阅读 VS codehttps://blog.csdn.net/weixin_45791458/category_12658212.html?spm1001.2014.3001.5482 一、安装调试器插件 在VS code中可以很轻松地调试Python程序,首先需要安装Python调试器插件,如图1所示。 图1 安装调试器插件 Python Debugge…

Redis --- 第四讲 --- 常用数据结构 --- Hash、List

一、Hash哈希类型的基本介绍。 哈希表:之前学过的所有数据结构中,最最重要的。 1、日常开发中,出场频率非常高。 2、面试中,非常重要的考点。 Redis自身已经是键值对结构了。Redis自身的键值对就是通过哈希的方式来组织的。把…

16年408计算机网络

第一题: 解析: 首先我们要清楚R1,R2,R3是路由器(网络层),Switch是以太网交换机(数据链路层),Hub是集线器(物理层)。 由此可见路由器实现的最高功能层是3层&am…

如何利用phpstudy创建mysql数据库

phpStudy诞生于2007年,是一款老牌知名的PHP开发集成环境工具,产品历经多次迭代升级,目前有phpStudy经典版、phpStudy V8(2019版)等等,利用phpstudy可以快速搭建一个mysql环境,接下来我们就开始吧…

【计算机网络 - 基础问题】每日 3 题(三十六)

✍个人博客:https://blog.csdn.net/Newin2020?typeblog 📣专栏地址:http://t.csdnimg.cn/fYaBd 📚专栏简介:在这个专栏中,我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞…

Java项目:160 基于springboot物流管理系统(PPT+论文+说明文档)

作者主页:舒克日记 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 物流管理系统有管理员和用户两个角色。 ​ 管理员功能有个人中心,用户管理,车辆信息管理,公告信息管理&#xff…

实现MySQL异地多活场景

作为现代化的互联网企业 ,最怕的是什么 ?是意外!由各种意外导致的数据库问题,磁盘问题、网络问题、人员误操作问题等等,这些问题都可能导致数据不可用或者丢失,造成重大损失。 因此,很少会有企…

运维:winserver服务器添加nginx开机自启动

前言 发现之前做的一版windows开机自启动任务对nginx的启用无效,因此这里给出针对性的配置,以实现winserver服务器添加nginx开机自启动目的。 先前的配置方案:windows部署开机自启动服务_windows 服务中添加自行启动任务-CSDN博客 方案 1、进…

记录一个Ajax发送JSON数据的坑,后端RequestBody接收参数小细节?JSON对象和JSON字符串的区别?

上半部分主要介绍我实际出现的问题,最终下面会有总结。 起因:我想发送post请求的data,但是在浏览器中竟然被搞成了地址栏编码 如图前端发送的ajax请求数据 如图发送的请求体: 很明显是keyvalue这种形式,根本就不是…

基于Java+SpringBoot+Vue的在线文档管理系统的设计与实现

基于JavaSpringBootVue的在线文档管理系统的设计与实现 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末附源码下载链接&…

【算法题解】二分查找的经典问题解析

文章目录 什么是二分?关于二分的一些题目1.分巧克力解题思路编写代码 2.数组中数值和下标相等的元素3.0到n-1中缺失的数字4.数列分段 II解题思路编写代码 总结 什么是二分? 二分是一种思想,用于有序数组中快速查找目标元素。 用动图展示一下…

信息系统的生命周期

信息系统是面向现实世界人类生产、生活中的具体应用,是为了提高人类活动的质量、效率而存在的。信息系统的目的、性能、内部结构和秩序、外部接口、部件组成等由人来规划,它的产生、建设、运行和完善构成一个循环的过程,这个过程遵循一定的规…

【vue】指令补充+样式绑定+计算属性+侦听器

代码获取 知识总结 ⼀、指令补充 1.指令修饰符 1.1 什么是指令修饰符? 所谓指令修饰符就是让指令的 功能更强⼤,书写更便捷 1.2 分类 1.2.1 按键修饰符 keydown.enter:当enter键按下时触发 keyup.enter:当enter键抬起时触…

Jmeter脚本录制:抓取IOS手机请求包

现在移动端的项目越来越多,今天给大家介绍一下,在IOS下Jmeter如何抓包。 1、电脑连上wifi 2、Jmeter中配置“HTTP代理服务器” 1)启动Jmeter; 2)“测试计划”中添加“线程组”; 3)“测试计划”中添加“HTTP代理服务器”&…

强化学习和QLearning及GAN到底是什么关系啊

强化学习(Reinforcement Learning)、Q-Learning 和生成对抗网络(GANs)是机器学习中的三个不同概念,它们虽然有一些交叉,但本质上是针对不同问题的技术方法。下面我来详细解释它们之间的关系和区别&#xff…

Springboot 整合 Java DL4J 实现农产品质量检测系统

🧑 博主简介:历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编程,…

图片美化SDK解决方案,赋能H5与小程序极致体验

无论是社交媒体分享、电商产品展示,还是个人日常生活的记录,一张经过精心美化的图片总能瞬间吸引眼球,传递出更加丰富和动人的信息。如何在不增加应用体积、不牺牲用户体验的前提下,为H5页面和小程序提供媲美原生APP的图片美化功能…

微信小程序-自定义组件

文章目录 微信小程序-自定义组件概述创建和使用数据、方法和属性slot 插槽默认插槽具名插槽 组件样式注意项样式隔离 数据监听组件间通信父传子子传父获取子组件实例 生命周期组件的生命周期组件所在页面的生命周期App、Page与Component生命周期对比冷启动保留当前页面和关闭当…