一线协议概述
异步通信 串行 半双工(分时) 电平信号
定义:主机和从机通过一根数据线进行通信,在一条总线上可以挂多个器件。
特点:①没有相应的时钟线,所以是异步通信
②只有一根总线,所以是串行传输数据
③这根总线既可以传输时钟又可以传输数据,可以双向传输,但是要分时,所以是半双工通信
④有参考电平线(GND),所以是电平信号
⑤单总线上所有的命令或数据的发送都是遵循低位先发送的原则
工作原理
顾名思义,单总线即只有一根数据线,系统中的数据交换、控制都由这根线完成。
设备(主机或从机)通过一个漏极开路或三态端口连至该数据线,以允许设备在不发送数据时能够释放总线,而让其它设备使用总线,其内部等效电路如图所示:
单总线通常要求外接一个约为4.7kΩ的上拉电阻,这样,当总线闲置时,其状态为高电平。
主机和从机之间的通信主要通过3个步骤完成,分别为:初始化1-wire器件、识别1-wire器件和交换数据。
由于它们是主从结构,只有主机呼叫从机时,从机才能应答,因此主机访问1-wire器件都必须严格遵循单总线命令序列,即初始化、ROM、命令功能命令。如果出现序列混乱,1-wire器件将不响应主机(搜索ROM命令,报警搜索命令除外)。
通信过程
1)初始化
初始化过程由主机发送复位脉冲和从机发送应答脉冲组成。
主机拉低总线480~960ns产生复位脉冲,然后释放总线,进入接收模式。主机释放总线时,产生上升沿,从机再检测到上升沿之后,保持高电平15~60ns,然后再拉低总线60~240us产生应答脉冲。主机接收从机的应答脉冲表示从机准备完毕,开始通信。
2)写间隙(写0间隙和写1间隙)
写间隙的时间:60us~120us
所有的写间隙至少需要60us以上120us以下,并且两次独立的写间隙至少需要1us的恢复时间,两种写间隙始于主机拉低总线。在写间隙开始的15~60us期间,单总线器件(从机)采样总线电平状态。如果为高电平,则写入1,如果为低电平,则写入0。
写1时,主机要先将数据线拉低保持至少1us~15us低电平,然后在写间隙开始后的15us内将数据线拉高(释放总线)直至120us时间结束。
写0时,主机必须要将数据线拉低并保持至少60us至多120us.
3)读间隙
读间隙的时间:60us以上
从机在主机发出读间隙(主机读间隙标志:总线拉低电平1us然后释放总线)的时候,才向主机 传输数据,所以当主机发出读数据命令后,必须马上产生读间隙,以便能够顺利读到数据。所有读间隙至少60us,且两次读间隙之间至少需要1us的恢复时间。
当主机拉低总线至少1us发起读间隙,此时从机才开始发送数据。从机发送1,则为高电平,从机发送0,则为低电平。
当从机发送0时,在该读间隙结束后释放总线,总线由上拉电阻拉至高电平。从机发出数据保持有效时间15us。所以主机在读间隙期间要释放总线(此时由从机控制),并且在读间隙起始的15us内采样总线状态,获取数据。
汇总时序图
文章来自论坛汇总,reference link:
1 WIRE 总线原理总结__Wayne_的博客-CSDN博客通信协议之一线协议(1-Wire)解析_Lyttt-的博客-CSDN博客_一线通协议