當(dāng)前位置:首頁 > 電源 > 數(shù)字電源
[導(dǎo)讀]前 言  DS18B2普遍都是和單片機(jī)配合使用,很少有關(guān)于DSP與DS18B20的連接的接口報道,所以此文詳細(xì)介紹了TMS320LF2407與 DS18B20的連接方法,并且很詳細(xì)的介紹了如何用C語言完成精確的軟件延時,從而完成DS18B20與

前  言

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

  1 DS18B20的時序

  1. 1  復(fù)位時序

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

  1.2  寫時序

  在主機(jī)對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)主機(jī)從DS18B20讀數(shù)據(jù)時,主機(jī)先將數(shù)據(jù)線置為高電平,再變?yōu)榈碗娖剑摰碗娖綉?yīng)大于1us,然后釋放數(shù)據(jù)線,使其變?yōu)楦唠娖?。DS18B20在數(shù)據(jù)線從高電平變?yōu)榈碗娖降?5us內(nèi)將數(shù)據(jù)送到數(shù)據(jù)線上。主機(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[!--empirenews.page--]

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

  3、測試出一個指令周期

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

  4、延時程序的最終計算公式為:

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

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

3.2 主要程序

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

#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);}
#define PIN_LEAVE()  {DATA_PORT=DATA_PORT&(~DATA_OUT)|DATA_BIT;}
/* 傳感器復(fù)位程序 */
unchar reset(void)
{  unchar retval;
unint loopindex="0";
    PIN_HIGH();
    nop();nop();nop();nop(); /* 延時1us*/
PIN_LOW();
for(loopindex=0;loopindex<213;loopindex++){;} /*置總線為低電平并保持至少480us */
PIN_HIGH();
for(loopindex=0;loopindex<26;loopindex++){;} /*等電阻拉高總線并保持15-60us */
PIN_LEAVE(); /*接受應(yīng)答信號*/
nop();
if((DATA_PORT & DATA_BIT) == 0x0000)
{  retval = 0;  }
else
{  retval = 1;  }
PIN_HIGH();
    for(loopindex=0;loopindex<106;loopindex++){;} /*延時60-240us */
    return(retval); /*返回應(yīng)答信號 */
}[!--empirenews.page--]
/* 從傳感器中讀一個字節(jié) */
void read_byte(unchar *ReadByte)       
{
    int i;
    unchar temp="0";
unint loopindex="0";   
    PIN_HIGH();
    for(i=0;i<8;i++)
    {
        temp="temp">>1;
      PIN_LOW();
  nop();nop();nop();nop(); /*延時2us */
  nop();nop();nop();nop();
  PIN_HIGH();   
  for(loopindex=0;loopindex<6;loopindex++){;}  /* 延時14us */
  PIN_LEAVE();
  nop();
  if((DATA_PORT & DATA_BIT) == 0x0000)
  {   temp="temp" & 0x7F;  }
  else
  {   temp="temp" | 0x80;  }
  PIN_HIGH();
  for(loopindex=0;loopindex<26;loopindex++){;}   /* 延時60us */
    }                       
    *ReadByte=temp;
    return;
}
/* 將讀得的溫度轉(zhuǎn)化為十進(jìn)制 */
float transform(unchar *T)
{
unchar temp="0";
float temprature="0";
temp=temp|(*(T+1)<<8);
temp=temp|*T;
if((temp&0x0F800)==0x0F800)
{  temprature="0-"((~temp)+1)*0.0625; }
else
{  temprature="temp"*0.0625; } 
return(temprature);
}
/* 讀取溫度主函數(shù),返回十進(jìn)制溫度數(shù) */
float read_temp()
{
Unchar buff[2];
float temprature="0";
unint loopindex="0"; 
while (reset()==1){};      /* 復(fù)位等待從機(jī)應(yīng)答 */
    write_byte(0xCC);         /* 忽略ROM匹配 */
    write_byte(0x44);          /* 發(fā)送溫度轉(zhuǎn)化命令 */
    for(loopindex=0;loopindex<65535;loopindex++){;}  /* 延時300ms,等待數(shù)模轉(zhuǎn)換 */
for(loopindex=0;loopindex<65535;loopindex++){;}
while(reset()==1){};        /* 再次復(fù)位,等待從機(jī)應(yīng)答 */
    write_byte(0xCC);         /* 忽略ROM匹配 */
    write_byte(0xBE);          /* 發(fā)送讀溫度命令 */
    read_byte(buff);           /* 讀出溫度低8位 */       
    read_byte(buff+1);         /* 讀出溫度高8位 */
    temprature="transform"(buff);
    PIN_HIGH();             /* 釋放總線 */
return(temprature);
}

  4 結(jié)束語

  DS18B20是一款非常優(yōu)秀的單總線數(shù)字式傳感器。硬件設(shè)計簡單,運(yùn)行可靠。通過分析C語言編譯后的匯編語言可以很明確的計算出軟件延時的時間,從而滿足單線總線通訊的時序要求,從而可以出色的完成DSP與DS18B20通訊的軟件設(shè)計。

  5 本文創(chuàng)新點有兩個:

  1、通過C編譯器編譯出來的相應(yīng)的C語言的延時程序,從而得到其對應(yīng)的匯編語言,再通過定時器計時,能夠知道單指令周期的時間,從而能夠精確的計算出軟件延時程序的延時時間。

  2、通常DS18B20都是與單片機(jī)配合使用的,而本文則詳細(xì)的介紹了DS18B20與DSP的結(jié)合使用方法,其區(qū)別主要是在端口的操作上和延時的控制上。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉