1-Wire總線與DS18B20應(yīng)用仿真
發(fā)布時(shí)間:2008/8/16 0:00:00 訪問次數(shù):1018
作為一種單主機(jī)多從機(jī)的總線系統(tǒng),在一條1-wire總線上可掛接的從器件數(shù)量幾乎不受限制。為了不引起邏輯上的沖突,所有從器件的1-wire總線接口都是漏極開路的,因此在使用時(shí)必須對(duì)總線外加上拉電阻(一般取5kω左右)。主機(jī)對(duì)1-wire總線的基本操作分為復(fù)位、讀和寫三種,其中所有的讀寫操作均為低位在前高位在后。復(fù)位、讀和寫是1-wire總線通信的基礎(chǔ),下面通過具體程序詳細(xì)介紹這3種操作的時(shí)序要求。(程序中dq代表1-wire總線,定義為p1.0,uchar定義為unsigned char)
1 1-wire總線的復(fù)位
復(fù)位是1-wire總線通信中最為重要的一種操作,在每次總線通信之前主機(jī)必須首先發(fā)送復(fù)位信號(hào)。如程序1.1所示,產(chǎn)生復(fù)位信號(hào)時(shí)主機(jī)首先將總線拉低480~960μs然后釋放,由于上拉電阻的存在,此時(shí)總線變?yōu)楦唠娖健?-wire總線器件在接收到有效跳變的15~60μs內(nèi)會(huì)將總線拉低60~240μs,在此期間主機(jī)可以通過對(duì)dq采樣來判斷是否有從器件掛接在當(dāng)前總線上。函數(shù)reset()的返回值為0表示有器件掛接在總線上,返回值為1表示沒有器件掛接在總線上。
程序1.1 總線復(fù)位
uchar reset(void)
{
uchar tdq;
dq=0; //主機(jī)拉低總線
delay480μs(); //等待480μs
dq=1; //主機(jī)釋放總線
delay60μs(); //等待60μs
tdq=dq; //主機(jī)對(duì)總線采樣
delay480μs(); //等待復(fù)位結(jié)束
return tdq; //返回采樣值
}
2 1-wire總線的寫操作
由于只有一條i/o線,主機(jī)1-wire總線的寫操作只能逐位進(jìn)行,連續(xù)寫8次即可寫入總線一個(gè)字節(jié)。如程序1.2所示,當(dāng)mcs-51單片機(jī)的時(shí)鐘頻率為12mhz時(shí),程序中的語句_nop_();可以產(chǎn)生1μs的延時(shí),調(diào)用此函數(shù)時(shí)需包含頭文件“intrins.h”。向1-wire總線寫1bit至少需要60μs,同時(shí)還要保證兩次連續(xù)的寫操作有1μs以上的間隔。若待寫位wbit為0則主機(jī)拉低總線60μs然后釋放,寫0操作完成。若待寫位wbit為1,則主機(jī)拉低總線并在1~15μs內(nèi)釋放,然后等待60μs,寫1操作完成。
程序1.2 向總線寫1bit
void writebit(uchar wbit)
{
_nop_();
//保證兩次寫操作間隔1μs以上
dq=0;
_nop_();
//保證主機(jī)拉低總線1μs以上
if(wbit)
{
//向總線寫1
dq=1;
delay60μs();
}
else
{
//向總線寫0
delay60μs();
dq=1;
}
}
3 1-wire總線的讀操作
與寫操作類似,主機(jī)對(duì)1-wire總線的讀操作也只能逐位進(jìn)行,連續(xù)讀8次,即可讀入主機(jī)一個(gè)字節(jié)。從1-wire總線讀取1bit同樣至少需要60μs,同時(shí)也要保證兩次連續(xù)的讀操作間隔1μs以上。如程序1.3所示,從總線讀數(shù)據(jù)時(shí),主機(jī)首先拉低總線1μs以上然后釋放,在釋放總線后的1~15μs內(nèi)主機(jī)對(duì)總線的采樣值即為讀取到的數(shù)據(jù)。
程序1.3 從總線讀1bit
uchar readbit()
{
uchar tdq;
_nop_();
//保證兩次連續(xù)寫操作間隔1μs以上
dq=0;
_nop_();
//保證拉低總線的時(shí)間不少于1μs
dq=1;
_nop_();
tdq=dq;
//主機(jī)對(duì)總線采樣
delay60μs();
//等待讀操作結(jié)束
return tdq;
//返回讀取到的數(shù)據(jù)
}
數(shù)字溫度傳感器ds18b20
1 ds18b20的基本特性
● 采用1-wire總線接口,可以方便實(shí)現(xiàn)多點(diǎn)測(cè)溫。
● 與主機(jī)連接方便,除5kω的總線上拉電阻外無須其他額外器件。
● 電源電壓范圍為3.0~5.5v,與3.3v和5v數(shù)字系統(tǒng)均可很好地兼容。
● 測(cè)量范圍為-55~+125℃,分辨率為9~12位可編程。
● 通過編程可設(shè)置溫度報(bào)警上下限,設(shè)置值掉電不丟失。
● 內(nèi)部集成了用于器件尋址的64bit光刻rom編碼。
2 ds18b20中的存儲(chǔ)器
在ds18b20中共有三種存儲(chǔ)器,分別是rom、ram、eeprom,每種存儲(chǔ)器都有其特定的功能,可查閱相關(guān)資料。
3 1-wire總線rom功能命令
在ds18b20內(nèi)部光刻了一個(gè)長(zhǎng)度為64bit的rom編碼,這個(gè)編碼是器件的身份識(shí)別標(biāo)志。當(dāng)總線上掛接著多個(gè)ds18b20時(shí)可以通過rom編碼對(duì)特定器件進(jìn)行操作。rom功能命令是針對(duì)器件的rom編碼進(jìn)行操作的命令,共有5個(gè),長(zhǎng)度均為8bit(1byte)。
、僮xrom(33h)
當(dāng)掛接在總線上的1-wire總線器件接收到此命令時(shí),會(huì)在主機(jī)讀操作的配合下將自身的rom編碼按由低位到高位的順序依次發(fā)送給主機(jī)?偩上掛接有多個(gè)ds18b20時(shí),此命令會(huì)使所有器件同時(shí)向主機(jī)傳送自身的rom編碼,這將導(dǎo)致數(shù)據(jù)的沖突。
②匹配rom(55h)
主機(jī)在發(fā)送完此命令后,必須緊接著發(fā)送一個(gè)64bit的rom編碼,與此rom編碼匹配的從器件會(huì)響應(yīng)主機(jī)的后續(xù)命令,而其他從器件則處于等待狀態(tài)。該命令主要用于選擇總線上的
作為一種單主機(jī)多從機(jī)的總線系統(tǒng),在一條1-wire總線上可掛接的從器件數(shù)量幾乎不受限制。為了不引起邏輯上的沖突,所有從器件的1-wire總線接口都是漏極開路的,因此在使用時(shí)必須對(duì)總線外加上拉電阻(一般取5kω左右)。主機(jī)對(duì)1-wire總線的基本操作分為復(fù)位、讀和寫三種,其中所有的讀寫操作均為低位在前高位在后。復(fù)位、讀和寫是1-wire總線通信的基礎(chǔ),下面通過具體程序詳細(xì)介紹這3種操作的時(shí)序要求。(程序中dq代表1-wire總線,定義為p1.0,uchar定義為unsigned char)
1 1-wire總線的復(fù)位
復(fù)位是1-wire總線通信中最為重要的一種操作,在每次總線通信之前主機(jī)必須首先發(fā)送復(fù)位信號(hào)。如程序1.1所示,產(chǎn)生復(fù)位信號(hào)時(shí)主機(jī)首先將總線拉低480~960μs然后釋放,由于上拉電阻的存在,此時(shí)總線變?yōu)楦唠娖健?-wire總線器件在接收到有效跳變的15~60μs內(nèi)會(huì)將總線拉低60~240μs,在此期間主機(jī)可以通過對(duì)dq采樣來判斷是否有從器件掛接在當(dāng)前總線上。函數(shù)reset()的返回值為0表示有器件掛接在總線上,返回值為1表示沒有器件掛接在總線上。
程序1.1 總線復(fù)位
uchar reset(void)
{
uchar tdq;
dq=0; //主機(jī)拉低總線
delay480μs(); //等待480μs
dq=1; //主機(jī)釋放總線
delay60μs(); //等待60μs
tdq=dq; //主機(jī)對(duì)總線采樣
delay480μs(); //等待復(fù)位結(jié)束
return tdq; //返回采樣值
}
2 1-wire總線的寫操作
由于只有一條i/o線,主機(jī)1-wire總線的寫操作只能逐位進(jìn)行,連續(xù)寫8次即可寫入總線一個(gè)字節(jié)。如程序1.2所示,當(dāng)mcs-51單片機(jī)的時(shí)鐘頻率為12mhz時(shí),程序中的語句_nop_();可以產(chǎn)生1μs的延時(shí),調(diào)用此函數(shù)時(shí)需包含頭文件“intrins.h”。向1-wire總線寫1bit至少需要60μs,同時(shí)還要保證兩次連續(xù)的寫操作有1μs以上的間隔。若待寫位wbit為0則主機(jī)拉低總線60μs然后釋放,寫0操作完成。若待寫位wbit為1,則主機(jī)拉低總線并在1~15μs內(nèi)釋放,然后等待60μs,寫1操作完成。
程序1.2 向總線寫1bit
void writebit(uchar wbit)
{
_nop_();
//保證兩次寫操作間隔1μs以上
dq=0;
_nop_();
//保證主機(jī)拉低總線1μs以上
if(wbit)
{
//向總線寫1
dq=1;
delay60μs();
}
else
{
//向總線寫0
delay60μs();
dq=1;
}
}
3 1-wire總線的讀操作
與寫操作類似,主機(jī)對(duì)1-wire總線的讀操作也只能逐位進(jìn)行,連續(xù)讀8次,即可讀入主機(jī)一個(gè)字節(jié)。從1-wire總線讀取1bit同樣至少需要60μs,同時(shí)也要保證兩次連續(xù)的讀操作間隔1μs以上。如程序1.3所示,從總線讀數(shù)據(jù)時(shí),主機(jī)首先拉低總線1μs以上然后釋放,在釋放總線后的1~15μs內(nèi)主機(jī)對(duì)總線的采樣值即為讀取到的數(shù)據(jù)。
程序1.3 從總線讀1bit
uchar readbit()
{
uchar tdq;
_nop_();
//保證兩次連續(xù)寫操作間隔1μs以上
dq=0;
_nop_();
//保證拉低總線的時(shí)間不少于1μs
dq=1;
_nop_();
tdq=dq;
//主機(jī)對(duì)總線采樣
delay60μs();
//等待讀操作結(jié)束
return tdq;
//返回讀取到的數(shù)據(jù)
}
數(shù)字溫度傳感器ds18b20
1 ds18b20的基本特性
● 采用1-wire總線接口,可以方便實(shí)現(xiàn)多點(diǎn)測(cè)溫。
● 與主機(jī)連接方便,除5kω的總線上拉電阻外無須其他額外器件。
● 電源電壓范圍為3.0~5.5v,與3.3v和5v數(shù)字系統(tǒng)均可很好地兼容。
● 測(cè)量范圍為-55~+125℃,分辨率為9~12位可編程。
● 通過編程可設(shè)置溫度報(bào)警上下限,設(shè)置值掉電不丟失。
● 內(nèi)部集成了用于器件尋址的64bit光刻rom編碼。
2 ds18b20中的存儲(chǔ)器
在ds18b20中共有三種存儲(chǔ)器,分別是rom、ram、eeprom,每種存儲(chǔ)器都有其特定的功能,可查閱相關(guān)資料。
3 1-wire總線rom功能命令
在ds18b20內(nèi)部光刻了一個(gè)長(zhǎng)度為64bit的rom編碼,這個(gè)編碼是器件的身份識(shí)別標(biāo)志。當(dāng)總線上掛接著多個(gè)ds18b20時(shí)可以通過rom編碼對(duì)特定器件進(jìn)行操作。rom功能命令是針對(duì)器件的rom編碼進(jìn)行操作的命令,共有5個(gè),長(zhǎng)度均為8bit(1byte)。
①讀rom(33h)
當(dāng)掛接在總線上的1-wire總線器件接收到此命令時(shí),會(huì)在主機(jī)讀操作的配合下將自身的rom編碼按由低位到高位的順序依次發(fā)送給主機(jī)?偩上掛接有多個(gè)ds18b20時(shí),此命令會(huì)使所有器件同時(shí)向主機(jī)傳送自身的rom編碼,這將導(dǎo)致數(shù)據(jù)的沖突。
、谄ヅ鋜om(55h)
主機(jī)在發(fā)送完此命令后,必須緊接著發(fā)送一個(gè)64bit的rom編碼,與此rom編碼匹配的從器件會(huì)響應(yīng)主機(jī)的后續(xù)命令,而其他從器件則處于等待狀態(tài)。該命令主要用于選擇總線上的
熱門點(diǎn)擊
- 教你做2SD315AI的驅(qū)動(dòng)電路設(shè)計(jì)
- 1-Wire總線與DS18B20應(yīng)用仿真
- 在嵌入式系統(tǒng)中應(yīng)用NAND Flash閃存作
- Molex推出新系列2.00mm間距SMT線
- 韋爾推出用于超高速接口的靜電保護(hù)芯片ESDA
- 基于μPD780822型單片機(jī)的客車CAN總
- 基于USB的ARINC429總線接口模塊設(shè)計(jì)
- 賽普拉斯2Mb/8Mb nvSRAM無需電池
- ST7267單片機(jī)與SIM卡的接口設(shè)計(jì)
- 基于鐵電存儲(chǔ)器FM25640在電表數(shù)據(jù)存儲(chǔ)中
推薦技術(shù)資料
- MOSFET 電感單片降壓開關(guān)模式變換器優(yōu)勢(shì)
- SiC MOSFET 和 IG
- 新型 電隔離無芯線性霍爾效應(yīng)電
- 業(yè)界超小絕對(duì)位置編碼器技術(shù)參數(shù)設(shè)計(jì)
- 高帶寬、更高分辨率磁角度傳感技術(shù)應(yīng)用探究
- MagAlpha 角度位置傳感
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動(dòng)IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究