• 远距离串口服务器( 适配器)UART 转 1-Wire 应用


     

    PS304 有 4 个通道的 1Wire 接口,每个接口上可同时连接多个 1Wire 芯片(或设备)。具有 64 位 ID 搜索功能;具有远距离线路的自适应功能。

    ID 搜索与线缆适应检测
    向模块发送[WIRE1][FIND],模块返回搜索线路上挂载的所有 1Wire 芯片 ID 并输出,每个 ID占用 8 字节。举例:搜索通道 1 上所有 1Wire 芯片,模块返回信息如下:S2SREC 28 AA 32 B9 21 20 03 94 2D 85 00 10 20 00 00 7A共返回 16 个字节数据,每个 ID8 字节,故通道 1 上有两个 1Wire 芯片
    芯片 1ID: 28 AA 32 B9 21 20 03 94
    芯片 2ID: 2D 85 00 10 20 00 00 7A

    在搜索过程中,模块会检测线缆参数,自动完成线缆适应校正。当对 1Wire 芯片操作发生错误时,或者改变线路长度,或者更换线缆时,应重新进行上述搜索操作,以获得实时的芯片数量和芯片 ID 以及模块对线缆性能的自适应。注:一般而言,线缆越长时搜索过程消耗的时间越长。

    DS18B20 温度传感器
    DS18B20 是 1Wire 接口的温度传感器,可实现 12 位精度的温度转换和输出功能。 使用方法简要说明如下。
    (1)开始一次温度转换
    向芯片发送 0xCC 0x44, S2S 协议为: [WIRE1][START][WT2H]CC 44
    (2)读取温度
    向芯片发送 0xCC 0xBE,然后读取 2 个字节。S2S 协议为: [WIRE][START][WT2H]CC BE[RD2N]

    模块返回: S2SREC C8 010x01C8 转换为 10 进制为 456,根据 DS18B20 数据手册说明,这个数*0.0625=28.5℃。
    (3)读取温度(使用芯片唯一 ID)
    [WIRE][START][WT10H]55 28 AA 32 B9 21 20 03 94 BE[RD2N](下划线部分为已知的芯片 ID)
    模块返回: S2SREC C8 01
    0x01C8 转换为 10 进制为 456,根据 DS18B20 数据手册说明,这个数*0.0625=28.5℃。

    DS2431 存储芯片
    DS2431 是一款 1024 位 1-Wire EEPROM 芯片,由 四个存储器页组成,每页 256 位。 数据先被写入一个 8 字节暂存器中,经校验无误后复制到 EEPROM 存储器。其特点在于,四个存储器页相互独立,可以单独设置写保护或 EPROM 仿真模式。对 2431 芯片的读写访问必须以 8 字节为单位并且起始地址必须为 8 的倍数。
    (1)读取 EEPROM
    向芯片发送 0xCC 0xF0+两字节起始地址,然后读取 8 字节数据。
    例:读取 EEPROM 的地址 0~8, [WIRE][START][WT4H]CC F0 00 00[RD8N]
    模块返回: S2SREC 31 32 33 34 35 36 37 38
    (2)写 EEPROM
    2431 的写操作分为写暂存器和暂存器同步到 EEPROM 两个大的步骤。写暂存器:向芯片发送 0xCC 0x0F+两字节起始地址+8 字节数据。[WIRE][START][WT4H]CC 0F 00 00[WT8H]31 32 33 34 35 36 37 38[RD2N]
    模块返回: S2SREC 52 D7(0x52D7 是对本次数据发送的 CRC 校验数据)
    读取暂存器:向芯片发送 0xCC 0xAA,读 13 字节(3 个寄存器+8 字节暂存器数据+2 字节 CRC)
    [WIRE][START][WT2H]CC AA[RD3N][DELAY1][RD10N]
    模块返回: S2SREC 00 00 07 31 32 33 34 35 36 37 38 66 B2
    暂存器同步到 EEPROM:向芯片发送 0xCC 0x55+两字节起始地址+0x07
    模块返回: S2SREC AA(0xAA 表示同步成功)

  • 相关阅读:
    Design Compiler工具学习笔记(4)
    Chapter 4 k-近邻算法与朴素贝叶斯
    Flutter学习2-dart学习
    FastDFS模拟场景
    界面控件DevExtreme中文使用指南——如何构建 & 应用模板
    python向列表中添加元素
    深度强化学习之gym扫地机器人环境的搭建(持续更新算法,附源码,python实现)
    Java开发学习(二十五)----使用PostMan完成不同类型参数传递
    JS获取项目Url请求头Path--js中${path}
    C++对象内存故事, 一个对象是如何由子对象来构成的?
  • 原文地址:https://blog.csdn.net/duxi222333/article/details/125598769