Jetsonnano B01 笔记5:IIC通信

news2025/1/26 15:27:46

今日继续我的Jetsonnano学习之路,今日学习的是IIC通信,并尝试使用Jetson读取MPU6050陀螺仪数据。文章提供源码。文章主要是搬运的官方PDF说明,这里结合自己实际操作作笔记。

目录

IIC通信:

IIC硬件连线:

 安装IIC库文件:

终端I2C-Tools库的使用:

i2cdetect:

 i2cget:

i2ctransfer:

Python IIC库的使用:

获取权限与环境:

相关库函数:


IIC通信:

 但Jetson与STM32等单片机不同,它只需调用库,读写IIC时序即可

IIC ,也被称为 I2C ,( Inter-Integrated Circuit )是 IICBus 简称,所以中文应该叫集成电路
总线,它是一种串行通信总线。
它是由数据线 SDA 和时钟 SCL 构成的串行总线,可发送和接收数据。在 CPU ( 单片机 )
IIC 模块之间、 IIC 模块与 IIC 模块之间进行双向传送。
IIC 的特点: IIC 是半双工,而不是全双工。
IIC是真正的 多主机总线,(对比SPI在每次通信前都需要把主机定死,而IIC可以在通
讯过程中,改变主机),如果两个或更多的主机同时请求总线,可以通过冲突检测和仲裁防
止总线数据被破坏。
起始和终止信号都是由主机发出的,连接到I2C总线上的器件,若具有I2C总线的硬件接
口,则很容易检测到起始和终止信号。
在起始信号后必须发送一个7位从机地址+1位方向位,用“0”表示主机发送数据,“1”表
示主机接收数据。
每当主机向从机发送完一个字节的数据,主机总是需要等待从机给出一个应答信号,以
确认从机是否成功接收到了数据。
起始信号是必需的,结束信号和应答信号,都可以不要。
注:实际使用中,一般是单片机作为主机,其它器件作为从机,单片机先向器件发送信
息表示要读取数据,之后转变传输方向,器件发送数据到单片机。

IIC硬件连线:

IIC通信会使用到Jetson以下引脚:

 安装IIC库文件:

启动 JetsonNano 主板,然后打开命令行终端,依次输入下方指令来安装 I2C 库。
sudo apt-get update

sudo apt-get install -y i2c-tools

这里我是已经安装了库所以提示这个信息:

 指令输入后,会提示输入密码,输入即可~~

安装完成后,可输入下方指令来检查是否安装成功。
apt-cache policy i2c-tools

 

终端I2C-Tools库的使用:

i2cdetect:

i2cdetect 用于检测系统上的 I2C 总线情况。依次输入下方指令,可列出所有安装的总线。
i2cdetect -F 2

 

i2cdetect -l

 依次输入下方指令,可扫描挂载在总线上的设备,例如1号总线。

i2cdetect -y -r -a 1

这是没有连接IIc设备的情况:

当我们连接了MPU6050后,就会发现某处有从器件地址为0x68:

 

 i2cget:

 i2ccget用于查看设备单个寄存器值,可用于单字节寄存器。

 例如读取地址为0x68设备里0x6b寄存器的值,输入下方指令:

i2cget -y 1 0x68 0x6b

i2ctransfer:

i2ctransfer 用于读写设备寄存器值,可用于双字节寄存器。例如向 1 号总线上设备地址
0x68 ,寄存器地址 0x016b 开始, 16 个字节的数据,输入下列指令:
i2ctransfer -f -y 1 w2@0x68 0x01 0x6b r16
例如向 1 号总线上设备地址 0x68 ,寄存器地址 0x016b 开始,写入长度为 3 个字节的数据,
写入 0x25 ,然后读出校验。
i2ctransfer -f -y 1 w3@0x68 0x01 0x6b 0x25

Python IIC库的使用:

获取权限与环境:

获取用户对2C总线操作权限:(yourname是表示你的用户名)

Ssudo usermod -aG i2c $USER
sudo usermod -aG i2c yourname

…重启系统确保更改2C等有效一

安装Python3的库:

sudo apt-get install python3-smbus

相关库函数:

网址:smbus2 · PyPI

Currently supported features are:

  • Get i2c capabilities (I2C_FUNCS)

  • read_byte_data

  • write_byte_data

  • read_word_data

  • write_word_data

  • read_i2c_block_data

  • write_i2c_block_data

It is developed on Python 2.7, but should work in Python 3.X too.

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

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

相关文章

【技能树笔记】网络篇——练习题解析(二)

目录 前言 一. 数据链路层的作用 1.1 数据链路层作用 1.2 数据链路层封装 1.3 数据链路层功能 1.4 数据帧格式 二. MAC地址及分类 2.1 MAC地址 2.2 MAC地址分类 三. 交换机的作用 3.1 交换机的作用 3.2 交换机作用 四.交换机的工作原理 4.1 交换机的工作原理 4.…

spring---第七篇

系列文章目录 文章目录 系列文章目录一、什么是bean的自动装配,有哪些方式?一、什么是bean的自动装配,有哪些方式? 开启自动装配,只需要在xml配置文件中定义“autowire”属性。 <bean id="cutomer" class="com.xxx.xxx.Customer" autowire="…

【侯捷C++面向对象 】(上)

1.C 编程简介 & 目标 培养代码正规编范class 分为 带pointer 和 不带pointer的 学习C &#xff1a; 语言 标准库 2.C vs C C语言 &#xff1a; &#xff08;type&#xff09;数据 函数 —create—》 数据sC &#xff1a; (class ) 数据 成员 —create—》 对象不带指…

AI伦理:科技发展中的人性之声

文章目录 AI伦理的关键问题1. 隐私问题2. 公平性问题3. 自主性问题4. 伦理教育问题 隐私问题的拓展分析数据收集和滥用隐私泄露和数据安全 公平性问题的拓展分析历史偏见和算法模型可解释性 自主性问题的拓展分析自主AI决策伦理框架 伦理教育的拓展分析伦理培训 结论 &#x1f…

【LeetCode-中等题】34. 在排序数组中查找元素的第一个和最后一个位置

文章目录 题目方法一&#xff1a;二分查找&#xff08;先找到mid&#xff0c;在根据mid确定左右区间&#xff09;方法二&#xff1a;分两次二分查找&#xff0c;一次用于找左区间&#xff0c;一次用于找右区间 题目 方法一&#xff1a;二分查找&#xff08;先找到mid&#xff0…

第六讲:如何构建类的事件(上)

【分享成果&#xff0c;随喜正能量】世界上凡是人聚集的地方&#xff0c;讨论的话题无外乎三个&#xff1a;拐弯抹角的炫耀自己、添油加醋的贬低别人、相互窥探的搬弄是非。人性的丑陋就是&#xff1a;在无权无势、善良的人身上挑毛病&#xff1b;在有权有势的人身上找优点。。…

【硬件设计】硬件学习笔记二--电源电路设计

硬件学习笔记二--电源电路设计 一、LDO设计1.1 LDO原理1.2 LDO参数1.3 应用 二、DC-DC设计2.1 DC-DC原理2.2 DC-DC参数介绍2.4 DC-DC设计要点2.5 DC-DC设计注意事项 写在前面&#xff1a;本篇笔记来自王工的硬件工程师培训课程&#xff0c;想要学硬件的同学可以去腾讯课堂直接搜…

【LeetCode-中等题】69. x 的平方根

文章目录 题目方法一&#xff1a;二分查找 题目 方法一&#xff1a;二分查找 假设求8的平方根&#xff0c;那就设置left 0 &#xff0c;right 8&#xff1b; 每次取最中间的元素的平方和8对比&#xff0c;如果大于8&#xff0c;则right mid-1&#xff0c;如果小于8 left mi…

第二节 极限 (一)

一、极限的定义(了解) 二、求极限的方法 (重点 大题8分 选择4分 填空4分) (1) 直接代入 (只要有意义) (2) 洛必达法则&#xff08;80%解题法&#xff09; (3) 无穷小和无穷大的性质 (4) 三种特例 (5) 两个重要极限 (6) 等价无穷小的替换 三、真题 方法一&#xff…

蓝桥杯官网填空题(振兴中华)

题目描述 本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。 小明参加了学校的趣味运动会&#xff0c;其中的一个项目是&#xff1a;跳格子。 地上画着一些格子&#xff0c;每个格子里写一个字&#xff0c;如下所示&#xff1…

字符编码(idea)

File----------settings-------------Editor------------File Encodings

常见IO模型(非常详细)

背景知识 常⽤5中⽹络IO模型 阻塞IO&#xff08;Blocking IO&#xff09;⾮阻塞IO&#xff08;Non-Blocking IO&#xff09;多路复⽤IO&#xff08;IO Multiplexing&#xff09;信号驱动IO&#xff08;Signal Driven IO&#xff09;异步IO&#xff08;Asynchronous IO&#x…

IPD-PDT-POP角色的名称、定位和职责说明书

在IPD推进中&#xff0c;有一个不是很关键但却离不开的角色叫做POP&#xff0c;POP这个角色通常是设置在PDT团队中。 那么IPD的PDT团队中的POP这个角色到底是什么意思呢&#xff1f;POP如何开展工作&#xff0c;以及POP的主要岗位职责有哪些呢&#xff1f;华研荟今天给大家分享…

一文解码语言模型:语言模型的原理、实战与评估

目录 一、语言模型概述什么是语言模型&#xff1f;核心概念和数学表示挑战&#xff1a;高维度和稀疏性链式法则与条件概率举例 应用场景小结 二、n元语言模型&#xff08;n-gram Language Models&#xff09;基本概念数学表示 代码示例&#xff1a;计算Bigram概率输入与输出 优…

极简极速-Bitset (bitmap)实现考勤打卡场景

文章目录 1. redis命令行操作bitmap2. RedisTemplate操作bitmap3. Java中的Bitset 1. redis命令行操作bitmap 2. RedisTemplate操作bitmap bitmap的常见业务场景主要有日活统计&#xff08;类似的月考勤&#xff09;、点赞、BloomFilter等&#xff0c;以用户mj考勤统计为例&am…

掌握AI助手的魔法工具:解密`Prompt`(提示)在AIGC时代的应用(下篇)

前言&#xff1a;在前面的两篇文章中&#xff0c;我们深入探讨了AI助手中的魔法工具——Prompt&#xff08;提示&#xff09;的基本概念以及在AIGC&#xff08;Artificial Intelligence-Generated Content&#xff0c;人工智能生成内容&#xff09;时代的应用场景。在本篇中&am…

【前端小tip】深拷贝不能处理函数的解决方法,文末包含所有深拷贝常见问题的解决方法

在开发过程中&#xff0c;我对对象进行深拷贝的时候常常使用序列化和反序列化&#xff0c;也就是 const newObj JSON.parse(JSON.stringify(obj))这个方法很好用&#xff0c;但是在最近我发现了一个弊端&#xff0c;就是它只能处理只含有基础类型属性和对象属性的对象&#x…

Python专辑:大话数字类型

I will honour myself by showing up powerfully in my life today。我会为在今日努力生活的自我而感到自豪。 前面我们讲解过关于用Python写温度转换器&#xff0c;画“Python”以及天天学习的代码讲解。不知大家是否还记得&#xff0c;忘记的可以点击上面的专辑去里面复习一下…

反编译小程序详细教程,处理各种异常报错

文章目录 一、准备工作 &#xff08;一&#xff09;安装Nodejs &#xff08;二&#xff09;解密和逆向工具 二、小程序缓存文件解密 &#xff08;一&#xff09;定位小程序缓存路径 &#xff08;二&#xff09;源码解密 &#xff08;三&#xff09;源码反编译 三、小结 四、异常…

PTA作业笔记——简单的计算

PTA作业笔记——简单的计算 7-10 整数算术运算7-11 猫是液体7-11 猫是液体7-13 计算4个整数的平均值7-14 公元前后日期格式化7-15 A除以B7-18 出租车计价 7-10 整数算术运算 本题要求编写程序&#xff0c;计算并输出2个正整数的和、差、积、商与余数。题目保证输入和输出全部在…