Jetsonnano B01 笔记5:IIC通信

news/2024/7/21 5:02:01 标签: 笔记, linux, 电脑, Jetsonnano

今日继续我的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.niftyadmin.cn/n/5016036.html

相关文章

【数据结构】 二叉搜索树的实现

文章目录 🍀二叉搜索树的概念🛬二叉搜索树功能实现🚩查找关键字key📌代码实现: 🚩插入关键字key📌代码实现: 🚩删除关键字key📌代码实现: &#x…

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

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

数据集笔记 geolife (操作篇)

数据集介绍可看:数据集笔记:GeoLife GPS 数据 (user guide)_UQI-LIUWJ的博客-CSDN博客 1 读取数据 import os os.chdir(D:/Geolife Trajectories 1.3/Geolife Trajectories 1.3/Data/000/Trajectory)import pandas as pd data pd.read_csv(…

flume1.11.0安装部署

1、准备安装包apache-flume-1.11.0-bin.tar.gz; 上传; 2、安装flume-1.11.0; 解压; tar -zxvf apache-flume-1.11.0-bin.tar.gz -C /opt/server 进入conf目录,修改flume-env.sh,配置JAVA_HOME&#xff1b…

设计模式-单例模式(Singleton)

文章目录 前言一、单例模式的概念二、单例模式的实现三、单例模式的应用场景四、单例模式优缺点优点:缺点:总结 前言 单例模式(Singleton Pattern)是一种创建型设计模式,它确保一个类只有一个实例,并提供一…

【Selenium】webdriver.ChromeOptions()官方文档参数

Google官方Chrome文档,在此记录一下 Chrome Flags for Tooling Many tools maintain a list of runtime flags for Chrome to configure the environment. This file is an attempt to document all chrome flags that are relevant to tools, automation, benchm…

vue3详解

认识Vue3 1. Vue2 选项式 API vs Vue3 组合式API <script> export default {data(){return {count:0}},methods:{addCount(){this.count}} } </script> <script setup> import { ref } from vue const count ref(0) const addCount ()> count.value …

base64URL解析浏览器链接中的json

场景&#xff1a;有时候第三方跳转&#xff0c;会携带base64URL编码后的json对象在url中&#xff0c;我们需要去解析出来&#xff0c; 那么我们首先要知道什么是base64编码和base64URL编码&#xff1b; 1.什么是base64以及base64URL 首先他们都是将二进制数据编码为ASCII字符…