串口协议(1-Wire)解析

一线协议概述

异步通信 串行 半双工(分时) 电平信号

定义:主机和从机通过一根数据线进行通信,在一条总线上可以挂多个器件。

特点:①没有相应的时钟线,所以是异步通信

           ②只有一根总线,所以是串行传输数据

           ③这根总线既可以传输时钟又可以传输数据,可以双向传输,但是要分时,所以是半双工通信

           ④有参考电平线(GND),所以是电平信号

           ⑤单总线上所有的命令或数据的发送都是遵循低位先发送的原则

工作原理

顾名思义,单总线即只有一根数据线,系统中的数据交换、控制都由这根线完成。

设备(主机或从机)通过一个漏极开路或三态端口连至该数据线,以允许设备在不发送数据时能够释放总线,而让其它设备使用总线,其内部等效电路如图所示:

串口协议(1-Wire)解析_第1张图片

单总线通常要求外接一个约为4.7kΩ的上拉电阻,这样,当总线闲置时,其状态为高电平。

主机和从机之间的通信主要通过3个步骤完成,分别为:初始化1-wire器件、识别1-wire器件和交换数据

由于它们是主从结构,只有主机呼叫从机时,从机才能应答,因此主机访问1-wire器件都必须严格遵循单总线命令序列,即初始化、ROM、命令功能命令。如果出现序列混乱,1-wire器件将不响应主机(搜索ROM命令,报警搜索命令除外)。


通信过程

1)初始化

初始化过程由主机发送复位脉冲和从机发送应答脉冲组成。

主机拉低总线480~960ns产生复位脉冲,然后释放总线,进入接收模式。主机释放总线时,产生上升沿,从机再检测到上升沿之后,保持高电平15~60ns,然后再拉低总线60~240us产生应答脉冲。主机接收从机的应答脉冲表示从机准备完毕,开始通信。
串口协议(1-Wire)解析_第2张图片

2)写间隙(写0间隙和写1间隙)

写间隙的时间:60us~120us

所有的写间隙至少需要60us以上120us以下,并且两次独立的写间隙至少需要1us的恢复时间,两种写间隙始于主机拉低总线。在写间隙开始的15~60us期间,单总线器件(从机)采样总线电平状态。如果为高电平,则写入1,如果为低电平,则写入0。

写1时,主机要先将数据线拉低保持至少1us~15us低电平,然后在写间隙开始后的15us内将数据线拉高(释放总线)直至120us时间结束。
写0时,主机必须要将数据线拉低并保持至少60us至多120us.
串口协议(1-Wire)解析_第3张图片

3)读间隙

读间隙的时间:60us以上

从机在主机发出读间隙(主机读间隙标志:总线拉低电平1us然后释放总线)的时候,才向主机 传输数据,所以当主机发出读数据命令后,必须马上产生读间隙,以便能够顺利读到数据。所有读间隙至少60us,且两次读间隙之间至少需要1us的恢复时间。

当主机拉低总线至少1us发起读间隙,此时从机才开始发送数据。从机发送1,则为高电平,从机发送0,则为低电平。

当从机发送0时,在该读间隙结束后释放总线,总线由上拉电阻拉至高电平。从机发出数据保持有效时间15us。所以主机在读间隙期间要释放总线(此时由从机控制),并且在读间隙起始的15us内采样总线状态,获取数据
串口协议(1-Wire)解析_第4张图片

汇总时序图

串口协议(1-Wire)解析_第5张图片

文章来自论坛汇总,reference link:

 1 WIRE 总线原理总结__Wayne_的博客-CSDN博客通信协议之一线协议(1-Wire)解析_Lyttt-的博客-CSDN博客_一线通协议

你可能感兴趣的:(通讯,fpga开发,单片机,嵌入式硬件)