如圖4-3所示,程序的啟動流程為:
1. 啟動傳輸時序:
當SCK 時鐘高電平時DATA 翻轉(zhuǎn)為低電平,緊接著SCK 變?yōu)榈碗娖剑S后是在SCK 時鐘高電平時DATA 翻轉(zhuǎn)為高電平。
2.測量時序及數(shù)據(jù)讀取時序:發(fā)布一組測量命令后,控制器要等待測量結(jié)束。這個過程需要大約55ms,對應(yīng)12bit 測量。SHTxx 通過下拉DATA 至低電平并進入空閑模式,表示測量的結(jié)束??刂破髟谠俅斡|發(fā)SCK 時鐘前,必須等待這個“數(shù)據(jù)備妥”信號來讀出數(shù)據(jù)。檢測數(shù)據(jù)可以先被存儲,這樣控制器可以繼續(xù)執(zhí)行其它任務(wù)在需要時再讀出數(shù)據(jù)。
4.2.2 接口模塊編程實現(xiàn)
A.接口定義:單向的 SCK,COMMAND 的 STD_LOGI C 定義,以及 DATA 串行雙向接口的定義,其中 COMMAND 為 8 位命令位(00 0 地址位+5 位命令位)
B.由于流程為順序時序則將整個流程用 PROCESS.
C. DATA 三態(tài)門用于數(shù)據(jù)的讀取。DATA 在SCK 時鐘下降沿之后改變狀態(tài),并僅在SCK 時鐘上升沿有效。數(shù)據(jù)傳輸期間,在SCK 時鐘高電平時,DATA必須保持穩(wěn)定。為避免信號沖突,微處理器應(yīng)驅(qū)動DATA 在低電平。即:
data1 《= (others =》 ‘0’);
IF(sck‘event AND sck=’1‘)THEN
data1 《= d; --Data三態(tài)門
END IF;
D. 啟動傳輸:當SCK 時鐘高電平時DATA 翻轉(zhuǎn)為低電平,緊接著SCK 變?yōu)榈?span style="text-indent: 2em; font-size: 12px;">電平,隨后是在SCK 時鐘高電平時DATA 翻轉(zhuǎn)為高電平。即:
WAIT UNTIL sck=’1‘;
data1 《= NOT d;
WAIT UNTIL sck=’0‘
data1 《= d;
E.測量時序:
c 《= ’command‘;
WAIT ON sck UNTIL (sck’event AND sck = ‘1’) FOR 55 ms; --測量數(shù)據(jù)
F.數(shù)據(jù)傳輸:
IF(c=‘00000011’)
a《=data; --數(shù)據(jù)傳輸
ELSIF(c=‘00000101’)
b《=data;
END IF;
G.數(shù)據(jù)存儲:該程序是用于傳感器對測量完妥的數(shù)據(jù)進行暫時的存儲,以備控制器完成其他任務(wù)或進程后,對數(shù)據(jù)的完整接收。
entity Dataout is
Port ( sck : in STD_LOGIC;
rst : in STD_LOGIC;
serialin : in STD_LOGIC;
parallelout : out STD_LOGIC_vector(7 downto 0));
end Dataout;
architecture a of Dataout is
signal para : std_logic_vector(7 downto 0);
begi n
process (sck)
variable i : integer range 0 to 7;
begin
if rst=‘1’ then i:=0;
elsif rising_edge(sck) then
if i《7 then
para 《= para(6 downto 0) & serialin;
i:=i+1;
else
parallelout《=para;
i:=i+1;
end if;
else null;
end if;
end process;
end;
4.3 調(diào)試結(jié)果
A.SHT2x 程序進行調(diào)試后出現(xiàn)以下 3 個問題:
ERROR:HDLParsers:164 - “D:/?。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。?!1/sht2x.vhd” Line 57.
unexpected IDENTIFIER, expecting SEMICOLON
parse error,
ERROR:HDLParsers:1015
statement unsupported.
“D:/!?。。。。。。。。。。。。。。。。。。。。。。。。。。。。。?!1/sht2x.vhd”
Li ne
61.
Wait
for
ERROR:HDLParsers:164 - “D:/?。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。?!1/sht2x.vhd” Line 63.
unexpected TICK
parse error,
主要是有關(guān)數(shù)據(jù)類型的問題;
B.Dataout 程序經(jīng)調(diào)試后運行成功。
電子發(fā)燒友App

















評論