第二章-1-Wire通信协议.ppt_第1页
第二章-1-Wire通信协议.ppt_第2页
第二章-1-Wire通信协议.ppt_第3页
第二章-1-Wire通信协议.ppt_第4页
第二章-1-Wire通信协议.ppt_第5页
免费预览已结束,剩余44页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

时序,ARM(32-BRISC),第二章1Wire通信协议,概述标准模式和高速模式复位脉冲写0时隙写1时隙读时隙强上拉供电时隙(为总线提供额外的电源电流,用于EPROM/EEPROM编程、温度转换、SHA-1计算等),1概述,单总线要求外接一个约5k的上拉电阻;,1概述,单总线的闲置状态为高电平;传输过程需要暂时挂起,且要求传输过程还能够继续的话,则总线必须处于空闲状态;总线保持低电平超过480s,总线上的所有器件将复位;位传输之间的恢复时间没有限制,只要总线在恢复期间处于空闲状态。,2单总线命令序列,主机发起读写命令并控制整个过程。读写命令分三个阶段:初始化ROM命令(跟随需要交换的数据)功能命令(跟随需要交换的数据),2单总线命令序列,每次访问单总线器件,必须严格遵守这个命令序列,如果出现序列混乱,则单总线器件不会响应主机;这个准则对于搜索ROM命令和报警搜索命令例外,在执行两者中任何一条命令之后,主机不能执行其后的功能命令,必须返回至第一步。,3.1初始化序列,主机初始化过程,主机通过拉低单总线至少480s,以产生(Tx)复位脉冲。接着,主机释放总线,并进入接收模式(Rx)。当总线被释放后,5k上拉电阻将单总线拉高。在单总线器件检测到上升沿后,延时15-60s,接着通过拉低总线60-240s,以产生应答脉冲,3.1初始化序列,M,ResetPulse480uS,S0SN,15uST60uS,60uS4T240uS,45uS3T180uS,PresencePulse,Recovery,PullUp,Master,Slave,Legend:,3.2复位和应答脉冲,unsignedcharow_reset(void)unsignedcharpresence;DQ=0;/pullDQlinelowdelay(29);/leaveitlowfor480sDQ=1;/allowlinetoreturnhighdelay(3);/waitforpresencepresence=DQ;/getpresencesignaldelay(25);/waitforendoftimeslotreturn(presence);/presencesignalreturned/presence,4读/写时隙,在写时隙期间,主机向单总线器件写入数据;而在读时隙期间,主机读入来自从机的数据。在每一个时隙,总线只能传输一位数据,4读/写时隙,Write1,Write0,Read1,Read0,15uSTi;/shiftsvalrightispacestemp/writebitintempintodelay(5),4.5读时序,单总线器件仅在主机发出读时隙时,才向主机传输数据,在主机发出读数据命令后,必须马上产生读时隙,以便从机能够传输数据。读时隙至少需要60s,且在两次独立的读时隙之间至少需要1s的恢复时间。每个读时隙都由主机发起,至少拉低总线1s。在主机发起读时隙之后,单总线器件才开始在总线上发送0或1。若从机发送1,则保持总线为高电平;若发送0,则拉低总线。当发送0时,从机在该时隙结束后释放总线,由上拉电阻将总线拉回至空闲高电平状态。从机发出的数据在起始时隙之后,保持有效时间15s,因而,主机在读时隙期间必须释放总线,并且在时隙起始后的15s之内采样总线状态。,4.6读时序,4.7读时序,unsignedcharread_bit(void)unsignedchari;DQ=0;/pullDQlowtostarttimeslotDQ=1;/thenreturnhighfor(i=0;i3;i+);/delay15sfromstartoftimeslotreturn(DQ);/returnvalueofDQline,4.7读时序,unsignedcharread_byte(void)unsignedchari;unsignedcharvalue=0;for(i=0;i8;i+)if(read_bit()value|=0 x01i;/readsbytein,onebyteatatimeandthen/shiftsitleftdelay(6);/waitforrestoftimeslotreturn(value);,5ROM命令,主机检测到应答脉冲后,可以发出ROM命令;ROM命令与各个从机设备的唯一64位ROM代码相关;允许主机在单总线上连接多个从机设备时,指定操作某个从机设备;允许主机能够检测到总线上有多少个从机设备以及其设备类型,或者有没有设备处于报警状态,5ROM命令,从机设备可能支持5种ROM命令(实际情况与具体型号有关);每种命令长度为8位;主机在发出功能命令之前,必须送出合适的ROM命令。如图2所示。下面将简要地介绍各个ROM命令的功能,以及使用在何种情况下,ROM命令的操作流程,5.1ROM命令,搜索ROMF0h;读ROM33h(仅适合于单节点);匹配ROM55h;跳越ROMCCh;报警搜索ECh(仅少数1-wire器件支持);,(1)搜索ROMF0h,当系统初始上电时,主机必须找出总线上所有从机设备的ROM代码,这样主机就能够判断出从机的数目和类型;主机通过重复执行搜索ROM循环(搜索ROM命令跟随着位数据交换),以找出总线上所有的从机设备。如果总线只有一个从机设备,则可以采用读ROM命令来替代搜索ROM命令。在每次执行完搜索ROM循环后,主机必须返回至命令序列的第一步(初始化)。,(2)读ROM33h,仅适用于总线上只有一个从机设备;允许主机直接读出从机的64位ROM代码,而无须执行搜索ROM过程;如果该命令用于多节点系统,则发生数据冲突,因为每个从机设备都会响应该命令。,(3)匹配ROM55h,匹配ROM命令跟随64位ROM代码,允许主机访问多节点系统中某个指定的从机设备。仅当从机完全匹配64位ROM代码时,才会响应主机随后发出的功能命令;其它设备将处于等待复位脉冲状态。,(4)跳越ROMCCh,主机能够采用该命令同时访问总线上的所有从机设备,而无须发出任何ROM代码信息;例如,主机通过在发出跳越ROM命令后跟随转换温度命令44h,就可以同时命令总线上所有的DS18B20开始转换温度,这样大大节省了主机的时间。如果跳越ROM命令跟随的是读暂存器BEh的命令(包括其它读操作命令),则该命令只能应用于单节点系统,否则将由于多个节点都响应该命令而引起数据冲突。,(5)报警搜索ECh,只有那些报警标志置位的从机才响应该命令,其工作方式完全等同于搜索ROM命令。该命令允许主机设备判断那些从机设备发生了报警(如最近的测量温度过高或过低等)。同搜索ROM命令一样,在完成报警搜索循环后,主机必须返回至命令序列的第一步。,6功能命令,在主机发出ROM命令后,发送功能命令;如访问某个指定的DS18B20,接着就可以发出DS18B20支持的某个功能命令。这些命令允许主机写入或读出DS18B20暂存器、启动温度转换以及判断从机的供电方式。并在图3流程图中作了说明,表1、DS18B20功能命令集,1.在温度转换和复制暂存器数据至EEPROM期间,主机必须在单总线上允许强上拉。并且在此期间,总线上不能进行其它数据传输;2通过发出复位脉冲,主机能够在任何时候中断数据传输;3在复位脉冲发出前,必须写入全部的三个字节,功能命令流程图,7ROM搜索,ROM搜索过程的三步循环程序:读一位读该位的补码写入一个期望的数据位总线主机在ROM的每一位上都重复这三步循环程序;当完成某个器件后,主机就能够知晓该器件的ROM信息;剩下的设备数量及其ROM代码通过相同的过程即可获得。,7ROM搜索过程,四个不同的器件被连接至同一条总线上:ROM100110101ROM210101010ROM311110101ROM400010001,(1)初始化,单总线上的所有传输过程都是以初始化开始的;初始化过程由主机发出的复位脉冲和从机响应的应答脉冲组成;应答脉冲使主机知道,总线上有从机设备,且准备就绪。,(2)发送ROM命令,主机在总线上发出ROM搜索命令ROMF0h,(3)执行三步循环程序,从总线上准备读入一个数据位;ROM100110101ROM210101010ROM311110101ROM400010001总线上读到的是0(逻辑“与”)主机开始读另一位(第一位的补码);总线上读到的是0(逻辑“与”)总线上有些器件的ROM代码第一位为0,有些则为1,(3)执行三步循环程序,两次读到的数据位具有以下含义:00在该位处,存在设备冲突;01在该位处,所有器件为0;10在该位处,所有器件为1;11单总线不存在任何设备。,(3)执行三步循环程序,主机写入0,从而禁止了ROM2和ROM3响应余下的搜索命令,仅在总线上留下了ROM1和ROM4ROM100110101ROM210101010ROM311110101ROM400010001,(4)搜索第二位,主机再执行两次读操作,依次收到0和1,这表明ROM1和ROM4在ROM代码的第二位都是0;ROM100110101ROM210101010ROM311110101ROM400010001接着主机写入0,在总线上继续保持ROM1和ROM4。,(5)搜索第三位,主机又执行两次读操作,收到两个0,表明所连接的设备的ROM代码在第三位既有0,也有1;ROM100110101ROM210101010ROM311110101ROM400010001主机再次写入0,从而禁止了ROM1响应余下的搜索命令,仅在总线上留下了ROM2。,(6)搜索第四位,主机读完ROM4余下的ROM数据位。这样就完成了第一次搜索,并找到了位于总线上的第一个设备。,(7)搜索其他器件,重复执行第1至第7步,开始新一轮的ROM搜索命令。主机写入1,使ROM4离线,仅在总线上留下ROM1;主机读完ROM1余下的ROM数据,这样就完成了第二次的ROM搜索,找到了第二个ROM代码。重复执行第1至第3步,开始新一轮的ROM搜索命令;主机写入1,这次禁止了ROM1和ROM4响应余下的搜索命令,仅在总线上留下了ROM2和ROM3ROM100110101ROM210101010ROM311110101ROM400010001,8搜索ROM时间,每次搜索ROM操作,主机只能找到某一个单总线器件的ROM代码,所需要的最短时间为:960s+(8+364)61s=13.16ms所以,主机能够在1秒之内读出75个单总线的ROM代码。,利用串口实现1-WIRE通讯,复位,intResetOneWire(void)/definetheresponseoftheone-wiredeviceunsignedcharucResponse;intret;ret=0;/settheUARTBaud:9600,8bits,noparity,1stopBAUT=9600;Comm_Init(COM,BAUT,MODE_NO,N);/initCOM/Transmittingan0 xF0fromuartformstheproperResetpulseComm_Send_Char(COM,0 xF0);/ChecktheUARTbuffer,ifnodevicispresent,thereceivevalue/willequalthetransmitvalue;otherwisethereceivevaluecanvary./Asingleslavedevicerunningatminimuminternaltimingwillchange/theresponseto0 xE0,andthemaximuminternaltimingwillchangethe/theresponseto0 x90ucResponse=Comm_Rec_Char(COM);#if0/TEST_ONEWIREprintf(Resetonewiren);printf(Resetvalue=0 x%xn,ucResponse);#endifif(ucResponse!=0 xF0)ret=1;/devicesonlinearepresentelseret=0;/nodeviceispresent/settheUARTBaud:115200,8bits,noparity,1stopBAUT=115200;Comm_Init(COM,BAUT,MODE_NO,N);/initCOMreturnret;,读一位,intOW_ReadBit(void)unsignedcharucResponse;/transimit0 xFFfirstComm_Send_Char(COM,0 xFF);/readtheUARTbufferucResponse=Comm_Rec_Char(COM);if(ucResponse=0 xff)return1;/1isreadelsereturn0;/0isread,读一个字节,unsignedcharOW_ReadByte(void)/definethereadvalueunsignedcharucResponse;unsignedcharucValue;inti;ucValue=0;for(i=0;i8;i+)/transimit0 xFFfirstComm_Send_Char(COM,0 xFF);/readtheUARTbufferucResponse=Comm_Rec_Char(COM);if(u

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论