本应用笔记解释了如何使用微处理器的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)。
图1.1线总线接口电路。
通常需要一个外部漏极开路缓冲电路,因为大多数UART发送数据引脚不是漏极开路。该电路可以由分立元件(图2)或集成解决方案(如仙童NC7WZ07(图3))构成。4.7kΩ上拉电阻是两个电路中ROM电平命令的良好起点,但必须调整大小以允许高电流操作,例如将数据复制到EEPROM。验证逻辑电平是否不违反主机和从设备的 EC 表参数非常重要。
图2.分立式漏极开路缓冲器。
图3.集成漏极开路缓冲器。
1线/UART位定时
图5至图9中的时序图描述了1-Wire时隙与相应的UART字节帧之间的关系。UART用作总线主站,因此在TX输出引脚的高低转换上开始所有通信。当电气接口将缓冲的TX信号连接到RX输入引脚时,UART为传输的每个字节接收一个字节。
每个关系图都包括 UART 配置、传输字节值和预期接收字节值。列出的UART配置产生的波形符合常规模式1-Wire时序。请注意,UART为复位和存在脉冲检测配置了与读取和写入时隙不同的波特率。也可以使用其他配置,尽管评估标准可能与时序图中的标准不同。发送字节值对应于1-Wire总线主站角色,接收字节值或范围代表总线上的预期活动。必须对接收值进行评估,以确定1-Wire从器件在执行读取时返回的位值。读 0 和读 1 评估标准包含在图中。
图4.时序图例。
图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配置。使用实用程序中的帮助菜单获取详细说明。
图6.读取 0 时隙。
图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和延迟值。
图8.写入 0 时隙。
图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器件的通信可被指定为低优先级任务。处理器无需浪费处理周期或功耗,也无需忽略高优先级、时间关键型任务。
图 10.位到位时序灵活性。
UART 1线主线实用程序
UART 1-Wire主控工具可快速确定在各种波特率下生成1-Wire时序所需的TX、RX和延迟。该实用程序允许与Prolific或FTDI制造的USB到UART桥接设备进行通信,从而允许与1-Wire从器件进行实时通信。如果硬件不可用,可以选择仿真选项。图 11 中的配置选项卡提供了用于输入 EC 表时序参数的字段。这些值用于计算 UART 数据。1-Wire选项卡确认使用真实从器件或硬件未连接时的模拟输出是否正常工作。数据记录显示每个已执行命令的相关信息。从帮助菜单中选择用户指南以使用此工具。
图 11.“配置”选项卡。
图 12.1-线片。
结论
UART由于其可编程性,仍然是现代处理器中有价值的外设。UART字节时序设置的灵活性允许直接实现1-Wire读/写时隙以及复位和存在脉冲的检测。
UART 1-Wire Master软件实用程序可以生成所有时序参数的常规和过载速度的时序,从而实现快速开发。该工具支持各种波特率,确保与大多数(如果不是全部)UART外设兼容。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !