Python
Java
PHP
IOS
Android
Nodejs
JavaScript
Html5
Windows
Ubuntu
Linux
PX4使用I2C方式添加自定义传感器(1)
2023-05-16
PX4使用I2C方式添加自定义传感器(1)
前言
毕业设计就是要在PX4上添加一个传感器(角度传感器),由于板子上的接口数量很少,很是宝贵。最后只能选择通过I2C通信方式,出于I2C通信的独特优势,一个I2C接口上可以同时接多个device,所以通过在板子上的I2C接口连接一个一拖四,这样就不会占接口的数量了。一拖四如下图所示:
由于在毕设之前从未接触过飞控,所以初次上手真的是困难重重啊,说起来都是泪。所以如果有什么问题,还请各路大神多多指教。本来也就是一个小小的传感器通过I2C方式进行通信而已,根本没有那么困难,但是一融入到飞控当中就不知到如何下手了。前期已经在STC单片机上进行过实验,之后又在STM32开发板上进行了实验,实验的结果都是比较成功的。最后一步就是加入到飞控中了!在万能的百度上搜索通过I2C方式给PX4添加自定义传感器,结果资源很少啊,只有一个博主发了,而且是相当简洁啊,简洁的我都看不懂。所以就想着自己总结一下这段时间的经历,希望能给以后遇到相同问题的同道中人提供一些参考的建议。
I2C通信机制
关于I2C的通信机制我就不多说了,关于这个的资料网上也是很丰富了。这里推荐一个文章,说的比较清楚:I2C通信机制介绍 这里只需要强调一点,就是每个接到I2C总线上的器件都有唯一的地址。这个地址并不是主机给的,而是器件本身所携带的。所以你如果需要通过I2C添加一个device一定要搞清楚这个device的地址是什么,为什么说这个很重要呢。因为对于飞控来说最基本的函数都是给你封装好了,比如说链接中文章提到的start、stop、ack(应答信号),这类函数都是已经封装好了的,不需要你自己去写,在飞控中基本上都是一个强大的transfer函数就搞定了(关于这个函数在后面的文章中会有详细介绍的)。你只需要弄清楚器件地址一切都OK 了,说到地址这里需要着重强调一点,这个真的很重要,后期就是由于这个问题程序一直不成功。
那就是对于PX4飞控来说,device的地址是7位的!!!
这是什么意思呢?我们知道每种device都有特定的地址,一般都是前7位,最后一位是R/W位,即读/写位。如下图所示:
比如对于我的角度传感器(其实是角度传感器输出接ADC,转化成数字量后通过I2C输出):
D7~D4:飞利浦公司规定为1001
D3~D1:这个要根据硬件的实际情况来决定了,在我的模块上分别是A2、A1、A0的电平,我的模块如下图所示:
可以看到我的模块原理图上A2、A1、A0是全部接地,所以为D3~D1为000。
D0:为方向设置,当为1时进行读操作,当为0时进行写操作。
所以总的器件地址为0b1001000X,按照这个模块给的资料,首先写第一个字节传递器件地址0b10010000(即0x90),但是在飞控上设置的地址就不是八位的0x90了,而是七位的地址0x48(就是将0b10010000右移一位变成了0b01001000即0x48),至于为什么会这样,这跟transfer这个函数有关,后面将会介绍。
这篇文章就介绍到这了,下一篇文章我将通过对PX4飞控中提供的一个I2C通信方式传感器代码的分析,了解I2C通信传感器的驱动和一些重要的函数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)
PX4
I2C
方式添加自定义传感器
PX4使用I2C方式添加自定义传感器(1) 的相关文章
AM2322温湿度传感器(地址0XB8)---I2C总结(I2C_ModBus协议)
I2C 简介
1 I2C 简介 这里的内容参考的是 2014 4 4 的 V 6 版本的官方 I2C Bus 规格书 xff0c 第六章有给出相应的链接 1 1 引脚 I2C 一般而言是一种同步半双工的通信方式 xff0c 所以除了电源引脚之外 xff0
px4仿真无法起飞问题(Failsafe enabled: no datalink)
报错信息 问题描述 xff1a 使用JMAVSim和gazebo仿真px4起飞时报错如下 xff1a WARN commander Failsafe enabled no datalink 说不安全 解决方法 打开QGC 就可以起飞了
什么是I2C通信
ARM体系 I2C通信 一 什么是I2C 1 I2C总线是由Philips公司开发的一种简单 双向二线制同步串行总线 它只需要两根线即可在连接于总线上的设备之间传送信息 2 主设备用于启动总线传送数据 xff0c 并产生时钟以开放传送的设备
i2c那些坑
origin http bbs ntpcb com simple t126695 html I2C 的那些坑 一般情况下 xff0c i2c 设备焊接没什么问题 xff0c 按照设备手册一步步来 xff0c 基本上就顺风顺水能够用起来 如果
px4下载指定版本的固件、git用法
https hub fastgit org PX4 PX4 Autopilot git describe tag 查看当前版本号 git tag l 查看所有版本 xff0c 也就是打个tag git checkout v1 9 1 跳转到
STM32软件模拟I2C从机的实现方法
1 1 前言 在使用I2C通信时 xff0c 一般会用到软件模拟I2C 目前网络上能搜索到的软件模拟I2C一般都是模拟I2C主机 xff0c 很少有模拟I2C从机的例程 由于I2C主机在进行数据收发时 xff0c 有明确的可预见性 xff0
I2C调试工具
1 I2C调试工具 i2c tools工具是开源I2C调试工具 xff0c 具有获取I2C总线挂载的设备列表及设备地址 xff0c 可对指定设备指定寄存器进行读写的功能 ubuntu安装 xff1a apt get install libi
PX4飞控的PPM接收机
xff08 一 xff09 原理图 xff1a PX4飞控的PPM输入捕获由协处理器完成 xff0c 接在A8引脚 xff0c 对应Timer1的通道1 xff08 二 xff09 PPM协议 xff1a PPM的每一帧数据间隔为20ms
PX4模块设计之二十七:LandDetector模块
PX4模块设计之二十七 xff1a LandDetector模块 1 LandDetector模块简介2 模块入口函数2 1 主入口land detector main2 2 自定义子命令custom command 3 LandDetec
I2C总线
目录 1 硬件概述 1 1 常用器件 1 2 总线结构 1 3 工作原理 2 协议概述 2 1 传输格式 2 2 传输特点 2 3 读和写 2 4 时钟同步和总线仲裁 3 转换器概述 4 缓存器概述 1 硬件概述 1 1 常用器件
无人机PX4使用动捕系统mocap的位置实现控制+MAVROS
动捕系统Optitrack xff0c 有很高的定位精度 xff0c 能够给无人机提供比较精确的位置信息 xff0c 因此如果实验室有条件 xff0c 都可以买一套动捕系统 动捕系统的原理 xff1a 光学式动作捕捉依靠一整套精密而复杂的光
DAC MCP4725 i2c 驱动(linux)
mcp4725是一款低功耗 高精度 单通道 拥有EEPROM的12位的dac 由于最近项目中使用到了该芯片所以贴出来给大家参考 步进电机电机芯片半流锁定 本贴呢非项目中使用的平台 主要是想在linux 下实现对该器件的使用 实现一个简单的i
飞行姿态解算(三)
继之前研究了一些飞行姿态理论方面的问题后 又找到了之前很流行的一段外国大神写的代码 来分析分析 第二篇文章的最后 讲到了文章中的算法在实际使用中有重大缺陷 大家都知道 分析算法理论的时候很多情况下我们没有考虑太多外界干扰的情况 原因是很多情
CORE-ESP32C3
目录 参考博文 源于网友oled eink aht10项目 源代码修改及复现说明 主要修改 显示效果 编辑硬件准备 软件版本 日志及soc下载工具 软件使用 接线说明 天气显示屏 硬件接线 温度采集 日期温度显示屏 正常初始化LOG 示例代
I2C接口
I2C的结构和特点 他是一具有两条总线线路 即一条串行数据线SDA和一条串行时钟线SCL 每个连接到总线上的器件都可以通过唯一的地址联系主机 它是一个真正的多主机总线 数据传输通过冲突检测和仲裁防止数据被破坏 串行的8位双向数据传输位速率更
如何为连接到 I2C gpio 扩展器的虚拟 mdio-gpio 设备配置 ACPI *.asl
我正在使用 Q7 模块 x86 并尝试在 Linux 上使用 ACPI SSDT Overlay 配置我们的外设 但我对此很挣扎 我想我误解了ACPI的一些核心概念 Problem CPU gt I2C gt PCA9575 GPIO Ex
STM32F207 I2C 测试失败
我正在使用 STM32F207 微控制器在 STM3220G EVAL 板上学习嵌入式开发 我尝试通过连接同一芯片上的两个 I2C2 和 I2C3 模块并发送 接收字符来测试 I2C 接口 这是我当前编写的代码 使用 mdk arm 5 i
是什么让 SPI 比 I2C 协议更快 [关闭]
Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我了解 I2C 和 SPI 通信的基础知识 因为两者都是同步协议 我想知道是什么让 SPI 比 I2C 更快 如果我没记错的话 使用 I2
使用 C++ 和 i2c 工具从虚拟 i2c 写入和读取
我正在尝试使用 C 写入和读取 I2C 总线 我的I2C总线是虚拟的 第一件事是加载内核模块i2c stub 我可以通过 bash 完成所有事情 现在我将其移植到 C 我可以打开i2c总线 获取特定地址的i2c总线 但无法读写 我正在虚拟化
随机推荐
PCI-E 1x, 4x, 8x, 16x 接口定义
1 PCI E插槽及金手指实物图 xff08 1 xff09 PCI E插槽 从上至下依次为PCI E 4X PCI E 16X PCI E 1X xff08 2 xff09 PCI E金手指 PCI E 1X金手指 PCI E 4X金手指
Jetson Xavier RC EP 的PCIe互通测试(12)
一 硬件连接 xff1a 交叉线 X16引脚定义 xff1a 从此面看 xff1a 从上到下 xff0c 依次为A1 A2 A3 从背面看 xff1a 从上到下 xff0c 依次为B1 B2 B3 注意断开 xff1a A2 A3 B1 B
将自己的ubuntu20.04做成镜像
系统 xff1a Ubuntu20 04 软件 xff1a systemback 硬件 xff1a 128GU盘一个 1 安装systemback sudo sh c 39 echo 34 deb arch 61 amd64 http mi
Orin + SC16IS752+SP3072 SPI转串口485
文章目录 1 前言 2 修改过程 2 1 sc16is752 芯片 2 1 1引脚说明 2 1 2 设备树配置 2 2 1 源码分析 3 调试 1 前言 Orin 有四路串口 对于多数设备来说已经够用 通过SPI 转串口再转RS485在Or
MIPI CSI介绍
文章目录 1 概述2 MIPI接口的演变2 1 CSI 12 2 CSI 22 3 CSI 32 4 更多关于CSI 3 其他3 1 为什么用MIPI CSI 2代替USB 3 2 MIPI CSI 2的性能亮点3 3 MIPI相机 它是如
车载摄像头概述
1 车载摄像头概述 SerDes环境 上边的摄像头是德国豪车配备的车载摄像头 我们是从国外网站上买的 为了选择车载摄像头 xff0c 你需要获得关于它的各种信息 首先 xff0c 您需要获取连接器和序列化器制造商名称的信息 xff0c 然后
ARM7的三级流水线过程
看到汇编中很多关于程序返回与中断返回时处理地址都很特别 xff0c 仔细想想原来是流水线作用的效果 所以 xff0c 决定总结学习下ARM流水线 ARM7处理器采用3级流水线来增加处理器指令流的速度 xff0c 能提供0 9MIPS MHz
nor flash和nand flash的区别
NOR 和 NAND 是现在市场上两种主要的非易失闪存技术 Intel 于 1988 年首先开发出 NOR flash 技术 xff0c 彻底改变了原先由 EPROM 和 EEPROM 一统天下的局面 紧接着 xff0c 1989 年 xf
UART通信协议
UART 是用于控制计算机与串行设备的芯片 有一点要注意的是 xff0c 它提供了RS 232C 数据终端设备接口 xff0c 这样计算机就可以和调制解调器或其它使用RS 232C接口的串行设备通信了 作为接口的一部分 xff0c UART
stm32f103的IAP升级时,部分APP程序功能丢失,串口中断不起作用,怎么办?
昨天我用stm32f103做IAP升级 xff0c APP程序是一个LED闪烁和一个串口1收发数据 结果IAP升级后 xff0c 发现APP程序只有LED闪烁但是串口1不行甚至引起死机 这种半死不活的现象是最莫名其妙的 xff0c 它一半在
计算机的启动过程(详细)
零 boot的含义 先问一个问题 xff0c 启动 用英语怎么说 xff1f 回答是boot 可是 xff0c boot原来的意思是靴子 xff0c 启动 与靴子有什么关系呢 xff1f 原来 xff0c 这里的boot是bootstrap
史上最全Linux面试题(2020最新版)
出处 xff1a https blog csdn net thinkwon article details 104588679 作者 xff1a ThinkWon 导读 xff1a 本文整理了最新的Linux面试题 xff0c 近3万字 x
Endnote中文参考文献格式下载地址(官网)
Endnote中文参考文献格式官网下载地址 1 下载2 安装 1 下载 今天在写中文论文时 xff0c 发现Endnote里没有中文参考文献格式 上网找了一下有些下载尽然还要币 xff0c 最后看到其实官网里就有GBT7114格式 xff1
C++中String类对象的初始化和基本用法
1 初始化的几种方法和错误案例 首先当然是包含头文件了 xff1a span class token macro property span class token directive keyword include span span c
C++中multimap和map容器及使用
map multimap容器里存放的都是pair模板类的对象 xff0c 而且按照first成员从小到大排序 1 pair模板 pair模板类的定义如下 xff0c 其中有两个成员变量 xff1a first和second xff1a 2
Word标题前出现黑块解决办法
最近Word写文章 xff0c 再次遇到了让人头疼的问题 xff0c 就是自己定义的多级列表 xff0c 某一级前面不显示数字而是一个黑块 之前就遇到过这个问题 xff0c 不知怎么就解决了 再次遇到就懵了 尝试了网上的几种方法 xff0c
从印象笔记无法连接到服务器,到win 10 Eage浏览器无法访问
昨天电脑上的印象笔记突然无法同步 xff0c 同步的图标上显示了红色的感叹号 按照网上很多的解决方法试了之后都无法解决 印象笔记也重新安装了 xff0c 也退出企图重新登录 xff0c 结果登录界面显示无法连接到服务器 按照官网给出的解决方
Crazyflie笔记一:概述开发范围、工具、特点介绍
原文地址 xff1a http blog sina com cn s blog 402c071e0102v6ho html Crazyflie笔记一 xff1a 概述开发范围 工具 特点介绍 2015 01 04 12 48 31 转载 标
Ubuntu16.04如何设置自动休眠时间
可能有的人觉得 xff0c 虚拟机几分钟没动就自己锁住了 xff0c 再次进入又要输密码非常麻烦 xff0c 那如何设置屏幕关闭时间呢 xff1f 下面就说一说 xff1a 1 打开设置选项 xff0c 在电脑的右上方 2 点击system
PX4使用I2C方式添加自定义传感器(1)
PX4使用I2C方式添加自定义传感器 xff08 1 xff09 前言 毕业设计就是要在PX4上添加一个传感器 xff08 角度传感器 xff09 xff0c 由于板子上的接口数量很少 xff0c 很是宝贵 最后只能选择通过I2C通信方式
热门标签
pvlib
glimpse
ksoap
md5file
rackspace
gitfork
colordepth
animated
cgimageref
gemfile
gsp
riverpod
inclause
androidx86
shoutcast
tabbedpage
pygametick