FPGA与DS18B20型温度传感器通信的实现
发布时间:2008/5/27 0:00:00 访问次数:529
    
    
    来源:电子开发网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通信不存在被迫关闭中断的情况,可以满足对实时性要求严格的应用要求。
    2proasicplus系列fpga简介
    proasicplus系列fpga是actel公司推出的基于flash开关编程技术的现场可编程门阵列,包括从7.5万门的apa075型到100万门的apal000型,具有高密度、低功耗、非易失、含有嵌入式ram及可重复编程等特点。
    因为proasicplus系列fpga基于flash技术,利用flash开关保存内部逻辑,因此不需要另外的器件。由于不需要上电配置过程,因此具备上电就立即工作的特点。不用配置器件,系统的保密性提高。
    笔者在电力监控的产品中利用apa150型fpga实现了逻辑控制、a/d采样控制和fifo存储等功能,并利用剩余的资源实现了ds18b20的通信功能。apa150在整个系统中充当协处理器,使主cpu从繁重的实时处理中解脱出来。
    3ds18b20简介
    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(searchrom)、读rom(readrom)、匹配rom(matchrom)、忽略rom(skiprom)、报警查找等命令(alarmsearch)。
    这里,fpga只连接1个ds18b20,因此只使用读rom命令,来读取ds18b20的48位id号。
    3.2.3ds18b20功能命令
    fpga在该步骤中完成温度转换(convertt)、写暂存寄存器(writescratchpad)、读暂存寄存器(readscratchpad)、拷贝暂存寄存器(copyscratchpad)、装载暂存器寄存器(recalle2)、读供电模式命令(readpowersupply)。
    文中不用温度报警功能,因此在本步骤中只需完成温度转换,然后通过读暂存寄存器命令完成温度转化的结果。
    3.3操作时序
    2所示。从时序图中可以看出,对ds18b20的操作时序要求比较严格。利用fpga可以实现这些操作时序。
    
    
    4fpga与ds18b20的通信
    4.1ds18b20的操作模块
    fpga需
    
    
    来源:电子开发网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通信不存在被迫关闭中断的情况,可以满足对实时性要求严格的应用要求。
    2proasicplus系列fpga简介
    proasicplus系列fpga是actel公司推出的基于flash开关编程技术的现场可编程门阵列,包括从7.5万门的apa075型到100万门的apal000型,具有高密度、低功耗、非易失、含有嵌入式ram及可重复编程等特点。
    因为proasicplus系列fpga基于flash技术,利用flash开关保存内部逻辑,因此不需要另外的器件。由于不需要上电配置过程,因此具备上电就立即工作的特点。不用配置器件,系统的保密性提高。
    笔者在电力监控的产品中利用apa150型fpga实现了逻辑控制、a/d采样控制和fifo存储等功能,并利用剩余的资源实现了ds18b20的通信功能。apa150在整个系统中充当协处理器,使主cpu从繁重的实时处理中解脱出来。
    3ds18b20简介
    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(searchrom)、读rom(readrom)、匹配rom(matchrom)、忽略rom(skiprom)、报警查找等命令(alarmsearch)。
    这里,fpga只连接1个ds18b20,因此只使用读rom命令,来读取ds18b20的48位id号。
    3.2.3ds18b20功能命令
    fpga在该步骤中完成温度转换(convertt)、写暂存寄存器(writescratchpad)、读暂存寄存器(readscratchpad)、拷贝暂存寄存器(copyscratchpad)、装载暂存器寄存器(recalle2)、读供电模式命令(readpowersupply)。
    文中不用温度报警功能,因此在本步骤中只需完成温度转换,然后通过读暂存寄存器命令完成温度转化的结果。
    3.3操作时序
    2所示。从时序图中可以看出,对ds18b20的操作时序要求比较严格。利用fpga可以实现这些操作时序。
    
    
    4fpga与ds18b20的通信
    4.1ds18b20的操作模块
    fpga需
上一篇:红外线远程控制发射机PT2210