您好,  [请登录] [QQ登录]  [支付宝登录[免费注册]

商品分类

分享到: 百度搜藏 搜狐微博 新浪微博 腾讯微博 QQ收藏 人人网 Facebook Twitter

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

发布日期:2011-05-20

  DS18B20是DALLAS公司生产的一线式数字温度传感器,采取3引脚TO-92型小体积封装;温度丈量范畴为-55℃~+125℃,可编程为9位~12位A/D转换精度,测温辨别率可达0.0625℃,被测温度用标记扩展的16位数字量方法串行输出。 

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

  本文先容利用ACTEL公司的ProASICplus系列FPGA实现与DS18B20的通讯成果。FPGA可以将读出DS18B20的48位ID号和12位温度丈量结果生存在内部寄存器中,微处理惩罚器可以随时快速地从FPGA寄存器中读取这些信息。 

  一样平常在利用DS18B20时每每采取微处理惩罚器的I/O端话柄现与该器件的通讯,这种要领固然比较容易和方便,但是,由于DS18B20的一线式串行总线对时序请求比较严格,因此,为了包管与DS18B20的通讯可靠性,微处理惩罚器与DS18B20通讯时必要采取封闭停止的步伐,以防备操纵时序被停止办事粉碎。 

  利用FPGA实现与DS18B20通讯不存在被迫封闭停止的环境,可以餍足对及时性请求严格的应用请求。 

  2 ProASICplus系列FPGA简介 

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

  由于ProASICplus系列FPGA基于Flash技能,利用Flash开关生存内部逻辑,因此不必要别的的器件。由于不必要上电配置进程,因此具备上电就立即事变的特点。不消配置器件,体系的保密性进步。 

  笔者在电力监控的产品中利用APA150型FPGA实现了逻辑控制、A/D采样控制和FIFO存储等成果,并利用剩余的资源实现了DS18B20的通讯成果。APA150在整个体系中充当协处理惩罚器,使主CPU从沉重的及时处理惩罚中摆脱出来。 

  3 DS18B20简介 

  3.1内部布局 

  DS18B20的内部布局如图1所示,重要由以下几部分构成:64位ROM、温度传感器、非挥发的温度报警触发器TH(温度高)和TL(温度低)、配置寄存器、寄存寄存器(SCRATCHPAD)、存储器控制逻辑。DQ为数字信号输入/输出端。 

  ROM中的64(8位产品家属编号、48位ID号、8位CRC)位序列号是出厂前刻好的,这64位序列号具有惟一性,每个DS18B20的64位序列号均不雷同。 

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

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

  3.2操纵步调 

  对DS18B20的操纵分为3个步调:初始化、ROM下令和DS18B20成果下令。 

  3.2.1初始化 

  FPGA要与DS18B20通讯,起首必须完成初始化。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,因此只利用读ROM下令,来读取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的初始化、读取DS18B20的48位ID号、启动DS18B20温度转换、读取温度转化结果。读取48位ID号和读取温度转换结果进程中,FPGA还要实现CRC校验码的谋略,包管通讯数据的可靠性。 

  以上操纵重复举行,可以用状态机来实现。状态机的种种状态如下:

  RESET1:对DS18B20举行第一次复位,然掉队入DELAY状态,等待800μs后,进入CMD33状态。
     CMD33:对DS18B20发出0×33下令,读取48位ID值。
     GET_ID:从DS18B20中读取48位ID值。
     RESET2:对DS18B20举行第二次复位,然掉队入DELAY状态等待800μs后,进入CMDCC状态。
     CMDCC:向DS18B20发出马虎ROM下令,为进入下一状态作准备。
     CMD44:向DS18B20发出启动温度转换下令,然掉队入DELAY状态等待900ms掉队入下一状态。
     RESET3:对DS18B20举行第三次复位。
     CMDCC2:   
  向DS18B20发出马虎ROM下令,为了进入下一状态作准备。
     GET_TEMP:从DS18B20中读取温度丈量数值。
     DELAY:等待状态。
     WRITE_BIT:向DS18B20中写入数据位状态。
     READ_BIT:从DS18B20中读取数据位状态。在该状态中每读取1位数据,同时完成该数据位的CRC校验谋略。全部数据都读取后,还要读取8位CRC校验位。这8位校验位也颠末CRC校验谋略,要是通讯没有错误,总的CRC校验结果应该是0。这时可将通讯精确的数据生存到id和temp_data寄存器中。

  计划中采取Verilog语言创建DS18B20操纵模块”DS18B20_PROC”。在该模块中实现以上的状态机成果。该模块的定义为module DS18B20 PROC(sysclk,reset,dq_pim,id,temp_data,dq_ctl)。

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

  4.2 FPGA与CPU的接口

  FPGA中,要实现对DS18B20的通讯处理惩罚,主模块要实现对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地点,便于产品生产、维护和办理。