当前位置: 首页 > article >正文

I-Wire单总线通信

一、单总线介绍
    1-Wire单总线是由Maxim公司的子公司Dallas开发的一种专有技术,与SPI、I2C等标准串行通信方式不同,它采用单根信号线同时传输时钟和数据,支持双向通信。该技术具有节省I/O口线资源、结构简单、成本低廉、便于总线扩展和维护等优点。1-Wire总线适用于单个主机系统,能够控制一个或多个从机设备。每个符合I-Wire协议的从芯片都有一个唯一的64位地址,包括48位的序列号、8位的家族代码和8位的CRC代码,主芯片通过这64位地址对各个从芯片进行寻址。单总线协议对时序要求严格,包括复位、应答、写1位和读1位等时序。

二、DS18B20温度传感器
    DS18B20是使用1-Wire总线协议的温度传感器,通过一个控制信号实现总线通信。控制线需要一个弱上拉电阻,所有设备通过三态或漏极端口连接到总线。微处理器(主设备)使用每个设备唯一的64位码来标识和寻址总线上的设备。DS18B20还可以在没有外部电源的情况下运行,通过1-Wire上拉电阻和内部电容器(CPP)实现寄生电源供电。温度传感器的分辨率可配置为9、10、11或12位,分别对应0.5℃、0.25℃、0.125℃和0.0625℃的增量,默认分辨率为12位。温度测量通过发出转换
                                                                     T44h
命令启动,结果存储在2字节的温度寄存器中。

三、温度测量
    温度数据在温度寄存器中存储为16位符号扩展的二进制补码。符号位(S)指示温度是正的还是负的:对于正数S=0,对于负数S=1。如果DS18B20配置为12位分辨率,温度寄存器中的所有位都将包含有效数据。
    温度数据存储为16位符号扩展的二进制补码,符号位表示温度的正负。温度寄存器的上电复位值为+85℃。对于不同的分辨率,温度寄存器的部分位可能未定义。


四、DS18B20事务序列
    ·Step 1. Initialization(初始化)
    ·Step 2. ROM Command(ROM命令)
    ·Step 3. DS18B20 Function Command(功能命令)
    ·初始化:所有1-Wire总线事务从初始化序列开始,包括主设备发送复位脉冲和从设备发送存在脉冲。
    ·ROM命令:主设备检测到存在脉冲后,可以发出ROM命令,操作从设备的64位ROM码。
    ·功能命令:主设备使用ROM命令寻址特定的DS18B20后,可以发出功能命令,如启动温度转换、读取暂存器等。
五、DS18B20操作时序
    1.初始化过程:主设备发送复位脉冲,从设备响应存在脉冲。

    2.写入时间槽:包括Write1和Write0两种类型,分别用于写入逻辑1和逻辑0。
        ·要生成一个Write 1时间槽,在将1-Wire总线拉低之后,总线主控器必须在15微秒内释放1-Wire总线。当总线被释放时,5k的上拉电阻会将总线拉高。
        ·要生成一个Write 0时间槽,在将1-Wire总线拉低之后,总线主控器必须在整个时间槽内(至少60微秒)继续将总线保持在低电平状态


    3.读取时间槽:主设备生成读取时间槽,DS18B20在总线上传输数据。
        ·DS18B20只有在主控机发出读取时间槽时才能向主控机传输数据。因此,主控机必须在发出读取暂存器[BEh]或读取电源[B4h]命令后立即生成读取时间槽,以便DS18B20能够提供所请求的数据。此外,主控机可以在发出转换T[44h]或召回E2[B8h]命令后生成读取时间槽,以找出操作的状态,如DS18B20功能命令部分所述。
        ·所有读取时间槽的持续时间必须至少为60us,时间槽之间的恢复时间至少为1us。读取时间槽由主设备将1-Wire总线拉低至少1us,然后释放总线启动。
        ·当主机启动读取时间槽后,DS18B20将开始在总线上传输1或0。DS18B20通过将总线保持在高电平来传输1,并通过将总线拉低来传输0。当传输0时,DS18B20将在时间槽结束时释放总线,总线将被上拉电阻拉回其高空闲状态。DS18B20的输出数据在启动读取时间槽的下降沿后对15us有。因此,主机必须释放总线,然后从时间槽开始在15us内对总线状态进行采样。

    六、GPIO控制器相关操作函数接口
        ·管脚初始化:依赖于FUSE设置,当TAMPERPIN用作GPIO时,ALT5模式有效。
        ·管脚输入输出方向控制。
        ·管脚输出电平控制。
        ·读取管脚的输入电平。
    七、DS18B20相关操作函数接口
        ·初始化探测DS18B20设备。
        ·向DS18B20写入一个位。
        ·从DS18B20读取一个位。
      八、读取DS18B20的ID和采集的温度
        ·读取ID:通过在线CRC验证读取的ID是否正确。
        ·采集温度。


http://www.kler.cn/a/532130.html

相关文章:

  • 54【ip+端口+根目录通信】
  • 自学习记录-编程语言的特点(持续记录)
  • C++哈希表深度解析:从原理到实现,全面掌握高效键值对存储
  • 如何处理 Typecho Joe 主题被抄袭或盗版的问题
  • 【Pytorch和Keras】使用transformer库进行图像分类
  • vim交换文件的作用
  • 蓝桥杯备考:前缀和算法之最大子段和
  • Haskell语言的测试开发
  • 登录认证(6):拦截器:Interceptor
  • 进程间的数据桥梁:`multiprocessing.Queue` 的应用
  • MATLAB中extractBefore函数用法
  • 解锁C/C++:链表数据结构的奇幻之旅
  • Docker入门篇(Docker基础概念与Linux安装教程)
  • 课题推荐——基于自适应滤波技术的多传感器融合在无人机组合导航中的应用研究
  • 大模型系列21-AI聊天机器人
  • 生成式AI安全最佳实践 - 抵御OWASP Top 10攻击 (下)
  • TFTP 介绍
  • Rust 语言入门
  • Linux系统编程:环境变量
  • Qt中的UIC、MOC、RCC宏定义说明
  • 半导体器件与物理篇5 mosfet及相关器件
  • 狗狗睡觉打呼噜正常吗?
  • 《海丰县蔡氏简介》--海丰县蔡姓宗支源流及始迁祖概述--海丰县各乡镇简介
  • VM虚拟机下macOS中的无法打开身份不明开发者的文件
  • 图的基本术语——非八股文
  • excel实用问题:提取文字当中的数字进行运算