找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

[嵌入式/ARM] 基于单片机串口实现1-Wire总线通信的方法

[复制链接]
admin 发表于 2013-3-26 12:31:36 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
摘  要: 主要介绍了一种借助单片机串口实现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类总线信号,其主要区别在于,总线上高低电平时间不同,下面分别对它们进行简析。
20121107045414289914546.gif
    20121107045414680534547.gif
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所示。
    20121107045414758654548.gif
   3 1-Wire总线应用--DS18B20
 DS18B20是1-Wire总线的集成数字
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-12-29 10:25 , Processed in 0.056088 second(s), 9 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表