单总线通信,由于具有硬件设计简单,外围器件少,占用MCU引脚资源少,软件开发相对简单,多个传感器可以共用同一条通信总线,实现分布式检测等优点。很多的温度传感器、湿度传感器等,都采用了这种通信方式。本文以敏源传感的单线数字温度传感器MY18E20为例,探讨和说明这类传感器在使用时的软硬件设计问题,供读者参考。 单总线通讯方式,主控MCU和传感器之间,通过一根控制信号线实现控制和数据的双向传输。总线需要搭配一个弱上拉电阻,这样所有的器件都通过三态或者开漏极端口(以MY18E20为例,就是其DQ引脚)连接到总线上。在这个总线系统中,单片机(主机)通过每个器件的唯一 64 位编码识别并寻址总线上的器件。因为每个器件都有唯一的编码,理论上挂在总线上并可以被寻址的设备数量是无限的(实际受线长及分布电容的影响)。下图一、二分别是是主控MCU(微控制器)与MY18E20的硬件内部结构及连接图: 图一:主控MCU(微控制器)与MY18E20的硬件通信N内部结构图
图二:主控MCU(微控制器)与MY18E20的硬件连接图
由于多个传感器可以共用一条总线,因此主控MCU和从机传感器之间的通信规则,是非常重要和关键的。主机微控制器通过使用“时隙”实现与温度传感芯片的通信,“时隙”允许数据通过单总线传输。每个通信周期都以微控制器的复位脉冲开始,接着是温度传感芯片的存在脉冲,如图三所示。
图三:复位脉冲和存在脉冲
当主机微控制器将单总线从逻辑高电平(无效)拉至逻辑低电平时,将启动写入时隙。所有写时隙的持续时间必须为60μs至130μs,周期之间的最短恢复时间为1μs。写入“0”并写入“1”时隙如图3所示。在写入“0”时隙期间,主机微控制器在时隙的持续时间内将线路拉低。但是,在写入“1”时隙期间,微控制器将线路拉低,然后在时隙开始后15μs内释放线路。
图四:主控MCU写时隙
当主机微控制器将总线拉低1μs然后将其释放时,将启动读时隙,以便温度传感芯片可以控制线路并显示有效数据(高或低)。所有读取时隙的持续时间必须为60μs至130μs,并且周期之间的恢复时间至少为1μs(参见下图五)。
图五:主控MCU读时隙
结语:本文只是通过以MY18E20为例,介绍单总线传感器在实际应用中,硬件设计和通讯时序的相关问题。明白了其实现原理,其他的就可以触类旁通,供读者参考。