×
嵌入式开发 > 详情

基于1-WireTM技术的单片机单线通信的实现

发布时间:2020-07-08 发布时间:
|

在构成一个较大规模的单片机应用系统中,不可避免地要采用多机系统,经常涉及到系统间的信息交换。在通信速率要求不高的情况下,我们希望进行通信的双方占用尽可能少的端口连线。美国Dallas公司生产的单线数字温度传感器 DS1820仅用1根口线进行信息交换,该技术可以很方便地应用到单片机系统间的通信上来。

1发送和接收

单线通信的数据交换仅在1根总线上完成,对主机和从机必须有严格的时序要求,可以借助“时隙”传输来实现数据的发送与接收。

如图1(a),主机向从机发送一位信息时,先由主机将总线由高(“1”)拉低(“0”)1~15μs,然后根据发送的信息是“1”还是“0”,置总线为相应的逻辑“1”或“0”,持续时间大于45~60μs后释放总线。从机检测到总线由高变低后,在15~60μs的时间窗内采样总线,若为高,则收到 “1”,否则收到“0”。主机发送一位的总时间要求大于60μs,以便为最坏情况提供足够的时间裕量。

当主机需要接收数据时,采用如图1(b)的时隙,先由主机将总线拉低1~15μs,然后释放。从机检测到总线由高变低后置总线为逻辑“1”或“0”,持续时间不少于15μs。主机在释放总线的15μs时间内采样总线,以接收从机发送的“1”或“0”,同样,要求接收

一位的总时间不少于60μs。

由此可见,主机和从机进行单线通信,总是由主机发起的,即将总线由高拉低,除非被主机请求,否则从机无法主动发送数据。除了主机外,从机之间也无法进行通信。

2复位

进行通信前需要进行总线复位,可以采用如图2的时隙来实现。先由主机保持总线480~960μs的低电线为“0”,持续时间为60~240μs。主机在释放总线后检测从机发出的应答信号,如果检测到总线为“0”,则表示从机存在并有应答,主机就可以通过产生接收或发送时隙来控制信息传输。若总线上没有从机应答或从机不存在,则主机会收到“1”。

3通信流程

实现挂接在单总线上各子系统的通信,需要分配给每个系统惟一的软件地址,当某一个系统需要信息交换时将主动发送复位信号扮演主机角色,各从机侦听到来自总线上的复位信号后先进行地址匹配,一旦握手成功,主从机间就可以进行数据传输。设从机软件地址为8位,采用如表1所示的协议字,实现通信的流程如图3 所示。



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
五大标准轻松搞定4K超高清电视选购