DS1820单总线(1-wire)数字温度传感器
(7)读暂存存储器的温度数据。
2 控制器设计
2.1 控制器结构
控制器结构如图3所示,控制器由4部分组成,即逻辑控制、单总线时序控制、数据缓存和计数器。逻辑控制部分用于实现与CPU的通信,D0~D7为8位双向数据线,EN为启动信号,下降沿有效。A1、A0为地址信号,其组合决定控制器的工作状态。A1A0=00,控制器对DS1820执行复位操作;A1A0=01,控制器执行写入操作;A1A0=10,控制器执行读出操作。控制器由外部提供200 kHz的时钟信号CLK,产生5 μs的计数周期,控制器以5 μs为一个时间片形成DS1820的读写时序。计数器的计数输出值控制读写周期。单总线时序控制部分的主要功能是产生单总线的读写时序,并向DS1820输出控制命令,读出DS1820测得的数字温度值及其他输出信息。

2.2 读写时序的实现
DS1820要求引脚驱动必须是漏极开路引脚,控制器用三态门与DS1820连接,如图4所示。其中ctrl为三态门控制信号,当ctrl=0时输出信号,ctrl=1时输入信号。控制器采用5 μs作为基本计时单位,可以保证DS1820时序关系有一定的余地。

写字节部分VHDL代码:
PROCESS(cq)—输出1 bit
SIGNAL cout:STD_LOGIC_VECTOR(2 DOWNTO 0);
VARIABLE di:STD_LOGIC;
BEGIN
ctrl=‘0’;
IF(cq>=“0000” AND cq=“0010”)THEN
di:=‘0’;——拉低输出电位10 ms
ELSIF(cq>“0010”AND cq“1110”)THEN
di:=rq; ——取发送移位寄存器的输出位
ELSIF(cq>=“1110”)THEN
di:=‘1’;cout=cout + 1;
END IF;
dqo=di;
END PROCESS;

评论