部品実験 | 元に戻る |
DS18B20 2024/6/30 |
|
| |||||||
1.概要 2.ハードブロック図 3.64Bit Lasered ROM Code 4.メモリーマップ 5.ROMコマンド 6.使い方 7.DS18B20 Arduinoプログラム(本文以外) |
|
本 文 |
1.概要
|
2.ハードブロック図 [目次に戻る] |
3.64Bit Lasered ROM Code センサー個別のコードを持っており、並びは下表のとおり
|
4.メモリーマップ
データはByte0,Byte1に格納される。 温度とデジタルデータの関係は下表の通り
(2)Configuration Register*
R1とR0は温度の分解能を決めるビットで下表の様になっている
(3)CRC生成 CRC バイトは、DS18S20 の 64 ビット ROM コードの?部として、およびスクラッチパッド メモリの 9 番目のバイトで提供されます。 ROM コード CRC は、ROM コードの最初の 56 ビットから計算され、ROM の最上位バイトに含まれています。 スクラッチパッド CRC は、スクラッチパッドに格納されているデータから計算されるため、スクラッチパッドのデータが変更されると変更されます。 CRC は、DS18S20 からデータを読み取るときにバス マスターにデータ検証の方法を提供します。 データが正しく読み取られたことを確認するには、バス マスターは受信データから CRC を再計算し、この値を ROM コード CRC (ROM 読み取りの場合) またはスクラッチパッド CRC (スクラッチパッド読み取りの場合) と比較する必要があります。計算された CRC が読み取り CRC と一致する場合、データはエラーなしで受信されています。 CRC 値の比較と操作を続行するかどうかの決定は、すべてバス マスターによって決定されます。 DS18S20 には、DS18S20 CRC (ROM またはスクラッチパッド) がバス マスターによって生成された値と一致しない場合にコマンド シーケンスの進?を妨げる回路はありません。 CRC (ROM またはスクラッチパッド) の同等の多項式関数は次のとおりです。 CRC = X8 + X5 + X4 + 1 バス マスターは、図 10に?す多項式ジェネレータを使?して CRC を再計算し、DS18S20 からの CRC 値と?較できます。この回路はシフト レジスタと XOR ゲートで構成され、シフト レジスタ ビットは 0 に初期化されます。ROM コードの最下位ビットまたはスクラッチパッドのバイト 0 の最下位ビットから始めて、?度に 1 ビットずつシフト レジスタにシフトする必要があります。 ROM から 56 番目のビットまたはスクラッチパッドからバイト 7 の最上位ビットをシフトすると、多項式ジェネレータには再計算された CRC が含まれます。 次に、DS18S20 からの 8 ビット ROM コードまたはスクラッチパッド CRC を回路にシフトする必要があります。この時点で、再計算された CRC が正しければ、シフト レジスタにはすべて 0 が含まれます。Maxim 1-Wire 巡回冗長検査に関する追加情報は、アプリケーション ノート 27「Maxim Button 製品での巡回冗長検査の理解と使用」に記載されています [目次に戻る] |
5.ROMコマンド バス マスターが ROM コマンドを使?して通信する DS18S20 をアドレス指定した後、マスターは DS18S20 機能コマンドの 1 つを発?できます。 これらのコマンドにより、マスターは DS18S20 のスクラッチパッド メモリへの書き込みと読み取り、温度変換の開始、および電源モードの決定を?うことができます。 以下で説明する DS18S20 機能コマンドは、6項の使い方で例として説明する。
|
6.使い方 コマンド例はOneWire.hライブラリーを使用した場合を記載します (1)複数の場合 a.送信 リセット マスタが、リセットパルスを出します。 myWire.reset() b.受信 存在パルス DS18B20は、存在パルスで応じます c.※1送信 MATCH ROM [55h] マスターが、「MATCH ROM」コマンドを出します。 myWire.write(0x55, 1); ※1送信 64-bit ROMコード マスターは、DS18B20にROMコードを送ります。 c.※2送信 MATCH ROM [CCh] マスターが、「MATCH ROM」コマンドを出します。 myWire.write(0xCC, 1); d.送信 CONVERT T [44h] マスターは、「CONVERT T」コマンドを出します。 myWire.write(0x44, 1); e.送信 DQ線を、強いプルアップで[Hi]にします。 マスターは、変換(tCONV)の間、強いプルアップをDQに適用します。 f.送信 リセット マスタが、リセットパルスを出します。 myWire.reset() g.受信 存在パルス DS18B20は、存在パルスで応じます。 h.送信 MATCH ROM [55h] マスターが、「MATCH ROM」コマンドを出します。 myWire.write(0x55, 1); i.送信 64-bit ROM code マスターは、DS18B20にROMコードを送ります。 myWire.select(addr); j.送信 READ SCRATCHPAD [BEh] マスターは、「READ SCRATCHPAD」コマンドを出します。 myWire.write(0xBE); k.受信 9バイトのデータ マスターは、CRCを含む全てのスクラッチパッドを読みます。 myWire.read() マスターは、スクラッチパッドの先頭から8バイトのデータでCRCを再計算し、計算されたCRCを、読み込まれたCRC[Byte 9]と比較します。 それが一致する場合は、マスターは継続します。そうでなければ、読み込み操作が繰り返されます。 プログラムのれいとしては 1.DS18B20ソフArduino を参照してください。 [目次に戻る] |