第二章 1-Wire通信协议.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第二章 1-Wire通信协议

时序 第二章 1-Wire通信协议 概述 标准模式和高速模式 复位脉冲 写0时隙 写1时隙 读时隙 强上拉供电时隙(为总线提供额外的电源电流,用于EPROM/EEPROM编程、温度转换、SHA-1计算等) 1 概述 单总线要求外接一个约5k的上拉电阻 ; 1 概述 单总线的闲置状态为高电平 ; 传输过程需要暂时挂起,且要求传输过程还能够继续的话,则总线必须处于空闲状态 ; 总线保持低电平超过480μs,总线上的所有器件将复位; 位传输之间的恢复时间没有限制,只要总线在恢复期间处于空闲状态。 2 单总线命令序列 主机发起读写命令并控制整个过程。 读写命令分三个阶段: 初始化 ROM命令(跟随需要交换的数据) 功能命令(跟随需要交换的数据) 2 单总线命令序列 每次访问单总线器件,必须严格遵守这个命令序列,如果出现序列混乱,则单总线器件不会响应主机; 这个准则对于搜索ROM命令和报警搜索命令例外,在执行两者中任何一条命令之后,主机不能执行其后的功能命令,必须返回至第一步。 3.1 初始化序列 主机初始化过程,主机通过拉低单总线至少480μs,以产生(Tx)复位脉冲。接着,主机释放总线,并进入接收模式(Rx)。 当总线被释放后,5k上拉电阻将单总线拉高。在单总线器件检测到上升沿后,延时15-60μs,接着通过拉低总线60-240μs,以产生应答脉冲 3.1 初始化序列 3.2 复位和应答脉冲 unsigned char ow_reset(void) { unsigned char presence; DQ = 0; //pull DQ line low delay(29); // leave it low for 480μs DQ = 1; // allow line to return high delay(3); // wait for presence presence = DQ; // get presence signal delay(25); // wait for end of timeslot return(presence); // presence signal returned } // presence 4 读/写时隙 在写时隙期间,主机向单总线器件写入数据;而在读时隙期间,主机读入来自从机的数据。在每一个时隙,总线只能传输一位数据 4 读/写时隙 4.1 写时隙 存在两种写时隙:“写1”和“写0”。 主机采用写1时隙向从机写入1,而采用写0时隙向从机写入0。 写时隙至少需要60μs,且在两次独立的写时隙之间至少需要1μs的恢复时间。 产生写1时隙的方式:主机在拉低总线后,接着必须在15μs之内释放总线,由5k上拉电阻将总线拉至高电平; 而产生写0时隙的方式:在主机拉低总线后,只需在整个时隙期间保持低电平即可(至少60μs)。 在写时隙起始后15-60μs期间,单总线器件采样总线电平状态。如果在此期间采样为高电平,则逻辑1被写入该器件;如果为0,则写入逻辑0 4.2 写时序 4.3 写时序 void write_bit(char bitval) { DQ = 0; // pull DQ low to start timeslot if(bitval==1) DQ =1; // return DQ high if write 1 delay(5);// hold value for remainder of timeslot DQ = 1; }// Delay provides 16μs per loop, plus 24μs Therefore, delay(5) = 104μs 4.4 写时序 void write_byte(char val) { unsigned char i; unsigned char temp; for (i = 0; i 8; i++) // writes byte, one bit at a time { temp = vali; // shifts val right ‘i’ spaces temp = 0x01; // copy that bit to temp write_bit(temp); // write bit in temp into } delay(5) } 4.5 读时序 单总线器件仅在主机发出读时隙时,才向主机传输数据,在主机发出读数据命令后,必须马上产生读时隙,以便从机能够传输数据。 读时隙至少需要60μs,且在两次独立的读时隙之间至少需要1μs的恢复时间。 每个读时隙都由主机发起,至少拉低总线1μs。在主机发起读时隙之后,单总线器件才开始在总线上发送0或1。 若从机发送1,则保持总线为高电平;若发送0,则拉低总线。当发送0时,

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档