找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3374|回复: 6
收起左侧

用示波器人工解码DS18B20协议时序。

  [复制链接]
ID:126173 发表于 2020-7-18 15:49 | 显示全部楼层 |阅读模式
本帖最后由 湖南孵化 于 2020-7-18 16:05 编辑

最近得空,用普通的示波器,采用人工的方式对DS18B20的协议进行了解码。详细内容如下:
一:示波器抓取DS18B20工作时的波形。
DS18B20.jpg
二:单片机对DS18B20发出温度转换指令时的波形。

MCU发出温度转换指令时的波形

MCU发出温度转换指令时的波形


图二为温度转换操作:
1,首先按照DS18B20的时序,拉低总线480-960微秒进行复位,然后检测DS18B20发出的60-240微秒的应答脉冲,
2,我的PCB上只有一个DS18B20,所以跳过ROM,指令为CCH(16进制数,二进制码为11001100,按照操作协议要求单片机应以低字节在前高字节在后的方式在单总线上发出数据:00110011)。
3,发出温度转换指令44H(16进制数,二进制码为01000100,按照操作协议要求单片机应以低字节在前高字节在后的方式在单总线上发出数据:00100010)
4,  延时960MS


三:单片机进行读温度数据操作时的波形。
DS18B20读取温度.jpg


图三为读温度操作:
1,首先按照DS18B20的时序,拉低总线480-960微秒进行复位,然后检测DS18B20发出的60-240微秒的应答脉冲,
2,我的PCB上只有一个DS18B20,所以跳过ROM,指令为CCH(16进制数,二进制码为11001100,按照操作协议要求单片机应以低字节在前高字节在后的方式在单总线上发出数据:00110011)。

3,发出读温度指令BEH(16进制数,二进制码为10111110,按照操作协议要求单片机应以低字节在前高字节在后的方式在单总线上发出数据:01111101)
4,读取DS18B20发送的温度数据,该数据也是按照低位在前高位在后的顺序在单总线上发送的,实时数据为01001111,10000000转换为高位在前低位在后的真实数据:00000001,11110010,高位8字节数据的前5位为温度正负符号位,正温度(一般指0温度以上)为00000,负温度(一般指0温度以下)为11111,将我的时实温度进行换算,高位00000001与低位11110010合并后为0000000111110010,转换成十六进制数为1F2,转换成十进制数为498,实时温度为498X0.0625=31.125度。我的温度转换位数用的是默认的。
好了,终于得到温度了,
  结束!

DS18B20工作时的整体波形

DS18B20工作时的整体波形

评分

参与人数 1黑币 +90 收起 理由
admin + 90 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:663843 发表于 2022-2-11 15:11 | 显示全部楼层
民间不乏高手
回复

使用道具 举报

ID:1017814 发表于 2022-4-16 14:26 | 显示全部楼层
示波器是高手
回复

使用道具 举报

ID:1047240 发表于 2022-12-10 02:50 | 显示全部楼层
我还没有了解的那么清楚,前部分问的是这个吧,但是因为我还没有了解所以看不太懂。协议是自定义的是吧?0中间那个尖波是反馈?有没有反馈这些我都没有了解清楚
回复

使用道具 举报

ID:1047240 发表于 2022-12-10 02:50 | 显示全部楼层

我还没有买
回复

使用道具 举报

ID:401598 发表于 2022-12-12 08:50 | 显示全部楼层
谢谢分享时序分析。
回复

使用道具 举报

ID:149799 发表于 2022-12-15 20:52 | 显示全部楼层
高手,讲解的很好,谢谢分享经验。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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