曙海教育集团论坛FPGA专区FPGA技术讨论区 → FPGA与DS18B20型温度传感器通信的实现


  共有7042人关注过本帖树形打印

主题:FPGA与DS18B20型温度传感器通信的实现

美女呀,离线,留言给我吧!
wangxinxin
  1楼 个性首页 | 博客 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:青蜂侠 帖子:1393 积分:14038 威望:0 精华:0 注册:2010-11-12 11:08:23
FPGA与DS18B20型温度传感器通信的实现  发帖心情 Post By:2010-11-12 15:00:52

 一线式(1-WIRE)串行总线是利用1条信号线就可以与总线上若干器件进行通信。具体应用中可以利用微处理器的I/O端口对DS18B20直接进行通信,也可以通过现场可编程门阵列(FPGA)等可编程逻辑器件(PLD)实现对1-WIRE器件的通信。

  本文介绍利用ACTEL公司的ProASICplus系列FPGA实现与DS18B20的48位ID号和12位温度测量结果保存在内部寄存器中,微处理器可以随时快速地从FPGA寄存器中读取这些信息。

  一般在使用DS18B20通信时需

 
要采用关闭中断的办法,以防止操作时序被中断服务破坏。

  利用FPGA实现与DS18B20通信不存在被迫关闭中断的情况,可以满足对实时性要求严格的应用要求。

  2 ProASICplus系列FPGA简介

  ProASICplus系列FPGA是ACTEL公司推出的基于Flash开关编程技术的现场可编程门阵列,包括从7.5万门的APA075型到100万门的APAl000型,具有高密度、低功耗、非易失、含有嵌入式RAM及可重复编程等特点。

  因为ProASICplus系列FPGA基于Flash技术,利用Flash开关保存内部逻辑,因此不需要另外的器件。由于不需要上电配置过程,因此具备上电就立即工作的特点。不用配置器件,系统的保密性提高。

  笔者在电力监控的产品中利用APA150在整个系统中充当协处理器,使主CPU从繁重的实时处理中解脱出来。


       3 DS18B20简介

  3.1内部结构

  DS18B20的64位序列号均不相同。

  8位CRC生成器可以完成通信时的校验。

  暂存寄存器有9个字节,包含温度测量结果、温度报警寄存器、CRC校验码等内容。

  3.2操作步骤

  对DS18B20功能命令。

  3.2.1初始化

  FPGA要与DS18B20返回响应脉冲。

  3.2.2ROM命令

  该步骤完成FPGA与总线上的某一具体DS18B20建立联系。ROM命令有搜寻ROM(SEARCH ROM)、读ROM(READ ROM)、匹配ROM(MATCH ROM)、忽略ROM(SKIP ROM)、报警查找等命令(ALARM SEARCH)。

  这里,FPGA只连接1个DS18B20的48位ID号。

  3.2.3 DS18B20功能命令

  FPGA在该步骤中完成温度转换(CONVERTT)、写暂存寄存器(WRITE SCRATCHPAD)、读暂存寄存器(READ SCRATCHPAD)、拷贝暂存寄存器(COPYSCRATCHPAD)、装载暂存器寄存器(RECALL E2)、读供电模式命令(READ POWER SUPPLY)。

  文中不用温度报警功能,因此在本步骤中只需完成温度转换,然后通过读暂存寄存器命令完成温度转化的结果。

3.3操作时序

  

2所示。从时序图中可以看出,对DS18B20的操作时序要求比较严格。利用FPGA可以实现这些操作时序。

  4 FPGA与DS18B20的通信

  4.1 DS18B20的操作模块

  FPGA需要完成DS18B20温度转换、读取温度转化结果。读

取48位ID号和读取温度转换结果过程中,FPGA还要实现CRC校验码的计算,保证通信数据的可靠性。

  以上操作反复进行,可以用状态机来实现。状态机的各种状态如下:

 RESET1:对DS18B20进行第三次复位。
    CMDCC2:

 
向DS18B20中读取数据位状态。在该状态中每读取1位数据,同时完成该数据位的CRC校验计算。所有数据都读取后,还要读取8位CRC校验位。这8位校验位也经过CRC校验计算,如果通信没有错误,总的CRC校验结果应该是0。这时可将通信正确的数据保存到id和temp_data寄存器中。

  设计中采用Verilog语言建立DS18B20 PROC(sysclk,reset,dq_pim,id,temp_data,dq_ctl)。
 


从仿真波形可以看出,系统上电后的10ms左右,FPGA可以读出DS18B20的48位ID值,这样,主CPU在系统复位后很短的时间内就可以读取ID值,进行相应的处理。

  4.2 FPGA与CPU的接口

  在FPGA中,要实现对DS18B20_PROC模块的调用及建立与CPU之间的接口。

  与CPU之间的接口通过建立若干寄存器实现。温度测量值和48位ID可以用4个16位寄存器保存。CPU通过读取这些寄存器可以获得温度测量数值和48位ID值。

  CPU、FPGA及DS18B20的连接原理如图4所示。
 

  5 结束语

  在系统中,FPGA可以分担许多主处理器的工作,提高整体实时性,降低CPU处理的严格实时约束,从而降低CPU软件处理的难度。同时,由于ACTEL公司的ProASICplus系列FPGA的保密特性,可以增强产品知识产权的保护。

  本设计应用在电力监控产品中。测量出的装置内部温度用于电量测量精度补偿和报警,对保证产品测量精度和可靠运行具有重要意义。48位ID值用于产品的惟一编码标识和以太网MAC地址,便于产品生产、维护和管理

[此贴子已经被作者于2010-11-17 11:58:11编辑过]

支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部

返回版面帖子列表

FPGA与DS18B20型温度传感器通信的实现








签名