目錄
1. dsb18b20結構框**析
2. 64-bit rom(傳送時低位優先)
3. 16-bit 溫度暫存器
4. 8-bit 配置暫存器
5. 8-bit crc校驗
6.dsb18b20命令格式
7.dsb18b20通訊例項實測
表1 rom結構
8bit
48bit
8bit
crc編碼
序列號家族碼(唯一)
b63 ~ b56
b55 ~ b8
b7~b0
注釋:家族碼也是產品系列編碼,ds18b20 為 0x28,ds1822 為 0x22。
16bit溫度暫存器由符號位和資料位組成,根據配置暫存器的設定,決定資料暫存器的資料位。
例如:ds18b20預設配置暫存器為12位,則資料位為b0~b10, b11為符號位。
0000 0
000 1010 0010 (0x00a2)=> 0xa2 *0.0625= 10.125℃。
1111 1
111 0101 1110 (0xff5e)=> 對資料位取反碼後加1,得到資料 0xa2,則溫度為 -10.125℃。
0000 0
000 0000 1000 (0x0008)=> 0.5℃
1111 1
111 1111 1000 (0xfff8)=> -0.5℃
bit7
bit6 bit5
bit4 bit3 bit2 bit1 bit0
0r1 r0
0 0: 9位轉換精度,0.5,轉換時間93.75ms;
0 1:10位轉換精度,0.25,轉換時間187.5ms;
1 0:11位轉換精度,0.125,轉換時間375ms;
1 1:12位轉換精度,0.0625,轉換時間750ms(預設)。
1 1 1 1 1
crc = x8 + x5 + x4 + 1
5.1 crc計算方法1
// 輸入:u64 dat:需要校驗的資料,最多64bit;
// u32 bitnum:需要驗證的資料位數
// 返回:u8 crc
u8 ds18b20analyzersettings::computecrc(u64 dat, u32 bitnum)
else
}return crc8;
}
5.2 crc計算方法2_查表法
//crc查表法: x8 + x5 + x4 + 1
u32 crc8table = ;
u8 ds18b20analyzersettings::computecrc_table(u64 dat, u32 len)
return crc8;
}
dsb18b20命令格式的詳細內容請參考:one wire 1-wire 單匯流排協議解析 - 簡單易懂協議詳解 「4. 功能命令」
本例項使用 kingst la5016 usb 邏輯分析儀檢測ds1b20協議資料通訊。下圖2是乙個完整的資料報分析截圖。從圖中可以看到,la5016的ds18b20解析模組,將協議資料分為6部分:reset condition(主機復位)、presence condition(從機應答)、主機傳送rom命令、從機回應rom命令、主機傳送功能命令解析及從機回應功能命令解析。
下圖為ds18b20協議設定截圖,其中dat為目標資料通道,thermometer resolution 為初始溫度取樣轉換精度(同配置暫存器對應),共有4個選項:12bit(預設),11bit,10bit,9bit。此處設定為溫度解析初始化設定,若在解析過程中,獲取到配置暫存器的相關資訊,則可以更新溫度取樣轉換精度。
圖2為乙個完整的通訊過程截圖,注釋①為主機傳送rom命令,此處為「跳過rom」命令;注釋②為主機傳送的功能命令,此處為「0xbe:讀取暫存器資料,包括crc」;注釋③為從機對功能命令的回應,data即為暫存器的位元組資料。
DS18B20溫度測量
1.ds18b20 復位。2.寫入跳過 rom 的位元組命令,0xcc。3.寫入開始轉換的功能命令,0x44。4.延遲大約 750 900 毫秒 1.ds18b20 復位。2.寫入跳過 rom 的位元組命令,0xcc。3.寫入讀暫存的功能命令,0xbe。4.讀入第 0 個位元組 ls byte,轉換...
DS18B20溫度換算
dsi8b20接收到溫度轉換命令後,開始啟動轉換。轉換完成後的溫度值就以16位帶符號擴充套件的二進位制補碼形式儲存在高速暫存儲存器的0,1位元組。微控制器可通過單線介面讀到該資料,讀取時低位在前,高位在後,資料格式以0 062 5 lsb形式表示。溫度值格式如表2.2.1所示,其中 s 為標誌位,對...
溫度感測器 DS18B20
1.實物圖 2.64位 激 光刻唯讀儲存器 開始8位 28h 是產品型別標號,接著的48位是該ds18b20自身的序列號,最後8位是前面56位的迴圈冗餘校驗碼 光刻rom的作用是使每乙個ds18b20都各不相同,這樣就可以實現一根匯流排上掛接多個ds18b20的目的 3.溫度暫存器 高位元組的前5位...