<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于DS18B20與TMS320LF2407A的溫度測量系統

基于DS18B20與TMS320LF2407A的溫度測量系統

作者: 時(shí)間:2012-07-07 來(lái)源:網(wǎng)絡(luò ) 收藏

  前 言

  DS18B2普遍都是和單片機配合使用,很少有關(guān)于DSP的連接的接口報道,所以此文詳細介紹了TMS320LF2407與 的連接方法,并且很詳細的介紹了如何用C語(yǔ)言完成精確的軟件延時(shí),從而完成與TMS320LF2407之間的基于單線(xiàn)總線(xiàn)協(xié)議的數據通訊。

  1 DS18B20的時(shí)序

  1. 1 復位時(shí)序

  復位使用DS18B20時(shí),首先需將其復位,然后才能執行其它命令。復位時(shí),主機將數據線(xiàn)拉為低電平并保持480us~960us,然后釋放數據線(xiàn),再由上拉電阻將數據線(xiàn)拉高15~60us,等待DS18B20發(fā)出存在脈沖,存在脈沖有效時(shí)間為60~240us,這樣,就完成了復位操作。

  1.2 寫(xiě)時(shí)序

  在主機對DS18B20寫(xiě)數據時(shí),先將數據線(xiàn)置為高電平,再變?yōu)榈碗娖?,該低電平應大?us。在數據線(xiàn)變?yōu)榈碗娖胶?5us內,根據寫(xiě)“1”或寫(xiě)“0” 使數據線(xiàn)變高或繼續為低。DS18B20將在數據線(xiàn)變成低電平后15us~60us內對數據線(xiàn)進(jìn)行采樣。要求寫(xiě)入DS18B20的數據持續時(shí)間應大于 60us而小于120us,兩次寫(xiě)數據之間的時(shí)間間隔應大于1us。

  1.3 讀時(shí)序

  讀時(shí)隙當主機從DS18B20讀數據時(shí),主機先將數據線(xiàn)置為高電平,再變?yōu)榈碗娖?,該低電平應大?us,然后釋放數據線(xiàn),使其變?yōu)楦唠娖?。DS18B20在數據線(xiàn)從高電平變?yōu)榈碗娖降?5us內將數據送到數據線(xiàn)上。主機可在15us后讀取數據線(xiàn).。

  2 TMS320LF2407與DS18B20的連接

  DS18B20有三個(gè)引腳。其與的接線(xiàn)圖如下。VDD管腳接5V電壓給傳感器供電。DQ管腳為數據線(xiàn),與 的IOPA6連接的同時(shí),還要接一個(gè)4.7K的上拉電阻,并接到5V的電源上,使數據線(xiàn)在空閑狀態(tài)下能自動(dòng)上拉為高電平。 GND管腳接地。

TMS320LF2407與DS18B20的連接

  3 軟件設計

  3.1 精確的軟件定時(shí)的實(shí)現

  眾所周知,TMS320LF2407的內核屬于C2000系列的處理器,處理速度達到30MIPs,也就是每條指令所花的時(shí)間理論上只有33ns。但是實(shí)際情況是,由于DSP外部電路的數據處理速度和數據調用等因素,往往處理速度達不到這個(gè)數量級。那怎樣測出每條指令的處理時(shí)間從而計算出軟件延時(shí)程序的精確時(shí)間呢?計算方法如下:

  1、延時(shí)程序的C語(yǔ)言代碼為:

  for(loopindex=0;loopindex
其中loopindex 為unsigned int,無(wú)符號整形數值, N為常量,根據所要求的延時(shí)時(shí)間,計算得出。具體算法在下面給出。

  2、這個(gè)for語(yǔ)句在CCS中的編譯器編譯后所產(chǎn)生的匯編語(yǔ)言為:

LACL #0h
SACL *, 0
LACL *
SUB N(計算得到的循環(huán)次數)
BCND 轉移的地址,GEQ
LACC *, 0
ADD #1h
SACL *, 0
LACL *
SUB N(計算得到的循環(huán)次數)
BCND 轉移的地址,LT

  這些匯編語(yǔ)句所占用的時(shí)間可以計算成公式:DELAY=(9N+4)*單個(gè)指令周期。

  3、測試出一個(gè)指令周期

  系統所用晶振為20M,倍頻以后的時(shí)鐘頻率為40M,定時(shí)器1的分頻為1,也就是說(shuō)定時(shí)器的計時(shí)周期為25ns。開(kāi)啟定時(shí)器,單步運行上面的匯編語(yǔ)句,看定時(shí)器每次運行后所增加的數值。測試得到,在每次單步運行占一個(gè)指令周期的匯編語(yǔ)句后,定時(shí)器的數值增加10。也就是說(shuō),每個(gè)單指令周期的指令占用的時(shí)間為:25ns*10=250ns,也就是0.25us。

  4、延時(shí)程序的最終計算公式為:

  DELAY =(9n+4)*0.25us。

  由公式可以看出,當n=0時(shí),DELAY=1us,當n=65535時(shí),DELAY= 150ms。

  3.2 主要程序

  由于文章篇幅的關(guān)系,這里只給出復位程序、讀字節程序和整個(gè)讀溫度的主程序,寫(xiě)命令字的程序可以根據上面所述的時(shí)序自行編寫(xiě)。

#define nop() {asm( nop );}
#define DATA_PORT PADATDIR
#define DATA_MODE 0x0040
#define DATA_OUT 0x4000
#define DATA_BIT 0x0040
#define PIN_HIGH() {PADATDIR=PADATDIR|DATA_OUT|DATA_BIT;}
#define PIN_LOW() {DATA_PORT=(PADATDIR|DATA_OUT)(~DATA_BIT);}



上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: DS18B20 TMS320LF2407A 溫度測量

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>