《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 设计应用 > 基于单片机串口实现1-Wire总线通信的方法
基于单片机串口实现1-Wire总线通信的方法
来源:微型机与应用2012年第11期
李 多,陈 军
(东南大学 自动化学院,江苏 南京 211189)
摘要: 主要介绍了一种借助单片机串口实现1-Wire总线通信的方法,并以集成数字温度传感器DS18B20为例,基于有限状态机采用该方法完成了通信程序的设计。
Abstract:
Key words :

摘  要: 主要介绍了一种借助单片机串口实现1-Wire总线通信的方法,并以集成数字温度传感器DS18B20为例,基于有限状态机采用该方法完成了通信程序的设计。
关键词: 1-Wire总线;串口;有限状态机;DS18B20

 1-Wire总线是Dallas半导体公司推出的一种半双工串行总线,它采用单根信号线实现微控制器(主机)与接口器件(从机)之间的双向通信,每个从机具有唯一的工厂光刻ID作为地址。
 1-Wire总线的优势在于结构简单、便于总线扩展,可以通过总线为器件供电。1-Wire器件种类丰富,典型器件包括温度传感器、存储器、实时时钟、电池管理等。在低功耗仪表、工业控制及家庭监控网络等领域,1-Wire总线获得了广泛应用。
 1-Wire总线协议通常采用软件延时实现,对于实时性高且无操作系统的单片机,该方式难以提高单片机效率,同时极大地降低了系统实时性。本文提出了一种基于单片机串口的1-Wire总线协议的软硬件设计,该设计实现了1-Wire总线通信和单片机效率、实时性的兼顾。
1 1-Wire总线协议简析
 1-Wire总线的单根信号线兼有地址总线、数据总线和控制总线的功能,因此,访问1-Wire器件要严格遵循总线协议以保证数据完整性。
 1-Wire总线协议定义了初始化脉冲、写脉冲和读脉冲3类总线信号,其主要区别在于,总线上高低电平时间不同,下面分别对它们进行简析。


2.2 通信协议接口
 单片机串口采用1 bit起始位、8 bit数据位、1 bit停止位的工作方式,发送时由LSB至MSB逐位发送。
 (1)初始化脉冲
设置波特率为9 600 b/s,即每1 bit的宽度为104.2 μs,发送数据0xf0,则起始位和低4 bit构成复位信号,高4 bit为1,即释放总线。如总线上无应答信号,则串口接收的数据等于0xf0,否则说明总线上有应答信号。
 (2)读写脉冲
 设置波特率为115 200 b/s,即每1 bit的宽度为8.7 μs,完整的发送过程持续87 μs,满足读写脉冲至少60 μs的协议要求。起始位、停止位分别用来启动、终止读写脉冲。写脉冲中,根据串口发送不同数据区分别实现写0时序和写1时序;读脉冲中,串口发送数据0xff,起始位实现读脉冲时序的启动,LSB为1,此时,主机释放并采样总线,起始位与LSB共维持17.4 μs,满足协议对读时序的要求。根据串口接收的数据最低位即可区分从机发送至总线的数据。
 采用串口实现1-Wire总线通信的本质在于将3类总线信号与不同波特率下不同数据的串口收发过程建立联系,初始化脉冲对应2次串口收发的过程,读写脉冲则对应1次串口收发的过程[4]。具体对应关系如表1所示。

3 1-Wire总线应用——DS18B20
 DS18B20是1-Wire总线的集成数字

 

温度传感器,其精度高、体积小,在智能仪器仪表、工业控制等领域中广泛应用。
 传统应用方式是采用一根I/O引脚配合软件延时的方式实现相关协议,1-Wire总线协议需要微秒级时间分辨率,在通信过程中必须关闭系统所有中断,否则极容易因为中断服务程序的执行而造成通信数据错误。但是关闭中断降低了系统实时性,使得系统不能及时响应外部请求。对于任务少、实时性要求不高的系统,这种做法是可行的,但是对于任务多且无操作系统的单片机,以初始化脉冲为例,在至少960 μs的时间内,单片机都会被1-Wire总线占用,效率大为降低,实时性难以保证。
 基于单片机串口中断实现1-Wire协议,并配合状态机实现与DS18B20通信,为上述问题提出了解决方案。由于串口的收发都是通过硬件完成,因此数据收发过程中单片机可以处理其他任务,在实现1-Wire通信的同时,兼顾了实时性和效率。
 通信程序包括中断服务程序和通信状态机。中断服务程序为物理层,完成数据缓冲区中的数据收发,并通过全局变量标识总线的状态;通信状态机为DS18B20协议层,将对DS18B20的访问划分为子状态,根据表1将对DS18B20的不同操作转化为相应数据并存入数据缓冲区,在总线处于空闲状态时,依次完成状态转移。通信状态转换图如图5所示[4]。

 本文提出了一种基于单片机串口的1-Wire总线通信方式,结合1-Wire器件DS18B20详细介绍了其软硬件设计。相比于传统1-Wire通信方式,本文提出的方式提高了单片机效率,兼顾了1-Wire通信和系统的实时性,为多任务且无操作系统的单片机应用1-Wire器件提供了新的解决方案。
参考文献
[1] 马潮.AVR单片机嵌入式系统原理与应用实践(第二版)[M].北京:北京航空航天大学出版社,2011.
[2] Maxim. DS18B20 datasheet[Z]. 2008.
[3] Maxim. Application note 214: using a UART to implement a 1-Wire bus master[Z]. 2002.
[4] ATMEL. AVR318: Dallas 1-Wire master [Z]. 2004.

此内容为AET网站原创,未经授权禁止转载。