DS1820單總線(xiàn)(1-wire)數字溫度傳感器
(7)讀暫存存儲器的溫度數據。
2 控制器設計
2.1 控制器結構
控制器結構如圖3所示,控制器由4部分組成,即邏輯控制、單總線(xiàn)時(shí)序控制、數據緩存和計數器。邏輯控制部分用于實(shí)現與CPU的通信,D0~D7為8位雙向數據線(xiàn),EN為啟動(dòng)信號,下降沿有效。A1、A0為地址信號,其組合決定控制器的工作狀態(tài)。A1A0=00,控制器對DS1820執行復位操作;A1A0=01,控制器執行寫(xiě)入操作;A1A0=10,控制器執行讀出操作??刂破饔赏獠刻峁?00 kHz的時(shí)鐘信號CLK,產(chǎn)生5 μs的計數周期,控制器以5 μs為一個(gè)時(shí)間片形成DS1820的讀寫(xiě)時(shí)序。計數器的計數輸出值控制讀寫(xiě)周期。單總線(xiàn)時(shí)序控制部分的主要功能是產(chǎn)生單總線(xiàn)的讀寫(xiě)時(shí)序,并向DS1820輸出控制命令,讀出DS1820測得的數字溫度值及其他輸出信息。

2.2 讀寫(xiě)時(shí)序的實(shí)現
DS1820要求引腳驅動(dòng)必須是漏極開(kāi)路引腳,控制器用三態(tài)門(mén)與DS1820連接,如圖4所示。其中ctrl為三態(tài)門(mén)控制信號,當ctrl=0時(shí)輸出信號,ctrl=1時(shí)輸入信號??刂破鞑捎? μs作為基本計時(shí)單位,可以保證DS1820時(shí)序關(guān)系有一定的余地。

寫(xiě)字節部分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; ——取發(fā)送移位寄存器的輸出位
ELSIF(cq>=“1110”)THEN
di:=‘1’;cout=cout + 1;
END IF;
dqo=di;
END PROCESS;

評論