Jetsonnano B01 笔记5:IIC通信

今日继续我的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.mzph.cn/news/74933.shtml

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

相关文章

智能小车之蓝牙控制并测速小车、wife控制小车、4g控制小车、语音控制小车

目录 1. 蓝牙控制小车 2. 蓝牙控制并测速小车 3. wifi控制测速小车 4. 4g控制小车 5. 语音控制小车 1. 蓝牙控制小车 使用蓝牙模块,串口透传蓝牙模块,又叫做蓝牙串口模块 串口透传技术: 透传即透明传送,是指在数据的传输过…

Codeforces Round 855 (Div 3)(A - F)

Codeforces Round 855 (Div. 3)(A - F) Codeforces Round 855 (Div. 3) A. Is It a Cat?(思维) 思路:先把所有字母变成小写方便判断 , 然后把每一部分取一个字母出来 , 判断和‘meow’是否相同即可。 复杂度 O ( n…

QStandardItemModel,setData()方法,最后一个参数角色值用法

QStandardItemModel中,setData(index, xxx, Qt::EditRole); 后面的角色值填写Qt::EditRole就可以往模型中设置值,而填写Qt::UserRole就不可以往模型中设置值,解决方案: Qt::EditRole和Qt::UserRole是Qt模型/视图框架中用于描述数据…

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

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

vue3切换路由模式——Hash 、histoary

1、history模式 使用createWebHistory import { createRouter, createWebHistory } from vue-router import Home from ../views/Home.vue const routes [{path: /,name: Home,component: Home},{path: /about,name: About,component: () > import(../views/About.vue)} ]…

10.Xaml ListBox控件

1.运行界面 2.运行源码 a.Xaml 源码 <Grid Name="Grid1"><!--IsSelected="True" 表示选中--><ListBox x:Name="listBo

生成树协议 STP(spanning-tree protocol)

一、STP作用 1、消除环路&#xff1a;通过阻断冗余链路来消除网络中可能存在的环路。 2、链路备份&#xff1a;当活动路径发生故障时&#xff0c;激活备份链路&#xff0c;及时恢复网络连通性。 二、STP选举机制 1、目的&#xff1a;找到阻塞的端口 2、STP交换机的角色&am…

常用ClickHouse问题诊断查询

常用ClickHouse问题诊断查询 Clickhouse是一个性能强大的OLAP数据库&#xff0c;在实际使用中会遇到各种各样的问题&#xff0c;同时也有很多可以调优的地方。本文阐述如何对ClickHouse做问题诊断和性能分析。 相关的系统表 序号表名含义说明1system.asynchronous_insert_lo…

Leetcode 2851. String Transformation

Leetcode 2851. String Transformation 0. 吐槽1. 算法思路 1. 整体思路2. 字符串匹配优化 2. 代码实现 题目链接&#xff1a;2851. String Transformation 0. 吐槽 这道题多少有点坑爹&#xff0c;题目本身挺有意思的&#xff0c;是一道数组题目&#xff0c;其实用数学方法…

Java开发面试--nacos专区

1、 Nacos是什么&#xff1f; 请简要介绍Nacos是什么以及它的主要功能和用途。 答&#xff1a; 简介&#xff1a; Nacos是一个开源的、高性能、动态服务发现、配置和服务管理平台&#xff0c;通常用于微服务架构中。Nacos的名称来源于"Naming"&#xff08;服务发现…

【2023年11月第四版教材】第12章《质量管理》(第一部分)

第12章《质量管理》&#xff08;第一部分&#xff09; 1 章节说明2 管理基础3 管理过程3.1 管理ITTO汇总★★★ 1 章节说明 【本章分值预测】大部分内容不变&#xff0c;细节有一些变化&#xff0c;预计选择题考3-4分&#xff0c;案例和论文都有可能考&#xff1b;是需要重点学…

【Vue2.0源码学习】生命周期篇-初始化阶段(initState)

文章目录 1. 前言2. initState函数分析3. 初始化props3.1 规范化数据3.2 initProps函数分析3.3 validateProp函数分析3.4 getPropDefaultValue函数分析3.5 assertProp函数分析 4. 初始化methods5. 初始化data6. 初始化computed6.1 回顾用法6.2 initComputed函数分析6.3 defineC…

Unity记录一些glsl和hlsl的着色器Shader逆向代码

以下内容一般基于 GLSL 300 之后 以下某些代码行&#xff0c;是“伪代码“&#xff0c;绝大部分是renderDoc 逆向产生标准代码 本人OpenlGL零基础&#xff0c;也不打算重头学 目录 Clip&#xff08;&#xff09; 剔除函数 discard; FS最终颜色输出 out 和最终颜色相加方程…

Hadoop的HDFS的集群安装部署

注意&#xff1a;主机名不要有/_等特殊的字符&#xff0c;不然后面会出问题。有问题可以看看第5点&#xff08;问题&#xff09;。 1、下载 1.1、去官网&#xff0c;点下载 下载地址&#xff1a;https://hadoop.apache.org/ 1.2、选择下载的版本 1.2.1、最新版 1.2.2、其…

docker报错解决方法

ERROR: readlink /var/lib/docker/overlay2/l: invalid argument 注意&#xff1a;会清空已有安装 sudo service docker stop sudo rm -rf /var/lib/docker sudo service docker start

酷开系统游戏空间,开启大屏娱乐新玩法

在这个充满科技感和无限创意的时代&#xff0c;游戏已经成为我们生活的一部分。而随时着科技的不断发展&#xff0c;以及游戏爱好者的游戏需求在不断提高&#xff0c;促使游戏体验也向更加丰富多彩的方向发展。显然&#xff0c;酷开科技早已经认识到游戏发展的新蓝图&#xff0…

一百七十二、Flume——Flume采集Kafka数据写入HDFS中(亲测有效、附截图)

一、目的 作为日志采集工具Flume&#xff0c;它在项目中最常见的就是采集Kafka中的数据然后写入HDFS或者HBase中&#xff0c;这里就是用flume采集Kafka的数据导入HDFS中 二、各工具版本 &#xff08;一&#xff09;Kafka kafka_2.13-3.0.0.tgz &#xff08;二&#xff09;…

javaee springMVC model的使用

项目结构图 pom依赖 <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org…

腾讯云CVM标准型S4服务器性能测评_CPU_网络收发包PPS详解

腾讯云服务器CVM标准型S4性能测评&#xff0c;包括S4云服务器CPU型号、处理器主频、网络收发包PPS、队列数、出入内网带宽能力性能参数说明&#xff0c;标准型 S4 实例是次新一代的标准型实例&#xff0c;CPU采用2.4GHz主频的Intel Xeon Skylake 6148处理器&#xff0c;腾讯云百…

Visual studio解决‘scanf: This function or variable may be unsafe. 问题

使用C语言的scanf函数在Visual Studio软件上运行会报如下错误&#xff1a; scanf: This function or variable may be unsafe. Consider using scanf s instead. To disable deprecation, use. CRT SECURE NO WARNINGS. See online help for details. 这个函数或变量可能是不安…