第八章常用串行总线分析及应用

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。


5)配置寄存器 暂存器的第五字节是配置寄存器,可以通过相应的写命令 进行配置其内容如下表:
低五位一直都是“1”,TM是测试模式位,用于设置 DS18B20在工作模式还是在测试模式。在DS18B20出厂 时该位被设置为0,用户不要去改动。R1和R0用来设置 DS18B20的分辨率 。
8.1.3
单总线开发使用

2 . DS18B20的构成
DS18B20内部结构图如图8-2所示。主要包括: 寄生电源、温度传感器、64位激光(lasered)ROM、存放 中间数据的高速暂存器RAM、非易失性温度报警触发器 TH和TL、配置寄存器等部分。


1)寄生电源 寄生电源由二极管VD1、VD2、寄生电容C和电源检测电路 组成,电源检测电路用于判定供电方式,DS18B20有两种 供电方式:3V~5.5V的电源供电方式和寄生电源供电方式。 在寄生电源供电方式下,DS18B20从单线信号线上汲取能 量:在信号线DQ处于高电平期间把能量储存在内部电容里, 在信号线处于低电平期间消耗电容上的电能工作,直到高 电平到来再给寄生电源(电容)充电。该寄生电源有两个 优点:第一,检测远程温度时无需本地电源;第二,缺少 正常电源时也能读ROM。 2)64位只读存储器ROM ROM中的64位序列号是出厂前被光刻好的,它是该 DS18B20的地址序列码。光刻ROM的作用是使每一个 DS18B20都各不相同,可以实现一根总线上挂接多个 DS18B20。64位光刻ROM序列号的排列是:开始8位 (28H)是产品类型标号,接着的48位是该DS18B20自身 的序列号,最后8位是前面56位的循环冗余校验码 (CRC=X8+X5+X4+1)。
/*读时序(位)*/ bit rdbit_ds18b20(void) { uchar j; bit b; DQ=1; _nop_(); DQ=0; _nop_();_nop_();_nop_(); DQ=1; _nop_();_nop_();_nop_(); _nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();
控制器对18B20操作流程
3.ROM操作命令
在主机检测到应答脉冲后, 就可以发出ROM命令。这 些命令与各个从机设备的唯 一64位ROM代码相关,允 许主机在单总线上连接多个 从机设备时,指定操作某个 从机设备。这些命令还允许 主机能够检测到总线上有多 少个从机设备以及其设备类 型,或者有没有设备处于报 警状态。从机设备可能支持 5种ROM命令(实际情况与 具体型号有关)每种命令长 度为8位,主机在发出功能 命令之前,必须送出合适的 ROM命令。以下为几个 ROM命令的功能:
第八章 常用串行总线介绍及 应用

目前单片机应用系统比较常见的串行扩展接口 和串行扩展总线有:1-Wair单总线、SPI串行 总线、IIC总线。
8.1

1-wire总线

1-wire单总线采用单根信号线,既可以传输时钟又可以传 输数据,而且数据传输是双向的。它具有节省I/O口资源、 结构简单、成本低廉、便于总线扩展和维护等诸多优点。 1-wire单总线适用于单个主机系统,能够控制一个或多个 从机设备。当只有一个从机位于总线上时,系统可按照单 节点系统操作,而当多个从机位于总线上时则系统按照多 节点系统操作。 我们以单总线温度传感器DS18B20的应 用为例,详细介绍1-wire的应用。
else//写0时序 { DQ=1; _nop_(); DQ=0; j=35; while(--j); DQ=1; } wdat>>=1; } }

3)读时隙 总线器件仅在主机发出读时隙时,才向主机传输数据,所 以,在主机发出读数据命令后,必须马上产生读时隙,以 便从机能够传输数据。所有读时隙至少需要60us, 且在 两次独立的读时隙之间至少需要1us的恢复时间。每个读 时隙都由主机发起,至少拉低总线1us 图8-7所示。
3)内部存储器
DS18B20温度传感器的内部存储器包括一个高速暂存RAM和 一个非易失性的可电擦除的EEPROM,EEPROM用于存放 高温度和低温度触发器TH、TL和配置寄存器的内容。高速 暂存存储器由9个字节组成。

4)温度传感器 D7 D6 D5 D4 D3 D2 D1 D0 DS18B20中的温度传感器可 23 22 21 2-0 2-1 2-2 2-3 2-4 以完成对温度的测量。 DS18B20的温度测量范围是55℃~+125℃,分辨率的默认 D15 D14 D13 D12 D11 D10 D9 D8 值是12位。DS18B20温度采 集转化后得到16位数据,存储 S S S S S 26 25 24 在DS18B20的两个8位RAM中, 高字节的高5位S代表符号位, 如果温度值大于或等于零,符 对应的温度计算:当符号位S=0时,直 号位为0;温度值小于零,符 接将二进制位转换为十进制;当S=1时, 号位为1。低字节的第四位是 先将补码变为原码,再计算十进制值。 小数部分,中间7位是整数部 分。

2)写时隙 当主机将单总线DQ从逻辑高(空闲状态)拉为逻 辑低时,即启动一个写时序。存在两种写时隙: “写1”和“写0”。主机采用写1时隙向从机写入1, 而采用写0时隙向从机写入0。所有写时隙至少需 要60us,且在两次独立的写时隙之间至少需要 1us的恢复时间。
两种写时隙均起始于主机拉低总线(图8-6所示)。 产生 写1时隙的方式:主机在拉低总线后,接着必须在15 us之 内释放总线(向总线写1),由4.7K上拉电阻将总线拉至 高电平;而产生写0时隙的方式:在主机拉低总线后,只 需在整个时隙期间保持低电平即可(至少60us)。 在写时隙起始后15-60 us期间,单总线器件采样总线电平 状态。如果在此期间采样为高电平,则逻辑1被写入该器 件;如果为0,则写入逻辑0。
温度转换
//温度转换函数 unsigned char display_7leds[7]; /*用数组保存转换后的温度,第1位保 存符号,第2,3,4保存整数,第5位 保存小数点,6,7位保存小数值*/ void convert_t(char uct_l,char uct_h) { uchar tm_dot; tm_dot=(uct_l>>2)&0x03; uct_h=(uct_h<<4)&0xf0; tm=uct_h|((uct_l>>4)&0x0f); if(uct_h&0x80) { display_7leds[0]='-'; tm=~tm+1; } else display_7leds[0]=' ';

2.单总线操作命令序列
典型的单总线命令序列如图8-4所示,每次访问单 总线器件,必须严格遵守这个命令序列,否则,单总 线器件不会响应主机。但是,这个准则对于搜索 ROM命令和报警搜索命令例外,在执行两者中任 何一条命令之后,主机不能执行其后的功能命令, 必须返回,从初始化开始。
根据DS18B20的通讯协议,主机(单 片机)控制DS18B20完成温度转换必须 经过三个步骤:每一次读写之前都要对 DS18B20进行复位操作,复位成功后发 送一条ROM指令,最后发送RAM指令, 这样才能对DS18B20进行预定的操作。
控制器对18B20操作流程
总流程:初始化1-WIRE 总线——>发送ROM 命令——>发送Memory 命令——>提取数据(可以没有) 1.复位:首先我们必须对DS18B20芯片进行复位,复位就是由控制器 (单片机)给DS18B20单总线至少480uS的低电平信号。当18B20接 到此复位信号后则会在15~60uS后回发一个芯片的存在脉冲。 2.存在脉冲:在复位电平结束之后,控制器应该将数据单总线拉高,以 便于在15~60uS后接收存在脉冲,存在脉冲为一个60~240uS的低电 平信号。至此,通信双方已经达成了基本的协议,接下来将会是控制 器与18B20间的数据通信。如果复位低电平的时间不足或是单总线的 电路断路都不会接到存在脉冲,在设计时要注意意外情况的处理。
if(DQ) { b=1; } else {
b=0;
} j=30; while(--j); return b; }
/*读字节*/ uchar rdbyte_ds18b20(void) { uchar i,dat; for(dat=0,i=0;i<8;i++) { dat>>=1; if(rdbit_ds18b20()) dat|=0x80; } return dat; }

单总线的开发使用过程分三步:1)单总线的 硬件连接结构;2)单总线的操作命令序列;3) 单总线的通信协议,总线的操作时序。 1.硬件结构 主机或从机通过一个漏极开路或三态端口连接 至该数据线,这样允许设备在不发送数据时释 放数据总线,以便总线被其它设备所使用。
为了使总线上所有电路的输出能完成“线与” 的功能,连接到总线上的器件的输出级必须为 “开漏”或“开集”的形式。其内部等效电路 如图8-3所示
8.1.1 DS18B20的简介
DALLAS(达拉斯)公司生产的DS18B20温度传感器具有超小的 体积,超低的硬件开消,抗干扰能力强,精度高,附加功能强。 DS18B20的优势是我们学习单片机技术和开发温度相关的小产品的 不二选择。
DS18B20的主要特征:



wenku.baidu.com
������ 全数字温度转换及输出。 ������ 先进的单总线数据通信。 ������ 最高12位分辨率,精度可达土0.5摄氏度。 ������ 12位分辨率时的最大工作周期为750毫秒。 ������ 可选择寄生工作方式。 ������ 检测温度范围为–55°C ~+125°C (–67°F ~+257°F) ������ 内置EEPROM,限温报警功能。 ������ 64位光刻ROM,内置产品序列号,方便多机挂接。 ������ 多样封装形式,适应不同硬件系统。
8.1.2 DS18B20的引脚及内部结构
1 .DS18B20的封装 DS18B20的封装采用TO-92和8-Pin SOIC封装,外形及管脚排列如图 8-1。 DS18B20引脚定义: GND 为电源地。 DQ 为数字信号输入/输出端。 VDD 为外接供电电源输入端 (在寄生电源接线方式时接地)。 NC 空引脚。
(1)读ROM[33h]命令(仅适合于单节点) (2)报警搜索[ECh]命令(仅少数1-wire 器件支持) (3)跳越ROM[CCh]命令(仅适合于单 节点)
4.RAM功能命令 在主机发出ROM命令,以访问某个指定的DS18B20, 接着就可以发出DS18B20支持的某个RAM功能命令。这些 命令允许主机写入或读出DS18B20暂存器、启动温度转换 以及判断从机的供电方式。
总线初始化脉冲时序图如图8-5:
//温度传感器 bit init_ds18b20(void) { uchar j; DQ=1; DQ=0; j=250; while(--j); DQ=1; j=40; while(--j); j=110;
while(DQ!=0) { j--; if(!j) return 0; } j=250; while(--j); return 1; }
//写时序
void wtbyte_ds18b20(uchar wdat) { uchar i,j; for(i=0;i<8;i++) { if(wdat&0x01)//写1时序 { DQ=1; _nop_(); DQ=0; _nop_();_nop_();_nop_(); DQ=1; j=30; while(--j); }


3.单总线数据通讯协议 数字式温度传感器和模拟传感器最大的区别,是将温度信 号直接转化成数字信号,然通过串行通信方式输出。所有 的单总线器件要求采用严格的通信协议,以保证数据的完 整性。该协议定义了几种信号类型:复位脉冲、应答脉冲 序列;写0、写1、和读0、读1。所有这些信号,除了应答 脉冲以外,都由主机发出同步信号。并且发送所有的命令 和数据都是字节的低位在前,这一点与多数串行通信格式 不同(多数为字节的高位在前)。 1)初始化序列——复位和应答脉冲 单总线上的所有通信都是以初始化序列开始。主机通过拉 低单线480us以上,产生复位脉冲,然后释放该线,进入 Rx接收模式。主机释放总线时,4.7K的电阻将单总线拉高, 产生一个上升沿。单线器件DS18B20检测到该上升沿后, 延时15~60us,DS18B20通过拉低总线60~240us来产生 应答脉冲。主机接收到从机的应答脉冲后,说明有单线器 件在线。
相关文档
最新文档