SPI通信とデバッグ機能のチャレンジ課題です。
目次
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 | 新規投稿 |