当前位置:首页 > 公众号精选 > FPGA之旅
[导读]第八例啦,本例将介绍如何通过FPGA采集DS18B20传感器的温度值。

一. 简介


第八例啦,本例将介绍如何通过FPGA采集DS18B20传感器的温度值。

二. DS18B20简介


通过原理图可以看出,DS18B20温度传感器只有一条总线,可想而知,其结构的简单化,导致了其操作的复杂化。更多关于该传感器的一些特性参数,以及性能指标,可以详细阅读官网提供的数据手册。接下来主要讲解怎样使用它。


三. 初始化


  • 从图中可以看出,首先得由我们FPGA将总线拉低,时间为480us以上

  • FPGA释放总线后,再等待一个15-60us

  • 然后会由DS18B20将总线拉低,时间为60-240us

  • 最后DS18B20也会释放总线,等待一定时间后(从图中根据自己之前的时间可以算出),初始化完成



四. 写


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

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

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

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

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


五. 读


在第三节的那个图的第二行中,有完整的读操作时序可以看到,读写的周期数和每位之间的间隔数完全相同,只是对应的操作稍有变化,但变化不大,先简要的说明一下

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

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

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

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

六. 读出数据的格式


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

  • 从图中可以看到,一个温度数据是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 负数在这里面是存储的补码,先要取反,然后加一,最后添负号

七. 程序


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

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

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


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

给出Signal Top抓取的信号图

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

就不进行仿真了啦!

需要完整代码的可以在公众号FPGA之旅中回复 :FPGA之旅设计99例之第八例

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

本篇是FPGA之旅设计的第十二例,在前面的例程中,完成了DS18B20温度传感器数据的采集,并且将采集到的数据显示在数码管上。由于本例将对温湿度传感器DHT11进行采集,而且两者的数据采集过程类似,所以可以参考一下前面的...

关键字: FPGA DS18B20温度传感器

这是FPGA之旅设计的第十三例啦,本例是一个综合性的例程,基于OLED屏幕显示,和DHT11温湿度采集,将DHT11采集到的温湿度显示到OLED屏幕上。

关键字: FPGA OLED屏幕

这是FPGA之旅设计的第九例啦!!!本例将介绍如何使用FPGA驱动OLED屏幕,并在接下来的几例中,配合其它模块,进行一些有趣的综合实验。由于使用的OLED屏是IIC接口的,对IIC接口不是很清楚的,可以参考第五例的设计...

关键字: FPGA OLED屏幕

这是FPGA之旅设计的第十例啦,在上一例中,已经成功驱动了OLED屏幕,本例将结合上一例,以及第四例多bytes串口通信做一个有趣的例程。

关键字: FPGA OLED屏 串口

这是FPGA之旅的第十一例了。在前面的例子中,已经对OLED有了一个基础的了解,本例将介绍如何在OLED上实现支符的显示,为后面的例程做准备。

关键字: FPGA OLED 字符

在许多高可靠性商业航空、太空、国防、汽车和工业应用中使用的系统需要获得IEC 61508安全完整性等级(SIL)3功能安全规范的认证。为了降低这一过程的成本,并加快上市,Microchip Technology Inc....

关键字: Microchip FPGA

本例是FPGA之旅设计的第十四例,本例将红外遥控的使用,并将红外接收器接收到红外遥控的数据显示在数码管上。

关键字: FPGA 红外遥控信号

加利福尼亚州圣克拉拉市,2022年9月19日——高性能现场可编程逻辑门阵列(FPGA)和嵌入式FPGA(eFPGA)半导体知识产权(IP)领域的领导性企业Achronix半导体公司宣布:该公司已经收购了Accolade...

关键字: Achronix FPGA

Flex Logix目前在推广他们的嵌入式 FPGA 技术。它非常坚固。它已经投放市场多年,并在许多流程节点上得到广泛支持。他们看到越来越多的客户采用该技术,他们正在宣传并尝试与更多的架构师和设计师会面,与他们分享他们可...

关键字: Flex Logix FPGA

这是FPGA之旅设计的第五例啦!今天给大家带来的是IIC通信,IIC协议应用非常广泛,例如与MPU6050进行通信,配置OV5640摄像头、驱动OLED屏幕等等,都需要使用到IIC协议,所以掌握它是非常必要的,废话不多说...

关键字: FPGA IIC协议

编辑精选

技术子站

关闭