ONE-WIRE
一根通信线:DQ
通讯方式:异步,半双工
单总线只需要一根通信线即可实现数据的双向传输,当采用寄生供电时,还可以省去设备的VDD线路,此时,供电加通信只需要DQ和GND两根线。
电路规范
时序结构
总线空闲时为高电平
中间弧线意为弱上拉(上拉能力较弱,若为强上拉,则为一条直线)
*单总线时序结构不允许中途有中断,其工作无法停止,一旦中断,则时间引起冲突
注意:从机读取电平前的30us包括主机之前拉低总线的1~15us
主机读取数据的时间较短(在15us末尾)
主机将总线拉低后释放然后读取,若总线未回归高电平仍为低电平则可认为从机将其拉低,想要发送0,主机接收0;若释放后总线回归高电平,则可认为从机想要发送1,主机接收1。
DS18B20
DS18B20是一种常见的数字温度传感器,其控制命令和数据都是以数字信号的方式输入输出。
测温范围:-55~+125
通信接口:1-Wire(单总线)
其他特征:可形成总线结构、内置温度报警功能、可寄生供电
内部结构框图:
4.7K是一个上拉电阻,组成一个开漏输出结构
有外部电源供电:
通过VDD外部电源供电,电流从下方二极管经过,走中下两条路,下路中POWER SUPPLY SENSE感应是否有VDD存在,从而调节内部结构,达到省电目的
无外部电源供电(VDD必须接地 误差较大):
PARASITE POWER CIRCUIT 寄生电源电路,通过Cpp电容放电来供电,
当数据线DQ为高的时候由其为设备供电。总线拉高的时候为内部电容(Cpp)充电,当总线拉低时由该电容向设备供电。
电容的能量也能来自VDD。
TEMPERATURE SENSOR:将数据放在SCRTACHPAD(一个ROM)
ALARM HIGH TRIGGER:报警高触发寄存器,存储温度上限阈值(掉电不丢失)
ALARM LOW TRIGGER:报警低触发寄存器,存储温度下限阈值
CONFIGURATION REGISTER:配置寄存器,可以设置分辨率,分辨率降低,温度转化速度可以提升
CRC:校验码,判断是否数据输入错误
MATCH ROM:发送从机的设备地址进行读写操作
SKIP ROM:跳过MEMORY CONTROL LOGIC,直接读写数据(只有一个从机时可用,不然多个从机同时接收发送数据容易造成混乱)
CONVERT:温度变换(将新的温度放到暂存器里,更新温度显示)
WRITE SCRATCHPAD:将数据写到图54暂存器里Byte234中
READ SCRATCHPAD:依次读取Byte0~8,本节只需前两个字节即可读取温度
COPY SCRATCHPAD:将暂存器Byte234复制到E2PROM
RECALL E2: 将E2PROM Byte234复制到暂存器中
READ POWER SUPPLY:读取供电方式,如果是寄存供电后续需要强上拉提供电流
图62
上面是低八位,下面是高八位,将高八位移到低八位前面,组成16位数据。前五位BIT15-11代表温度的正负(正温度是负温度的补码),后四位BIT3-BIT0是温度的小数部分(BIT3=1,则代表0.5;BIT2=1,则代表0.25;BIT1=1,则代表0.125;BIT0=1,则代表0.0625。以二分的规律变化)