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

发布者:Meshulun最新更新时间:2006-09-18 来源: 国外电子元器件关键字:寄存器  读取  校验 手机看文章 扫描二维码
随时随地手机看文章

l 引言
  
DS18B20是DALLAS公司生产的一线式数字温度传感器,采用3引脚T0-92型小体积封装;温度测量范围为-55℃~+125~C,可编程为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操作时序
  DS18B20的一线式操作时序如图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)。图3示出是该模块的仿真波形。

  从仿真波形可以看出,系统上电后的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地址,便于产品生产、维护和管理。

关键字:寄存器  读取  校验 引用地址:FPGA与DSl8820型温度传感器通信的实现

上一篇:基于MC74型电路的无线数字温度传感器
下一篇:MAX1452/55传感器信号调理器的启动要求

推荐阅读最新更新时间:2024-05-13 18:14

基于MB90092的机载视频标识卡设计
  机载视频记录系统用于记录飞行中人员、装备的各种信息,在训练、实战中发挥重要作用。为使飞行员及地面指挥人员能够更直观、确切地了解飞行各时刻的状态信息及便于判读,我们为其加装了标识卡系统。记录时可根据需要叠加适当标识,如汉字、图形、实时时钟等信息。   在实际系统设计中,我们选择了富士通(FUJITSU)公司生产的专用字符叠加芯片MB90092,采用AT89C51单片机对其控制;考虑到机载系统的特殊性,我们利用RS-232串行接口通过计算机进行标识卡预先标识的写入、控制设置。整个系统适应性较强,地勤人员可根据不同的任务很方便的进行预先修改,可以显示中文及任意图形。              图1 MB90092的功能框图
[单片机]
STM32 逐次逼近寄存器型(SAR)模拟数字转换器(ADC)
是采样速率低于5Msps (每秒百万次采样)的中等至高分辨率应用的常见结构。 SAR ADC的分辨率一般为8位至16位,具有低功耗、小尺寸等特点。 这些特点使该类型ADC具有很宽的应用范围,例如便携/电池供电仪表、笔输入量化器、工业控制和数据/信号采集等。 顾名思义,SAR ADC实质上是实现一种二进制搜索算法。 所以,当内部电路运行在数兆赫兹(MHz)时,由于逐次逼近算法的缘故,ADC采样速率仅是该数值的几分之一。 SAR ADC的架构 尽管实现SAR ADC的方式千差万别,但其基本结构非常简单(见图1)。 模拟输入电压(VIN)由采样/保持电路保持。 为实现二进制搜索算法,N位寄存器首先设置在中间刻度(即:100... .00
[单片机]
STM32 逐次逼近<font color='red'>寄存器</font>型(SAR)模拟数字转换器(ADC)
ARM中断寄存器
1.中断分两大类:内部中断和外部中断。 2.外部中断。24个外部中断占用GPF0-GPF7(EINT0-EINT7),GPG0-GPG15(EINT8-EINT23)。用这些脚做中断输入,则必须配置引脚为中断,并且不要上拉。具体参考datesheet数据手册。 寄存器:EXTINT0-EXTINT2:三个寄存器设定EINT0-EINT23的触发方式。 EINTFLT0-EINTFLT3:控制滤波时钟和滤波宽度。 EINTPEND:这个是中断挂起寄存器,清除时要写1,后面还有几个是写1清除。当一个外部中断(EINT4-EINT23)发生后,那么相应的位会被置1。为什么没有EINT0-EINT3,呵
[单片机]
ARM中断<font color='red'>寄存器</font>
ARM状态下各模式寄存器
ARM状态下各模式寄存器小结 所有的37个寄存器分两大类: 31个通用32位寄存器(实际所有对应物理物理寄存器) 6个状态寄存器 R8与R8_fig是不同的寄存器 R0-R7为未分组寄存器,对于任何处理器模式,这些寄存器都对应相同的32位物理寄存器 R8-R12有2个分组的物理寄存器,一个用于FIQ模式,一个用于其他模式(这样可以加快FIQ的处理速度) R13-R14有6个分组的物理寄存器,一个用于用户和系统模式,其余模式分别用于5种异常模式 R13作为堆栈指针(sp) R14作为链接寄存器(LR),用于子程序或异常返回地址 R15程序计数器(PC) CPSR程序状态寄存器 SPSR程序状态保存寄
[单片机]
ARM状态下各模式<font color='red'>寄存器</font>
STM32F7实现SPI读写,读取W25Q16型号
SPI协议的原理,网上大把的资料可以找到,这里记录一下SPI的初始化过程,以即以读取W25Q16型号为例的一个简单的SPI读写过程。 CubeMX配置: SPI模式 有只发送、只接收、半双工和全双工模式; 根据自己的需求,和SPI设备支持的类型,这里选择全双工的SPI; 片选信号 因为我们这个SPI总线上会挂载多个从设备,而且只有一个主机,所以,这里禁用硬件片选,程序里面读写之前使用软件进行片选; 帧格式 这里选择Motorola帧格式; 选择TI格式不能设置CPOL和CPHA,而且必须要开启硬件NSS这里才能选择TI模式。 博主在网上搜了一些关于TI的SSP协议相关的资料,只有简简单单的一句:SSP总线兼容SPI,S
[单片机]
STM32F7实现SPI读写,<font color='red'>读取</font>W25Q16型号
IAR+STM8——EXTI外部中断控制寄存器
这块三合一的开发板上有且只有一个按键,没办法,就拿这唯一的按键来用吧。吸取前面UART3的教训,先看开发板的原理图吧。这个按键被接到了STM8S207SB的PD7上,已做了上拉处理。为了简单明了,还是点LED1吧。按一下LED1亮,再按一下LED1灭。好了,写程序吧。 #i nclude iostm8s207sb.h #define LED1_FLASH PD_ODR_ODR3 = !PD_ODR_ODR3 // 开发板上的LED1接在PD3上 void GPIO_init(void) { PD_DDR = 0x08; // 配置PD端口的方向寄存器PD3输出 PD_CR1 = 0x08; // 设置PD3为推挽输出 PD_C
[单片机]
数字式三用表校验仪的使用与维护知识
 数字式三用表校验仪用于检定万用表及一级以下各类表头。如果使用不当就会损坏被测表及仪器内部电路,为此在使用时必需仔细进行测试,延长仪器的使用寿命。   一、使用注意事项   1.该仪器适合在周围气温在0℃-40℃,相对湿度80%以下的环境中工作,输入电源最好经过稳压,否则外电源的波动或过高过低,甚至有时在接近使用范围上下限处都会损坏该仪器的电源电路。   2.接通电源开关后使仪器预热30分钟。先将两个输出调节旋钮反时针方向旋到最小位置,根据被测仪表的种类及量程,将项目选择开关及量程开关、频率开关(直流档为400Hz)板到需要的位置。按下“输出”按键,红灯亮,顺时针方向慢慢调节“粗调”旋钮进行输出检验。   3.每一量程或项目检验
[测试测量]
数字式三用表<font color='red'>校验</font>仪的使用与维护知识
STM8单片机读取18B20温度传感器
ds18b20是最常用的数字温度传感器,只需要通过一根线就可取读取温度值,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。温度测量范围 -55°C 到 +125°C。 引脚排列如下 GND为电源地; DQ为数字信号输入/输出端; VDD为外接供电电源输入端(在寄生电源接线方式时接地) 内部结构如下: 通过DQ端口按照一定的格式就可以将温度值读取出来。 转换成功后的温度值在寄存器中存放 S为符号位,bit0—bit3为存放小数部分,bit4—bit10存放整数部分。 初始化时序 主机首先发出一个480-960微秒的低电平脉冲,然后释放总线变为高电平,并在随后的480微秒时间内对总线进行检测
[单片机]
STM8单片机<font color='red'>读取</font>18B20温度传感器
小广播
最新应用文章
换一换 更多 相关热搜器件

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 医疗电子 工业控制

词云: 1 2 3 4 5 6 7 8 9 10

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved