0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用UART实现1-Wire总线主控

星星科技指导员 来源:ADI 作者:ADI 2023-03-29 11:28 次阅读

本应用笔记解释了如何使用微处理器UART实现1-Wire总线主机。它包括对所需电气接口、UART配置以及UART和1-Wire信号之间的时序关系的说明。此外,它还参考了UART 1-Wire Master软件实用程序,该实用程序可生成标准和过驱速度时序,以辅助开发。UART字节时序设置具有灵活性,可以直接实现1-Wire时隙以及复位和存在检测脉冲。

介绍

Maxim创新的1-Wire协议允许通过单根导线和接地基准进行供电和数字通信。1-Wire器件为识别、存储器、计时、测量和控制提供经济的解决方案,并具有能够长距离(>100米)工作的额外优势。实现1-Wire主机侧驱动器的方法多种多样,例如使用Maxim的桥接器件、对微控制器的GPIO进行位敲击,或使用通用异步接收器发送器(UART)等外设来生成所需的时序。本应用笔记讨论了UART的实现方案,并介绍了如何使用UART 1-Wire主机软件实用程序在开发过程中提供帮助。该应用程序自动配置外设数据,以实现每个时序参数所需的各种波特率。®

16kbps的典型数据速率对于预期任务来说绰绰有余,因为大多数1-Wire器件提供的数据量相对较小。通常可以方便地使用8位或16位微控制器的通用输入/输出(GPIO)引脚以“位敲击”方式充当总线主站。

但是,许多 32 位系统中的处理器时钟频率通常超过 100MHz。使用GPIO引脚作为1-Wire总线主控器,每个1-Wire位会消耗大量时钟周期。其边缘可能无法精确控制以满足必要的时序要求。32位便携式系统在产生1-Wire读写时隙时消耗了宝贵的电池电量。如果UART外设可用,则可以减轻主处理器的位定时和字节成帧操作的负担。

本应用笔记介绍了所需的电气接口、UART配置以及UART与1-Wire信号之间的时序关系。对1-Wire的一般了解 假设通信。下面的讨论中使用了典型的时序和逻辑电平。请参考1-Wire器件数据手册,了解具体的时序和电压规格及容差。

概念概述

具有不同波特率的UART可提供实现1-Wire主机所需的输出时序,前提是1-Wire主机在波特率、每字符数据位数、奇偶校验和停止位数方面配置正确。改变UART发送字节值会产生1-Wire复位脉冲,以及用于构建低级命令的读写插槽。微处理器只需将单字节字符码放入UART发送寄存器,即可启动1-Wire时序码型。相反,微处理器读取的单字节字符代码对应于从0-Wire从机读取的1位或1位。所有1-Wire位传输都需要总线主机(即UART外设)通过将1-Wire总线驱动为低电平来启动定时周期。UART必须同时发送和接收一个字节,以产生1-Wire时序。因此,外设必须支持全双工操作。接收到的字节提供有用的信息,可以识别成功传输的数据字节、短路连接、数据损坏或是否连接了1-Wire从器件。每个发送字节对应一个<>-Wire读取位、写位或复位。

UART至1线电气接口

1-Wire器件工作在漏极开路环境,采用1.8V至5.5V总线电压。精确的逻辑电平和最小上拉电压取决于器件。因此,请参阅器件数据手册,了解兼容的工作电压。图1显示了当TX引脚上的主机输出电压在从机的工作电压范围内时可能的配置。上拉电压(V狗) 从 TX 引脚向上拉电阻 (R ) 的顶部提供电压狗),而 RX 引脚的高阻抗输入保持漏极开路配置。这允许从器件在读取位期间将1-Wire IO线拉低,或者在TX信号为高电平时将复位存在脉冲拉低。选择 R狗值对于正常工作很重要,因为图1中的配置没有强上拉功能。必须考虑输送到从设备用于需要额外电流的命令(即复制暂存器)的电流量。电阻必须足够小,以提供所需的电流,同时防止压降超过从站的最小工作电压或V伊利诺伊州主机和从属设备的级别。对于这种配置,480Ω电阻通常是1-Wire数据线上拉的良好起点。对于主机TX引脚上的电压不直接兼容的系统,请使用独立的上拉电压连接(图2和图3)。

pYYBAGQjsEaAFjXcAAAKNRdUKbg612.png

图1.1线总线接口电路。

通常需要一个外部漏极开路缓冲电路,因为大多数UART发送数据引脚不是漏极开路。该电路可以由分立元件(图2)或集成解决方案(如仙童NC7WZ07(图3))构成。4.7kΩ上拉电阻是两个电路中ROM电平命令的良好起点,但必须调整大小以允许高电流操作,例如将数据复制到EEPROM。验证逻辑电平是否不违反主机和从设备的 EC 表参数非常重要。

poYBAGQjsZSAJ_kLAAAbpKaMSt0767.png

图2.分立式漏极开路缓冲器。

poYBAGQjsEiAR9TZAAALG0G9CCI821.png

图3.集成漏极开路缓冲器。

1线/UART位定时

图5至图9中的时序图描述了1-Wire时隙与相应的UART字节帧之间的关系。UART用作总线主站,因此在TX输出引脚的高低转换上开始所有通信。当电气接口将缓冲的TX信号连接到RX输入引脚时,UART为传输的每个字节接收一个字节。

每个关系图都包括 UART 配置、传输字节值和预期接收字节值。列出的UART配置产生的波形符合常规模式1-Wire时序。请注意,UART为复位和存在脉冲检测配置了与读取和写入时隙不同的波特率。也可以使用其他配置,尽管评估标准可能与时序图中的标准不同。发送字节值对应于1-Wire总线主站角色,接收字节值或范围代表总线上的预期活动。必须对接收值进行评估,以确定1-Wire从器件在执行读取时返回的位值。读 0 和读 1 评估标准包含在图中。

pYYBAGQjsEmAQwI9AAAHfOY3Hmw064.png

图4.时序图例。

poYBAGQjsEqAajH_AAAqOZ1tHgQ245.png

图5.复位脉冲和存在检测。

多个波特率可用于产生1-Wire复位并检测存在脉冲。图5显示了波特率为9600的UART配置,以创建1线复位。每个UART位的时隙是用波特率(1/波特率)的倒数计算的。UART的起始位始终为低电平,可与0个数据位结合使用,以开发适当的时序。UART 数据首先作为最低有效位传输。传输一个字节 F0h 使数据位 3 到 0 成为逻辑 4,数据位 7 到 1 成为逻辑 <>,从而产生复位低时间 (TRSTL) 的 520.83us。接收值取决于是否存在一个或多个1-Wire从器件、每个从器件当前脉冲的内部时序、上升时间以及UART在每个位窗口内的采样时间。如果没有设备,则接收值等于传输值。当设备存在时,接收值会有所不同。以最小内部时序运行的单个从设备可能响应E0h,而具有最大内部时序的从设备可能返回90h的值。使用示波器或逻辑分析仪确认时序以确保达到所需的时序非常重要。确认所有时序非常重要,因为UART外设对于每个波特率具有不同的错误率。

可能需要在传输的UART字节之间增加延迟,以允许所需的恢复时间(T娱乐).如果需要这些延迟,请不要在主机的 UART 缓冲区中堆叠要连续传输的命令。UART 1-Wire主控实用程序通过计算所选波特率下每个时序参数的TX、RX和延迟值来简化任务。本文档末尾提供了指向此软件实用程序的链接。该实用程序为多种波特率的标准和过载定时提供UART配置。使用实用程序中的帮助菜单获取详细说明。

pYYBAGQjsEuAaT0ZAAAq6tx-3ys294.png

图6.读取 0 时隙。

poYBAGQjsEyAGsBDAAAlC0v9gcg586.png

图7.读取 1 时隙。

如前所述,主机始终在1-Wire系统中启动通信。主机将1-Wire IO拉低,持续时间为低读时间(TRL) 从从属服务器读取一点。从机将IO保持在低电平超过主读取采样时间(TLS3) 如果它正在传输 0 位并且在发送 1 位时不执行任何操作,则允许 IO 在主机释放 T 末尾的行后浮动RL.图 6 和图 7 中生成的读取时隙使用 115,200 的波特率。从1-Wire读取0接收的RX字节范围为0xFE至0x00,具体取决于从器件的内部时基和IO上升时间。从1-Wire读取1接收的RX字节始终0xFF(波特为115,200波特),因为1-Wire从站允许数据线在总线主站释放后立即返回到1状态。传输和接收字节可以随着波特率的增加而变化。UART 1-Wire主控工具计算所选波特率的相应TX、RX和延迟值。

pYYBAGQjsE2AUFOGAAAdbCKx_mI426.png

图8.写入 0 时隙。

poYBAGQjsE6AZyNSAAAcEFTqraU905.png

图9.写入 1 时隙。

图8和图9显示了如何以1,0的波特率向从设备传输115或200。但是,有许多波特率可以产生适当的时序。同样,UART 1-Wire主控实用程序可以计算出适当的值。查看数据时,似乎没有必要评估1-Wire写入的RX字节,因为IO线仅由主机驱动,从器件不响应任何数据。但是,评估 RX 值并确保它与 TX 值匹配可确认没有数据损坏。一些1-Wire系统具有从器件,可以在正常工作期间添加到系统中。如果在写入过程中添加连接的设备,则会在总线上产生一些不需要的转换。检查 RX 值会发现此问题。

1线位到位时序

1-Wire总线的一个关键优势是位间时序的灵活性。位之间的延迟可以短至 T娱乐最小值,或总线主站认为必要的长度。1-Wire位或字节之间没有最大延迟周期。因此,处理器可以在空闲时将位时隙成帧为字节值来为 UART 提供服务。与1-Wire器件的通信可被指定为低优先级任务。处理器无需浪费处理周期或功耗,也无需忽略高优先级、时间关键型任务。

pYYBAGQjsE-AZNfqAAAQsDevupw849.png

图 10.位到位时序灵活性。

UART 1线主线实用程序

UART 1-Wire主控工具可快速确定在各种波特率下生成1-Wire时序所需的TX、RX和延迟。该实用程序允许与Prolific或FTDI制造的USB到UART桥接设备进行通信,从而允许与1-Wire从器件进行实时通信。如果硬件不可用,可以选择仿真选项。图 11 中的配置选项卡提供了用于输入 EC 表时序参数的字段。这些值用于计算 UART 数据。1-Wire选项卡确认使用真实从器件或硬件未连接时的模拟输出是否正常工作。数据记录显示每个已执行命令的相关信息。从帮助菜单中选择用户指南以使用此工具。

poYBAGQjsaiAOQ7iAAEpji0uPvo906.png

图 11.“配置”选项卡。

poYBAGQjsbaARIoVAADrzsS0RhM976.png

图 12.1-线片。

结论

UART由于其可编程性,仍然是现代处理器中有价值的外设。UART字节时序设置的灵活性允许直接实现1-Wire读/写时隙以及复位和存在脉冲的检测。

UART 1-Wire Master软件实用程序可以生成所有时序参数的常规和过载速度的时序,从而实现快速开发。该工具支持各种波特率,确保与大多数(如果不是全部)UART外设兼容。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微处理器
    +关注

    关注

    11

    文章

    2131

    浏览量

    81413
  • 总线
    +关注

    关注

    10

    文章

    2706

    浏览量

    87214
  • uart
    +关注

    关注

    22

    文章

    1159

    浏览量

    99961
  • 1-Wire
    +关注

    关注

    0

    文章

    49

    浏览量

    21230
收藏 人收藏

    评论

    相关推荐

    基于DS2432的USB口1-Wire总线适配器的设计

    。  -Wire测量网络的实现需要与PC主机相结合,所以在1-Wire总线组成的测量网络中,网络适配器是必不可少的,它担负着主机监控单元与网络节点之间数据传输的重要任务。USB接口
    发表于 07-11 07:24

    基于C++模板技术的1-wire总线编程

    atmega48 的 uart 数据链路实现1-wire 总线总线具有枚举功能,其上挂有多个 ds18b20 器件。ds18b20_
    发表于 11-22 23:40

    1-Wire时序的理解及配置

    本帖最后由 gk320830 于 2015-3-8 23:26 编辑 摘要:DS2480B是带有UART主机接口的1-Wire?主机(驱动器)。该驱动器专门为电源传输进行优化,并支持嵌入式
    发表于 11-12 00:17

    1-Wire 总线读写器

    Maxim Dallas 1-Wire 专用读写器DS9097/DS9490 淘宝网{:23:}
    发表于 07-10 14:30

    1-Wire接口

    1-Wire接口要适应12V供电的芯片有什么?
    发表于 11-12 11:20

    请问1-wire支持热插拔吗?

    1-wire支持热插拔吗?怎样实现
    发表于 10-19 10:58

    微控制器和1-Wire温度传感器的软件接口

    及Dallas1-Wire ASIC即(将经过整合的半导体超高规模集成电路硬件描述语言1-Wire主控器制造成专用集成电路)等 。本文陈述了一种简单的软件解决方案,可实现微控制器和任意
    发表于 12-17 11:29

    如何访问1-Wire API

    任何组件在创建者来实现这一点。有人知道如何访问1-Wire API吗?谢谢 以上来自于百度翻译 以下为原文I have been looking for a 1-wire component
    发表于 07-29 15:25

    如何使用FlexIO块访问1-wire设备?

    我的 MCU 是 RT1052,现在我需要访问一个温度传感器 DS18B20,这是一个具有单线协议的设备。使用延迟功能访问 1-wire 协议的方法不适用于 RTOS。 从参考手册来看,1-wire
    发表于 04-23 06:43

    1-wire总线的基本原理

    1-wire总线的基本原理:1-wire总线是Maxim 全资子公司,Dallas 的一项专有技术与目前多数标准串行数据通信方式,如SPI/I2C/MICROWIRE 不同它采用
    发表于 09-26 16:57 55次下载

    1-wire总线的基本原理

    1-wire总线的基本原理 1-wire总线是Maxim 全资子公司Dallas 的一项专有技术与目前多数标准串行数据通信方式如SPI/I2C/MICROWIRE
    发表于 02-05 17:58 78次下载

    1-Wire总线主机

    Abstract: Communication with 1-Wire slave devices requires a 1-Wire master. There are numerous ways
    发表于 10-19 17:02 53次下载

    为什么UART驱动1-Wire设备总是出现问题?

    麦叔是搞嵌入式的,最近项目delay,他和我说用UART驱动1-Wire设备总是出现问题,故写此文来拯救他。 作者之前写过UART(点我),也写过1-Wire(点我),本文介绍如何用主
    的头像 发表于 10-23 17:13 2871次阅读
    为什么<b class='flag-5'>UART</b>驱动<b class='flag-5'>1-Wire</b>设备总是出现问题?

    如何使用微处理器的UART实现1-Wire®总线主机

    本应用笔记说明了如何使用微处理器的UART实现1-Wire®总线主机。它包括所需的电接口,UART配置以及
    的头像 发表于 05-28 16:24 3642次阅读
    如何使用微处理器的<b class='flag-5'>UART</b>来<b class='flag-5'>实现</b><b class='flag-5'>1-Wire</b>®<b class='flag-5'>总线</b>主机

    实现隔离式1-Wire总线

    1-Wire总线在需要电气隔离的医疗设备中传感器和耗材的认证和校准中越来越受欢迎。本文以应用笔记4206“为嵌入式应用选择合适的1-Wire主机”为基础,介绍如何修改现有的1-Wire
    的头像 发表于 01-17 10:39 2290次阅读
    <b class='flag-5'>实现</b>隔离式<b class='flag-5'>1-Wire</b><b class='flag-5'>总线</b>