所有的单总线器件要求采用严格的通信协议[46-52],以保证数据的完整性。该协议定义了几种信号类型:复位脉冲、应答脉冲、写0、写1、读0和读1。所有这些信号,除了应答脉冲以外,都由主机发出同步信号,并且发送所有的命令和数据都是字节的低位在前,这一点与多数串行通信格式不同(多数为字节的高位在前)。
1.初始化序列:复位脉冲和应答脉冲
单总线上的所有通信都是以初始化序列开始,包括主机发出的复位脉冲及从机的应答脉冲。如图3-11所示,当从机发出响应主机的应答脉冲时,即向主机表明它处于总线上,且工作准备就绪。在主机初始化过程,主机通过拉低单总线至少480 μs,以产生Tx复位脉冲。接着主机释放总线,并进入接收模式Rx。当总线被释放后,5 kΩ上拉电阻将单总线拉高。在单总线器件检测到上升沿后,延时15~60 μs,接着通过拉低总线60~240 μs,以产生应答脉冲。
图3-11 单总线的复位和应答脉冲时序
2.读/写时隙
在写时隙期间,主机向单总线器件写入数据;而在读时隙期间,主机读入来自从机的数据。在每一个时隙,总线只能传输一位数据。
1)写时隙
存在两种写时隙:“写1”和“写0”。主机采用写1时隙向从机写入1,而采用写0时隙向从机写入0。所有写时隙至少需要60 μs,且在两次独立的写时隙之间至少需要1 μs的恢复时间。两种写时隙均起始于主机拉低总线,如图3-12所示。产生写1时隙的方式:主机在拉低总线后,接着必须在15 μs之内释放总线,由5 kΩ上拉电阻将总线拉至高电平;而产生写0时隙的方式:在主机拉低总线后,只需在整个时隙期间保持低电平即可(至少60 μs)。
在写时隙起始后15~60 μs期间,单总线器件采样总线的电平状态决定所写入的数据。如果在此期间采样为高电平,则逻辑1被写入该器件;如果为0,则写入逻辑0。(www.daowen.com)
2)读时隙
单总线器件仅在主机发出读时隙时,才向主机传输数据,所以在主机发出读数据命令后,必须马上产生读时隙,以便从机能够传输数据。所有读时隙至少需要60 μs,且在两次独立的读时隙之间至少需要1 μs的恢复时间。每个读时隙都由主机发起,至少拉低总线1 μs(图3-12)。在主机发起读时隙之后,单总线器件才开始在总线上发送0或1。若从机发送1,则保持总线为高电平;若发送0,则拉低总线。当发送0时,从机在该时隙结束后释放总线,由上拉电阻将总线拉回至空闲高电平状态。从机发出的数据在起始时隙之后,保持有效时间15 μs,因而,主机在读时隙期间必须释放总线,并且在时隙起始后的15 μs之内采样总线状态。
图3-12 单总线读/写时隙时序
当系统跟挂在其上的单总线器件进行对话时,第一步都需要总线控制器发出一个“复位”信号以使总线同步,然后选择一个受控器件进行随后的通信,在下一次复位之前所有其他器件都被挂起而忽略随后的通信。主机向这个被选定的器件发出特定的从器件指令,对它进行数据读写。典型的1-Wire通信流程如图3-13所示。
图3-13 典型的1-Wire通信流程
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。