基于1-WireTM技术的单片机单线通信的实现
扫描二维码
随时随地手机看文章
在构成一个较大规模的单片机应用系统中,不可避免地要采用多机系统,经常涉及到系统间的信息交换。在通信速率要求不高的情况下,我们希望进行通信的双方占用尽可能少的端口连线。美国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 所示。
4 应用举例
具体应用时,可以灵活地根据单片机端口特点进行总线配置,例如在一个采用8051单片机的应用系统中,各片8051的端口(P3.2引脚)挂接在单总线上,主机的作普通I/O口使用,从机采用边沿触发(负跳变)的中断触发方式来侦听总线上主机的复位信号以不占用 CPU资源,进入中断服务程序后,从机的端口又作普通的I/O口用于数据通信。硬件连线如图4所示。
参考文献
[1] Dalls semiconductor.DS1820 1-WireTMdigital Thermometer.Maxim Integrated Products,Inc.,2002.