基于DS18B20與TMS320LF2407A的測溫系統(tǒng)
前 言
本文引用地址:http://2s4d.com/article/195524.htmDS18B2普遍都是和單片機配合使用,很少有關(guān)于DSP與DS18B20的連接的接口報道,所以此文詳細(xì)介紹了TMS320LF2407與 DS18B20的連接方法,并且很詳細(xì)的介紹了如何用C語言完成精確的軟件延時,從而完成DS18B20與TMS320LF2407之間的基于單線總線協(xié)議的數(shù)據(jù)通訊。
1 DS18B20的時序
1. 1 復(fù)位時序
復(fù)位使用DS18B20時,首先需將其復(fù)位,然后才能執(zhí)行其它命令。復(fù)位時,主機將數(shù)據(jù)線拉為低電平并保持480us~960us,然后釋放數(shù)據(jù)線,再由上拉電阻將數(shù)據(jù)線拉高15~60us,等待DS18B20發(fā)出存在脈沖,存在脈沖有效時間為60~240us,這樣,就完成了復(fù)位操作。
1.2 寫時序
在主機對DS18B20寫數(shù)據(jù)時,先將數(shù)據(jù)線置為高電平,再變?yōu)榈碗娖?,該低電平?yīng)大于1us。在數(shù)據(jù)線變?yōu)榈碗娖胶?5us內(nèi),根據(jù)寫“1”或?qū)憽?” 使數(shù)據(jù)線變高或繼續(xù)為低。DS18B20將在數(shù)據(jù)線變成低電平后15us~60us內(nèi)對數(shù)據(jù)線進(jìn)行采樣。要求寫入DS18B20的數(shù)據(jù)持續(xù)時間應(yīng)大于 60us而小于120us,兩次寫數(shù)據(jù)之間的時間間隔應(yīng)大于1us。
1.3 讀時序
讀時隙當(dāng)主機從DS18B20讀數(shù)據(jù)時,主機先將數(shù)據(jù)線置為高電平,再變?yōu)榈碗娖?,該低電平?yīng)大于1us,然后釋放數(shù)據(jù)線,使其變?yōu)楦唠娖?。DS18B20在數(shù)據(jù)線從高電平變?yōu)榈碗娖降?5us內(nèi)將數(shù)據(jù)送到數(shù)據(jù)線上。主機可在15us后讀取數(shù)據(jù)線.。
2 TMS320LF2407與DS18B20的連接
DS18B20有三個引腳。其與TMS320LF2407A的接線圖如下。VDD管腳接5V電壓給傳感器供電。DQ管腳為數(shù)據(jù)線,與 TMS320LF2407A的IOPA6連接的同時,還要接一個4.7K的上拉電阻,并接到5V的電源上,使數(shù)據(jù)線在空閑狀態(tài)下能自動上拉為高電平。 GND管腳接地。
3 軟件設(shè)計
3.1 精確的軟件定時的實現(xiàn)
眾所周知,TMS320LF2407的內(nèi)核屬于C2000系列的處理器,處理速度達(dá)到30MIPs,也就是每條指令所花的時間理論上只有33ns。但是實際情況是,由于DSP外部電路的數(shù)據(jù)處理速度和數(shù)據(jù)調(diào)用等因素,往往處理速度達(dá)不到這個數(shù)量級。那怎樣測出每條指令的處理時間從而計算出軟件延時程序的精確時間呢?計算方法如下:
1、延時程序的C語言代碼為:
for(loopindex=0;loopindex
其中l(wèi)oopindex 為unsigned int,無符號整形數(shù)值, N為常量,根據(jù)所要求的延時時間,計算得出。具體算法在下面給出。
2、這個for語句在CCS中的編譯器編譯后所產(chǎn)生的匯編語言為:
LACL #0h
SACL *, 0
LACL *
SUB N(計算得到的循環(huán)次數(shù))
BCND 轉(zhuǎn)移的地址,GEQ
LACC *, 0
ADD #1h
SACL *, 0
LACL *
SUB N(計算得到的循環(huán)次數(shù))
BCND 轉(zhuǎn)移的地址,LT
評論