第34回 チャレンジ課題(2)

SPI通信とデバッグ機能のチャレンジ課題です。

記事更新のお知らせ

現在、PICマイコン電子工作入門実践編シリーズの記事内容を最新の情報に合わせて、2025年9月までを目標に全面的に更新しています。

更新の理由は次のとおりです。

  • 記事で使用している部品の中に、現在では調達できない部品があるため
  • 記事内容に古い記述があるため
  • 掲載している天気予報プログラムのアルゴリズムを改善するため

更新期間中は、新旧の記事間で一部内容に矛盾が生じる可能性があります。 ご不便をおかけいたしますが、ご理解のほどよろしくお願いいたします。

なお、更新済みの記事には冒頭に「この記事は更新済みです」の表示をしております。

引き続き、よりわかりやすく、役立つ情報を提供できるよう努めてまいります。 今後ともよろしくお願い申し上げます。

目次

SPI通信で湿度データを1バイト読み取る

これまでの記事で、SPI通信でセンサのチップIDの値(1バイト)を取得するプログラムを、デバッグ機能を利用して実行しました。

チャレンジ課題の1つ目として、湿度データを読み取ってみたいと思います。

湿度データはメモリマップで以下の場所にあります。

Pic practice 34 bme280 memory map

湿度データは2バイト、つまり16ビットで構成されています。アドレス0xFDには湿度データの上位1バイト、0xFEには下位1バイトが格納されています。

なお、取得できるデータですが、センサは電源投入後は測定指示しない限り、温湿度・気圧データはデフォルトの値が入っています。メモリマップにデフォルト値も書かれている通り、湿度データの上位1バイト(アドレス0xFD)は0x80が入っています。

そこで、湿度データの上位1バイトを取得するプログラムを作成し、デバッグ機能を利用して実際に0x80が取得できるか確認してみてください。

SPI通信で湿度データを2バイト読み取る

湿度データは実際には2バイトです。そこで、湿度データ格納用に以下の16ビットの変数を宣言し、この変数に湿度データが入るプログラムを作成してみてください。

uint16_t     humidity;

なお、湿度データの上位1バイト、下位1バイトについて、それぞれアドレスを指定して読み取ることもできますが、このセンサのSPI通信は、以下のようにアドレス指定後、クロックを継続して送ると、センサは次のアドレスのデータ、その次のアドレスのデータ、というようにアドレスを1つずつ増やしながらデータを送ってきてくれます。ぜひこの機能を利用してプログラムを作成してみてください。

Pic practice 34 spi sequence hd

すでに8ビット送信の関数、8ビット受信の関数は作成していますので、これらの関数を使用してSPI通信手順を実現すれば連続データ読み取りができるはずです!

更新履歴

日付内容
2018.5.12新規投稿
通知の設定
通知タイミング
guest
0 コメント
新しい準
古い順 一番投票が多い
本文中にフィードバック
全てのコメントを見る
目次