久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2780|回復: 13
收起左側(cè)

單片機+DS18B20 CRC檢驗不通過?

[復制鏈接]
ID:629502 發(fā)表于 2022-9-19 17:47 | 顯示全部樓層 |閱讀模式
在使用DS18B20時加入CRC校驗,讀序列號時CRC校驗可以通過,但是讀存儲器中9個字節(jié)數(shù)據(jù)時校驗不通過(使用正點原子例程其中溫度值是有,也會變化。)
mmexport1663580283731.png IMG_20220919_173746.jpg mmexport1663580285906.png
回復

使用道具 舉報

ID:213173 發(fā)表于 2022-9-20 06:29 | 顯示全部樓層
這個示例可能對你有所幫助

DS18b20 CRC8位校驗示例 仿真.rar (251.24 KB, 下載次數(shù): 21)

回復

使用道具 舉報

ID:420836 發(fā)表于 2022-9-20 09:14 | 顯示全部樓層
它總是沒有通過 CRC 檢查還是只是有時它沒有通過 CRC 檢查?
回復

使用道具 舉報

ID:629502 發(fā)表于 2022-9-20 12:13 | 顯示全部樓層
TTQ001 發(fā)表于 2022-9-20 09:14
它總是沒有通過 CRC 檢查還是只是有時它沒有通過 CRC 檢查?

是一直沒通過,我用的CRC程序沒問題,序列號的可以通過,就是9個字節(jié)的存儲器讀的值一直沒通過
回復

使用道具 舉報

ID:629502 發(fā)表于 2022-9-20 12:14 | 顯示全部樓層
wulin 發(fā)表于 2022-9-20 06:29
這個示例可能對你有所幫助

CRC校驗程序上沒問題,就是讀存儲器中的9個字節(jié)數(shù)據(jù),前8個進行校驗和第9個總是對不上,可是前兩個字節(jié)的溫度還是會有變化
回復

使用道具 舉報

ID:390416 發(fā)表于 2022-9-20 22:24 | 顯示全部樓層
CRC校驗8541反序.png 學單片機請認準《人人學會單片機》系列視頻教程。
回復

使用道具 舉報

ID:629502 發(fā)表于 2022-9-21 09:00 | 顯示全部樓層
人人學會單片機 發(fā)表于 2022-9-20 22:24
學單片機請認準《人人學會單片機》系列視頻教程。

CRC也是這樣使用的,主要問題是讀出的9個字節(jié)數(shù)據(jù)校驗不通過,我測試了讀這個數(shù)據(jù)的溫度有變化,過溫TH和低溫TL我寫入進去也會有變化,判斷數(shù)據(jù)的讀寫也沒問題。
回復

使用道具 舉報

ID:629502 發(fā)表于 2022-9-21 11:26 | 顯示全部樓層
已經(jīng)又更換了幾個DS18B20測試還是這種現(xiàn)象,讀出的序列號CRC校驗可以通過,存儲器中的值可以寫入,讀出來的溫度也會有變化,就只是CRC校驗不行。我讀出來的那3個保留位一直是0xA5,0xA5,0x66
回復

使用道具 舉報

ID:879348 發(fā)表于 2022-9-21 14:53 | 顯示全部樓層
沒問題的,我以前做過CRC,因為探頭線很長,防止錯誤
回復

使用道具 舉報

ID:123289 發(fā)表于 2022-9-21 17:15 | 顯示全部樓層
如果不做CRC讀DS18B20不錯,這個問題就與DS18B20無關(guān)。
不是用CRC“加密”出了問題,就是用CRC“解密”出了問題。估計問題出在數(shù)據(jù)的次序、起訖點、高低位序、CRC起始碼上。
回復

使用道具 舉報

ID:629502 發(fā)表于 2022-9-21 17:53 | 顯示全部樓層
  1. uint8_t DS18B20_Crc(uint8_t *addr, uint8_t len)
  2. {
  3.         uint8_t crc = 0, inbyte, i, mix;
  4.                 while(len --)
  5.                 {
  6.                         inbyte = *addr++;
  7.                         
  8.                         for(i = 8; i; i--)
  9.                         {
  10.                                 mix = (crc ^ inbyte) & 0x01;
  11.                                 crc >>= 1;
  12.                                 if(mix)
  13.                                 {
  14.                                         crc ^= 0x8C;
  15.                                 }
  16.                                 inbyte >>= 1;
  17.                         }
  18.                 }
  19.                 return crc;
  20. }
  21. 序列號CRC可以校驗,溫度值校驗不通過還是
  22. bool DS18B20_Get_Temp(short *tem)
  23. {
  24.     u8 temp;
  25.     u8 TL,TH;
  26.                 u8 crc;
  27.                 u8 i;
  28.     DS18B20_Start ();                    // ds1820 start convert
  29.     DS18B20_Rst();
  30.     DS18B20_Check();         
  31.     DS18B20_Write_Byte(0xcc);// skip rom
  32.     DS18B20_Write_Byte(0xbe);// convert           
  33.                 for(i = 0; i < 9; i++)
  34.                 {
  35.                         scrbuf[i] = DS18B20_Read_Byte();
  36.                 }
  37.                 crc = DS18B20_Crc(scrbuf,8);
  38.                 if(scrbuf[8] == crc)
  39.                 {
  40.                         TL = scrbuf[0];                                                                                        // LSB
  41.                         TH = scrbuf[1];                                                                                        // MSB
  42.                         if(TH>7)
  43.                         {
  44.                                         TH=~TH;
  45.                                         TL=~TL;
  46.                                         temp=0;//溫度為負  
  47.                         }else temp=1;//溫度為正                    
  48.                         *tem=TH; //獲得高八位
  49.                         (*tem)<<=8;   
  50.                         *tem+=TL;//獲得底八位
  51.                         *tem=(double)*tem*0.625;//轉(zhuǎn)換
  52.                         if(!temp) *tem =-(*tem);                                        // 負數(shù)
  53.                         else;
  54.                         return true;
  55.                 }
  56.     else
  57.                          return false;
  58. }

  59. bool DS18B20_Read_ID(uint8_t *ID)
  60. {
  61.         u8 crc;
  62.         u8 i;
  63.         DS18B20_Rst();
  64.         DS18B20_Check();
  65.         DS18B20_Write_Byte(0x33);
  66.         for(i = 0; i < 8; i++)
  67.         {
  68.                 ID[i] = DS18B20_Read_Byte();
  69.         }
  70.         crc = DS18B20_Crc(ID,7);
  71.         if( ID[7] == crc )
  72.         {
  73.                 return true;
  74.         }
  75.         else
  76.         {
  77.                 return false;
  78.         }
  79. }
復制代碼

實驗30 DS18B20數(shù)字溫度傳感器實驗.7z

318.12 KB, 下載次數(shù): 7

回復

使用道具 舉報

ID:629502 發(fā)表于 2022-9-22 08:30 | 顯示全部樓層
yzwzfyz 發(fā)表于 2022-9-21 17:15
如果不做CRC讀DS18B20不錯,這個問題就與DS18B20無關(guān)。
不是用CRC“加密”出了問題,就是用CRC“解密”出 ...

謝謝指導,CRC“加密”工作是DS18B20內(nèi)部自己操作出來的,“解密”的結(jié)果和我用網(wǎng)上的CRC計算器也對的上,就只是DS18B20對不上,代碼部分我粘貼在上面了。
回復

使用道具 舉報

ID:629502 發(fā)表于 2022-9-22 11:03 | 顯示全部樓層
"被DS18B20支配的恐懼,懷疑買到假的芯片(CRC8校驗不通過)"
我找到了一個和我這邊現(xiàn)象一樣的帖子,這個問題搞的真的頭大。
回復

使用道具 舉報

ID:629502 發(fā)表于 2022-9-22 12:01 | 顯示全部樓層
我感覺手上這批DS18B20是仿制品,存儲器寫入值可以,但是不能掉電保存,更改分辨率,但實際讀出的數(shù)字的分辨率并不會更改。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 99久久国产 | 97伦理电影网 | 九九国产 | www.成人在线视频 | 99免费 | 欧美不卡一区二区三区 | 91久久精品国产免费一区 | 99热精品6 | 日日骑| 在线播放第一页 | 99久久中文字幕三级久久日本 | 国产在线1区| 69视频在线播放 | 欧美精品乱码久久久久久按摩 | 日韩av一区二区在线观看 | 黄色一级大片在线免费看产 | 久久综合影院 | 黄 色 毛片免费 | 久久精品国产v日韩v亚洲 | 91人人在线 | 国产精品1区2区3区 一区中文字幕 | 国产乱码精品一品二品 | 在线视频中文字幕 | 美女视频黄的 | 性高朝久久久久久久3小时 av一区二区三区四区 | xxx视频| 成人精品一区二区三区中文字幕 | 日韩成人 | 国产成人福利视频 | 欧美寡妇偷汉性猛交 | www312aⅴ欧美在线看 | 欧美aaaaaaaaaa| 久久成人精品视频 | 日韩欧美在线一区 | 国产激情一区二区三区 | 欧美888| 国产日韩欧美一区二区 | 又爽又黄axxx片免费观看 | 国产91综合| 亚洲美女视频 | 日本涩涩网 |