DS18B20温度传感器FPGA实现

简介: 笔记

一. 简介


通过原理图可以看出,DS18B20温度传感器只有一条总线,可想而知,其结构的简单化,导致了其操作的复杂化。

更多关于该传感器的一些特性参数,以及性能指标,可以详细阅读官网提供的数据手册。

接下来主要讲解怎样使用它。

10.png

二. 初始化


  • 从图中可以看出,首先得由我们FPGA将总线拉低,时间为480us以上
  • FPGA释放总线后,再等待一个15-60us
  • 然后会由DS18B20将总线拉低,时间为60-240us
  • 最后DS18B20也会释放总线,等待一定时间后(从图中根据自己之前的时间可以算出),初始化完成

11.png

三. 写


这里我们只看上面一行图,前半部分对应写0的操作,后半部分对应着写1的操作.


从图中可以得出,写每一位的时钟周期为60us,然后每一位之间的时间间隔至少为1us

写的时候,先FPGA拉低总线15us,告知DS18B20要接收数据了,然后的45us里面根据数据是0还是1,决定FPGA是将数据线拉低还是拉高

完了之后,FPAG释放总线,完成一位的数据写入

此外每写入一个字节后,最好等待50us的时间,再写下一个字节


12.png

四. 读


在第三节的那个图的第二行中,有完整的读操作时序

可以看到,读写的周期数和每位之间的间隔数完全相同,只是对应的操作稍有变化,但变化不大,先简要的说明一下


前15us为真正的读取操作,后面的45us可以不用管,FPGA直接释放总线


读取数据在前面的15us内完成,具体怎样可以看下面的这张图


1. FPGA先将总线拉低一个T_INT时间,可以定为1.5us
 2. 然后FPGA释放总线,等待一个T_RC时间,也可以定为1.5us
 3. 最后,在接下来的时间点,进行采样读取数据


读取数据的操作在此就完成了。


13.png

五. 读出数据的格式


最后再对数据的格式进行介绍一下


从图中可以看到,一个温度数据是16位的


在Figure2中可以看到每一位下对应着的含义,S表示符号位,1为负数,0为正数


在Table1中,可以看到一些温度值,对应着的二进制是怎样表示的,下面举例说明一下


+0.5  0000_0000_0000_1000 = 1/2 = 0.5
 -0.5  1111_1111_1111_1000  = 0000_0000_0000_0111 + 1
          = 0000_0000_0000_1000
          = -0.5
 负数在这里面是存储的补码,先要取反,然后加一,最后添负号


14.png

六. 程序


刚开始的时候,可以参考C51编写的代码来写Verilog的代码,这样可以很快的知道编写的流程是怎样的,以及状态机的状态有那些和一些注意事项。


通过下面的C语言读取温度的过程,可以看知道读取温度的具体步骤

先启动温度转换,由于温度转换需要一点时间,所以需要一点等待,然后再进行读温度寄存器的命令,然后是读取温度了,最后通过上面的Figure2图进行装换。


15.png

Verilog程序的状态机如下图,可以与上面的C程序很好的对应起来

16.png

最后给出Signal Top抓取的信号图

17.png

最后在开发板上的效果如下图

image.jpeg

在我的资源中可以下载完整代码DS18B20

最后欢迎大家关注我的公众号,回复DS18B20同样也可获取完整的代码及对应的C语言的DataSheet文档

公众号:FPGA之旅

目录
相关文章
【数字IC手撕代码】Verilog小数分频|题目|原理|设计|仿真
【数字IC手撕代码】Verilog小数分频|题目|原理|设计|仿真
【数字IC手撕代码】Verilog小数分频|题目|原理|设计|仿真
|
11月前
|
Linux 网络架构 Windows
TTL传输中过期原因,ttl传输中过期的解决办法(ttl传输中过期怎么解决)
A3: 实际上,TTL值需依据实际网络环境设定。过小的TTL值可能导致数据包过早丢弃,影响通信;反之,过大的TTL值则可能占用不必要的网络资源。因此,科学合理的TTL值设定是平衡通信效率与资源利用的关键。
2474 0
|
11月前
|
移动开发 C语言
C语言:&&和&、||和|有什么区别
在C语言中,&&和||是逻辑运算符,分别表示逻辑与(AND)和逻辑或(OR),它们用于连接两个布尔表达式,只有当两边都为真时&&返回真,||在至少一边为真时返回真;&和|是位运算符,对应地进行位级的与、或操作,它们对操作数的二进制位进行逐位处理。&&和||具有短路特性,而&和|没有。
11694 1
|
人工智能 自然语言处理 文字识别
秒懂全文:盘点13个各具特色的AI智能阅读助手工具
在当今信息爆炸的时代,AI阅读工具正在革新我们的阅读方式,成为了提高效率、优化阅读体验的关键。这类AI阅读辅助工具,只需要上传文件或者输入链接,便可以直接以聊天对话的形式进行一键总结和智能问答,满足用户AI PDF 阅读、AI文档问答分析、AI音视频总结等多种实用需求,高效提炼信息要点精华,建立属于自己的AI知识管理和信息管理工作流。对此,根据阅读场景,精选了 13 个具有代表性、各具特点的高质量 AI 阅读助手助理。 具体如何选择,见文末总结。
1554 1
秒懂全文:盘点13个各具特色的AI智能阅读助手工具
|
Ubuntu Linux 开发工具
Linux下的IMX6ULL——开发板的第一个APP和驱动实验(三)
Linux下的IMX6ULL——开发板的第一个APP和驱动实验(三)
432 0
Linux下的IMX6ULL——开发板的第一个APP和驱动实验(三)
|
异构计算
FPGA强化(9):TFT_LCD液晶屏驱动
FPGA强化(9):TFT_LCD液晶屏驱动
171 0
|
JavaScript 小程序 Java
基于微信小程序餐厅点餐系统设计与实现(源码+lw+部署文档+讲解等)
基于微信小程序餐厅点餐系统设计与实现(源码+lw+部署文档+讲解等)
1340 1
|
缓存 监控 NoSQL
函数计算常见问题之提示文件错误如何解决
函数计算(Function Compute, FC)是阿里云提供的无服务器计算服务,它允许用户在无需管理服务器的情况下运行代码,但在配置和执行过程中可能遇到报错,本合集致力于梳理FC服务中的常见报错和配置问题,并提供解决方案,帮助用户优化函数执行环境。
288 0
函数计算常见问题之提示文件错误如何解决
|
Oracle 关系型数据库 索引