当前位置:首页 > 模拟 > 模拟
[导读]前 言DS18B2普遍都是和单片机配合使用,很少有关于DSP与DS18B20的连接的接口报道,所以此文详细介绍了TMS320LF2407与 DS18B20的连接方法,并且很详细的介绍了如何用C语言完成精确的软件延时,从而完成DS18B20与TMS3

前 言

DS18B2普遍都是和单片机配合使用,很少有关于DSP与DS18B20的连接的接口报道,所以此文详细介绍了TMS320LF2407与 DS18B20的连接方法,并且很详细的介绍了如何用C语言完成精确的软件延时,从而完成DS18B20与TMS320LF2407之间的基于单线总线协议的数据通讯。

1 DS18B20的时序

1. 1 复位时序

复位使用DS18B20时,首先需将其复位,然后才能执行其它命令。复位时,主机将数据线拉为低电平并保持480us~960us,然后释放数据线,再由上拉电阻将数据线拉高15~60us,等待DS18B20发出存在脉冲,存在脉冲有效时间为60~240us,这样,就完成了复位操作。

1.2 写时序

在主机对DS18B20写数据时,先将数据线置为高电平,再变为低电平,该低电平应大于1us。在数据线变为低电平后15us内,根据写“1”或写“0” 使数据线变高或继续为低。DS18B20将在数据线变成低电平后15us~60us内对数据线进行采样。要求写入DS18B20的数据持续时间应大于 60us而小于120us,两次写数据之间的时间间隔应大于1us。

1.3 读时序

读时隙当主机从DS18B20读数据时,主机先将数据线置为高电平,再变为低电平,该低电平应大于1us,然后释放数据线,使其变为高电平。DS18B20在数据线从高电平变为低电平的15us内将数据送到数据线上。主机可在15us后读取数据线.。

2 TMS320LF2407与DS18B20的连接

DS18B20有三个引脚。其与TMS320LF2407A的接线图如下。VDD管脚接5V电压给传感器供电。DQ管脚为数据线,与 TMS320LF2407A的IOPA6连接的同时,还要接一个4.7K的上拉电阻,并接到5V的电源上,使数据线在空闲状态下能自动上拉为高电平。 GND管脚接地。

3 软件设计

3.1 精确的软件定时的实现

众所周知,TMS320LF2407的内核属于C2000系列的处理器,处理速度达到30MIPs,也就是每条指令所花的时间理论上只有33ns。但是实际情况是,由于DSP外部电路的数据处理速度和数据调用等因素,往往处理速度达不到这个数量级。那怎样测出每条指令的处理时间从而计算出软件延时程序的精确时间呢?计算方法如下:

1、延时程序的C语言代码为:

for(loopindex=0;loopindex

其中loopindex 为unsigned int,无符号整形数值, N为常量,根据所要求的延时时间,计算得出。具体算法在下面给出。

2、这个for语句在CCS中的编译器编译后所产生的汇编语言为:

LACL #0h

SACL *, 0

LACL *

SUB N(计算得到的循环次数)

BCND 转移的地址,GEQ

LACC *, 0

ADD #1h

SACL *, 0

LACL *

SUB N(计算得到的循环次数)

BCND 转移的地址,LT

这些汇编语句所占用的时间可以计算成公式:DELAY=(9N+4)*单个指令周期。

3、测试出一个指令周期

系统所用晶振为20M,倍频以后的时钟频率为40M,定时器1的分频为1,也就是说定时器的计时周期为25ns。开启定时器,单步运行上面的汇编语句,看定时器每次运行后所增加的数值。测试得到,在每次单步运行占一个指令周期的汇编语句后,定时器的数值增加10。也就是说,每个单指令周期的指令占用的时间为:25ns*10=250ns,也就是0.25us。

4、延时程序的最终计算公式为:

DELAY =(9n+4)*0.25us。

由公式可以看出,当n=0时,DELAY=1us,当n=65535时,DELAY= 150ms。

3.2 主要程序

由于文章篇幅的关系,这里只给出复位程序、读字节程序和整个读温度的主程序,写命令字的程序可以根据上面所述的时序自行编写。

#define nop() {asm( nop );}

#define DATA_PORT PADATDIR

#define DATA_MODE 0x0040

#define DATA_OUT 0x4000

#define DATA_BIT 0x0040

#define PIN_HIGH() {PADATDIR=PADATDIR|DATA_OUT|DATA_BIT;}

#define PIN_LOW() {DATA_PORT=(PADATDIR|DATA_OUT)&(~DATA_BIT);}



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

在进行CAN总线通信前,应保证正确的总线配置,比如终端电阻。它是影响总线通信的重要组件,下面我们不考虑信号的完整性,只从信号幅度和时间常数方面分析不加终端电阻时的影响。  终端电阻添加要求根据ISO11898-2对终端电...

关键字: 电阻 终端 CAN总线 电平

1、AHB系统总线分为APB1(36MHz)和APB2(72MHz),其中2>1,意思是APB2接高速设备。2、Stm32f10x.h相当于reg52.h(里面有基本的位操作定义),另一个为stm32f10x_conf....

关键字: STM32 电平 FSMC GB

摘 要:介绍了以STC89C52单片机为主控制器的基于DS18B20的温度测控系统的硬件和软件设计方法,给出了完整的硬件电路及程序流程图。并根据串行通讯原理设计了单片机与PC机的接口电路,建立了单片机与PC机之间的串行通...

关键字: DS18B20 STC89C52 串行通讯 VB6.0

摘要:根据食品配送途中对温度的多测点、实时性、可追溯性等要求,选用DS18B20数字温度传感器为温度采集器件,结合车载GPS/北斗定位终端的串口透传功能,设计了一种应用于食品冷链配送途中的有线温度采集系统,从而实现了对配...

关键字: 温度采集 冷链 DS18B20 分组测试

摘 要 :婴儿床环境的舒适程度直接影响到婴儿的生活质量,为此文中提出设计一款基于嵌入式技术,以AT89S52 为核心的婴儿床智能风扇。系统采用主辅式结构设计,以数字温度传感器 AT89S52、电容式湿度传感器HS1101...

关键字: AT89S52 智能婴儿床 DS18B20 蓝牙 BLE4.0

摘 要:文章介绍了对传统R-T电阻温度系数仪的改进,将原本模拟式的温度测量仪器改为数字式恒温控制仪器。仪器基于STC89C51单片机数字式恒温控制系统,拥有控制灵活、操作简单等特点,能够自主设定仪器内部铜丝电阻的温度并维...

关键字: R-T温度系数测定仪 STC8951 DS18B20 数字式恒温控制仪器

摘要:基于美国DALLAS公司推出的数字温度传感器DS18B20,给出了一个温度测量与显示系统的设计方法。该系统由51单片机AT89C52控制,并由8位数码管显示实时温度,通过该系统可设置温度上限与下限,以便在温度超过限...

关键字: 单片机 AT89C52 DS18B20 温度测量

本文来源于面包板社区电路设计其实也可以很有趣。先说一说这个电路的用途:当两个MCU在不同的工作电压下工作(如MCU1工作电压5V;MCU2工作电压3.3V),那么MCU1与MCU2之间怎样进行串口通信呢?很明显是不能将对...

关键字: 电平 通信 信号

摘 要:介绍了单片无线收发器nRF2401的主要特点及工作模式。给出了利用DS18B20数字温度传感器、AT- megal6和nRF2401实现无线分布式温度测量系统的设计方法,同时给出了系统的硬件结构以及无线收发和温度...

关键字: nRF2401 DS18B20 无线通信 温度测量

一.TTL  TTL集成电路的主要型式为晶体管-晶体管逻辑门(transistor-transistor logic gate),TTL大部分都采用5V电源。  1.输出高电平Uoh和输出低电平Uol  Uoh≥2.4V...

关键字: CMOS TTL 电平

模拟

31144 篇文章

关注

发布文章

编辑精选

技术子站

关闭