【从零开始】Air780EPM的LuatOS二次开发——OneWire协议调试注意事项!

当涉及到与传感器、执行器等外部设备交互时,OneWire协议的高效调试成为决定项目成败的关键环节。OneWire协议(单总线协议)以其仅需一根数据线即可实现设备通信的极简特性,被广泛应用于温度传感器、身份识别模块等场景。

一、LuatOS 及 OneWire 说明
 

LuatOS 支持 OneWire 通信协议,本文以 DS18B20 温度传感器和 Air780EPM 搭配来举例说明;

二、关于 DS18B20 温度传感器

在 DS18B20 温度传感器的实际应用中,需特别注意其单总线(1-Wire)协议特性及硬件设计。

以下是分硬件和软件的详细注意事项:

(一)  硬件注意事项

电源模式选择

寄生供电模式: 若使用寄生供电(VDD 接地,数据线供电),需在强上拉(通过 MOSFET)时提供足够电流(典型 1mA)。温度转换期间必须保持强上拉,否则数据可能丢失。

独立供电模式: 推荐优先选择独立电源(3.0-5.5V),可避免寄生供电的时序复杂性,稳定性更高。

上拉电阻配置

单总线需接 4.7kΩ 上拉电阻(标准值,5V 系统常用),长距离通信可适当减小阻值(如 2.2kΩ)。

错误示例:未接上拉电阻会导致总线无法拉高,通信失败。

布线设计

总线长度建议 < 50 米(实际应用中通常 <20 米),过长会引入电容效应,导致信号边沿延迟。

避免与高频信号线平行走线,减少电磁干扰(EMI)。

接地优化

确保传感器与 MCU 共地,必要时采用星型接地,防止地环路干扰。

在工业环境中,可增加磁珠或隔离器抑制共模噪声。

电源滤波

在 VDD 引脚并联 100nF 陶瓷电容,滤除高频噪声。

长线缆供电时,可增加 10μF 电解电容缓冲。

多器件连接

每个 DS18B20 有唯一 64 位 ROM ID,需通过搜索算法(如树状搜索)识别多个设备。

总线挂载设备数受驱动能力限制,一般不超过 50 个

ESD 防护

在易受静电干扰的环境中,数据线串联 100Ω 电阻并并联 TVS 二极管(如 SMAJ5.0A)。

(二)  软件注意事项

严格的时序控制

单总线协议对时序敏感,需精确控制复位脉冲(480-960μs)、应答时隙(15-60μs)及读写时隙(1-15μs)。

错误处理与重试机制

每次操作前检查总线是否存在短路(持续低电平)。

若读取的 CRC 校验失败,需重试 3-5 次,避免偶发干扰。

温度转换时间管理

转换时间与分辨率相关(9 位:93.75ms,12 位:750ms),需在 CONVERT T 命令后等待足够时间。

CRC 校验强制启用

始终验证读取数据的 CRC8 校验码,防止错误数据被误用。

示例校验函数需优化为查表法以提高效率。

多设备枚举

使用递归搜索算法遍历总线上的所有 ROM ID,需处理冲突和分支选择。

温度精度校准

若需要高精度,可进行两点校准:冰水混合物(0°C)和沸水(100°C)环境下的数据修正。

(三)  常见问题与解决

传感器无响应

检查上拉电阻是否虚焊,总线是否对地/电源短路。

用示波器观察总线波形,确认复位脉冲是否合规。

温度值跳变

增加软件滤波(如滑动平均滤波)。

检查电源电压波动,确保转换期间供电稳定。

长距离通信失败

改用屏蔽双绞线,降低波特率(减少时序敏感性)。

使用总线驱动器(如 DS2480B)增强驱动能力。

(四)  推荐设计流程

硬件设计 → 2. 单设备基础通信测试 → 3. CRC 校验验证 → 4. 多设备枚举 → 5. 抗干扰测试(如开关电源噪声注入)→ 6. 长期稳定性测试。

通过系统化设计,DS18B20 可在-55°C 至 +125°C 范围内实现 ±0.5°C 精度(典型值)。

三、Air780EPM 硬件适配说明

Air780EPM 共支持 4 路 OneWire 接口,默认使用 Air780EPM 第 23 管脚

1、Air780EPM 的 IO 电平默认 3.0V,当 DS18B20 是 2.8V-3.3V 供电时,OneWire 信号线不需要电平转换,可以直连;

2、Air780EPM LuatOS OneWire 协议,虽然有 4 个管脚可以复用,但硬件通道只有 1 个,大家在设计时:

3、默认使用管脚 23(GPIO2),结合 OneWire 协议的 ROM Search,根据各自的 ROM ID,实现多个 DS18B20 数据的读取;

4、使用管脚 23 和另外 3 个管脚,实现最多 4 个 DS18B20 的独立连接,这种情况下注意:由于 Air780EPM 只有 1 路 OneWire 硬件通道,软件读取时需要“分时轮询操作”

四、Air780EPM 软件适配说明

接线说明:

注意:

1、OneWire 功能支持在 Air780EPM 的 4 个管脚使用, 但硬件通道只有 1 个, 默认是 GPIO2(管脚号 PIN23)

2、如需切换到其他管脚, 参考如下切换逻辑, 选其中一种

具体代码参考 demo/onewire 运行截图

五、Air780EPM 开发板调试说明

我们以支持 CAN 接口和以太网接口版本的 Air780EPM 开发板举例说明。           

1、如果使用外部电源给 DS18B20 供电,请确保外部电源与开发板共地连接;

2、GPIO2(Air780EPM 模组管脚 PIN23)已在 Air780EPM 开发板顶部 46PIN 插针连接器的 PIN14 引出,非常方便调试,但仍需特别注意的是: GPIO2(Air780EPM 模组管脚 PIN23)在 Air780EPM 开发板上已经作为控制摄像头供电 LDO 启动的 GPIO 使用,调试时需要将该部分电路的 R19 和 R29 用热风枪吹掉;

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

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

相关文章

redis数据结构、多路复用、持久化---java

数据结构 Redis 提供了丰富的数据类型&#xff0c;常见的有五种数据类型&#xff1a;String&#xff08;字符串&#xff09;&#xff0c;Hash&#xff08;哈希&#xff09;&#xff0c;List&#xff08;列表&#xff09;&#xff0c;Set&#xff08;集合&#xff09;、Zset&am…

vue3之写一个aichat ----vite.config.js

vite.config.js的CSS配置 postcss-pxtorem 开发响应式网页的时候需要用到postcss-pxtorem amfe-flexible amfe-flexible是由阿里团队开发的一个库&#xff0c;它可以根据设备的屏幕宽度去动态调整HTML根元素()的字体大小&#xff0c;这意味着无论用户使用什么尺寸的设备访问你…

强化学习(赵世钰版)-学习笔记(8.值函数方法)

本章是算法与方法的第四章&#xff0c;是TD算法的拓展&#xff0c;本质上是将状态值与行为值的表征方式&#xff0c;从离散的表格形式&#xff0c;拓展到了连续的函数形式。 表格形式的优点是直观&#xff0c;便于分析&#xff0c;缺点是数据量较大或者连续性状态或者行为空间时…

C++模版(进阶)

文章目录 一、非类型模版参数二、模版的特化2.1 概念2.2 函数模版特化2.2.1 函数模版特化为指针类型注意事项 2.3 类模版特化2.3.1 全特化2.3.2 偏特化(半特化)2.3.3 类模板特化应用示例 三、模版分离编译3.1 什么是分离编译&#xff1f;3.2 模版的分离编译3.3 解决方法! 四、模…

Linux配置yum仓库,服务控制,防火墙

一、yum仓库 1.在安装软件时&#xff0c;首先第一步就是要考虑软件的版本的问题&#xff01; 2.软件的安装&#xff1a;最安全可靠的方法就是去软件对应的官网上查看安装手册&#xff08;包括的软件的下载&#xff09; 红帽系软件安装的常见的3种方式 &#xff08;1&#x…

布谷直播系统源码开发实战:从架构设计到性能优化

作为山东布谷科技的一名技术研发人员&#xff0c;我参与了多个直播系统平台从0到1的开发和搭建&#xff0c;也见证了直播行业从萌芽到爆发的全过程。今天&#xff0c;我想从研发角度&#xff0c;分享一些直播系统软件开发的经验和心得&#xff0c;希望能对大家有所帮助。 一、 …

实战设计模式之解释器模式

概述 作为一种行为设计模式&#xff0c;解释器模式提供了一种方法来定义语言的文法规则&#xff0c;并通过这些规则解析和处理特定类型的语言句子。简单来说&#xff0c;解释器模式允许我们定义一个代表某种语言中语法规则的对象结构&#xff0c;从而能够根据这些规则理解并处理…

物联网边缘计算网关是什么?

在物联网的浩瀚架构中&#xff0c;边缘计算网关宛如一位坚毅的前沿哨兵&#xff0c;默默守护着数据处理与传输的关键防线&#xff0c;为整个物联网系统的高效运转发挥着不可或缺的作用。 一、边缘计算网关的定义与基本功能 边缘计算网关是一种智能设备&#xff0c;它被部署在…

计算机视觉算法实战——障碍物识别(主页有源码)

✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ ​​ ​​​​​​ ​ ​ 1. 引言 计算机视觉是人工智能领域的一个重要分支&#xff0c;旨在通过计算机模拟人类的视觉系统&#xff0c;从…

Win11锁屏后显示“天气、市场、广告”如何取消显示

关闭方法&#xff1a;设置>个性化>锁屏界面>锁屏界面状态>"无"。 方法一&#xff1a;通过“个性化”设置 打开“设置”应用&#xff1a; 点击屏幕左下角的“开始”按钮&#xff08;Windows 图标&#xff09;。点击齿轮状的“设置”图标。或者按下 Win I…

10天速通强化学习-008

TRPO 思考-TRPO-在线策略-给定信任区域防止更新不稳定 Actor-Critic网络随着网络深度的增加&#xff0c;步长太长&#xff0c;梯度更新会变差。改变方法-增加信任区域。(trust region policy optimization)-TRPO算法&#xff1a; 核心思想&#xff1a; 是在每次迭代中&…

整合百款经典街机游戏的模拟器介绍

对于80、90后而言&#xff0c;街机游戏承载着童年的欢乐记忆。今天要给大家介绍一款超棒的软件——「MXui街机厅经典游戏101款」&#xff0c;它能带你重回那段热血沸腾的街机时光。 「MXui街机厅经典游戏101款」是一款绿色免安装的街机模拟器&#xff0c;体积约1.39G。无需繁琐…

springboot第三站(1) web开发引入

目录 1.简介 2.SpringBoot对静态资源的映射规则 3.模版引擎 1.简介 使用SpringBoot&#xff1b; 1&#xff09;、创建SpringBoot应用&#xff0c;选中我们需要的模块&#xff1b; 2&#xff09;、SpringBoot已经默认将这些场景配置好了&#xff0c;只需要在配置文件中指定…

12-二叉树-二叉树高度(给定前序和中序确定二叉树)

题目 来源 23. 二叉树的高度 思路 其实跟09那篇很像&#xff0c;反正核心就是要通过前序和中序来建树&#xff0c;只不过现在多了一个返回值&#xff1b;因为建树的时候&#xff0c;其实左子树和右子树的深度就可以知道。其余详见代码。 代码 /* 前序遍历根左右,中序&…

PSI5接口

文章目录 前言PSI5接口简介操作模式命名规则异步操作模式&#xff08;PSI5-A&#xff09;同步操作模式&#xff08;PSI5-P&#xff09; 传感器->ECU物理层&#xff08;位编码&#xff09;数据链路层数据帧帧格式串行消息帧10bits 传感器帧定义超10bits传感器帧定义 ECU->…

垃圾处理全流程监管平台

在当前城市化进程中&#xff0c;垃圾处理已成为城市管理的重要课题。随着技术的发展&#xff0c;垃圾处理全流程监管平台的建设显得尤为重要。该平台能够实现垃圾从产生、收集、运输到最终处理的全流程监管&#xff0c;提高垃圾处理效率&#xff0c;促进资源回收利用&#xff0…

【Linux编程】IPC之消息队列从踩坑到实战:核心原理、实战案例与C++封装详解(含完整代码)

一、消息队列基础概念 消息队列是Linux系统提供的一种进程间通信&#xff08;IPC&#xff09;机制&#xff0c;具有以下特点&#xff1a; 消息以链表形式存放在内核中每个消息包含类型标识&#xff08;mtype&#xff09;支持多生产者/多消费者模式消息总长度受限于系统配置&a…

Unity 项目工程结构目录

1. Unity.VisualScripting.Core 作用: Visual Scripting 的核心模块&#xff0c;提供了可视化编程的基础功能&#xff08;前身为 Bolt&#xff09;。它允许开发者通过节点图创建游戏逻辑&#xff0c;而无需编写代码。 典型用途: 非程序员快速构建原型&#xff0c;或简化…

从pdf提取文本数据的c/cpp库(非OCR)

Aspose.PDF for C 商业付费版&#xff0c;无源码。 功能强大&#xff0c;支持多种PDF操作。 对应的官方示例代码&#xff1a;Aspose.PDF-for-C Spire.PDF for C 商业付费版 对应的官方示例代码&#xff1a;Spire.PDF-for-C- PDFTron SDK 商业付费版 PoDoFo 开源 当前版本…

【Linux操作系统——学习笔记二】Linux简单导航命令操作

一、前言 学习Linux&#xff0c;本质上是学习在命令行下熟练使用Linux的各类命令。 命令行&#xff1a;是一种通过输入命令和参数与计算机系统进行交互的方式&#xff0c;可以使用各种字符化命令对系统发出操作指令&#xff0c;打开Linux终端&#xff0c;进入命令行界面。 …