SPI通信とデバッグ機能のチャレンジ課題です。
現在、PICマイコン電子工作入門実践編シリーズの記事内容を最新の情報に合わせて、2025年9月までを目標に全面的に更新しています。
更新の理由は次のとおりです。
- 記事で使用している部品の中に、現在では調達できない部品があるため
- 記事内容に古い記述があるため
- 掲載している天気予報プログラムのアルゴリズムを改善するため
更新期間中は、新旧の記事間で一部内容に矛盾が生じる可能性があります。 ご不便をおかけいたしますが、ご理解のほどよろしくお願いいたします。
なお、更新済みの記事には冒頭に「この記事は更新済みです」の表示をしております。
引き続き、よりわかりやすく、役立つ情報を提供できるよう努めてまいります。 今後ともよろしくお願い申し上げます。
SPI通信で湿度データを1バイト読み取る
これまでの記事で、SPI通信でセンサのチップIDの値(1バイト)を取得するプログラムを、デバッグ機能を利用して実行しました。
チャレンジ課題の1つ目として、湿度データを読み取ってみたいと思います。
湿度データはメモリマップで以下の場所にあります。

湿度データは2バイト、つまり16ビットで構成されています。アドレス0xFDには湿度データの上位1バイト、0xFEには下位1バイトが格納されています。
なお、取得できるデータですが、センサは電源投入後は測定指示しない限り、温湿度・気圧データはデフォルトの値が入っています。メモリマップにデフォルト値も書かれている通り、湿度データの上位1バイト(アドレス0xFD)は0x80が入っています。
そこで、湿度データの上位1バイトを取得するプログラムを作成し、デバッグ機能を利用して実際に0x80が取得できるか確認してみてください。
SPI通信で湿度データを2バイト読み取る
湿度データは実際には2バイトです。そこで、湿度データ格納用に以下の16ビットの変数を宣言し、この変数に湿度データが入るプログラムを作成してみてください。
uint16_t humidity;
なお、湿度データの上位1バイト、下位1バイトについて、それぞれアドレスを指定して読み取ることもできますが、このセンサのSPI通信は、以下のようにアドレス指定後、クロックを継続して送ると、センサは次のアドレスのデータ、その次のアドレスのデータ、というようにアドレスを1つずつ増やしながらデータを送ってきてくれます。ぜひこの機能を利用してプログラムを作成してみてください。

すでに8ビット送信の関数、8ビット受信の関数は作成していますので、これらの関数を使用してSPI通信手順を実現すれば連続データ読み取りができるはずです!
更新履歴
日付 | 内容 |
---|---|
2018.5.12 | 新規投稿 |