*

ライブラリでRasPiのピンにアクセス(2)-SPIのインターフェース追加

公開日: : C++, pigpio, RaspberryPi, 開発

どもです。

前回のエントリでは、RaspberryPiのピンをより簡便に使用できるようにするために作り始めたライブラリを紹介しました。
前回は第1回として、H/Wを操作する基本的なクラスを実装し、それを使用して「Lチカ」するプログラムを紹介しました。
今回はSPIで他デバイスと通信するメソッドと、それに必要なパラメータを追加したので、それを紹介します。

0.前提

今回追加したメソッドでは、「マスタ」としてのみ設定できます。
スレーブとして設定するパラメータは、実装していません。

1.実装したメソッド

まず、GPIOピンに対応するCGpioクラスに以下のメソッドを追加しています。

また、このCGpioクラスを使用するクラス、RaspberryPiに接続されたH/Wに対応するCPartクラスには、以下のメソッドを追加しました。

これらのメソッドを使用して、SPI通信を行います。

2.メソッドの使い方

上記のメソッドの内容を、1つ1つ解説するのは時間がかかってしまうので、詳細は割愛します。
一番基本的な使い方(?)として、arduinoとSPI通信するサンプルを紹介します。

2.1.サンプル本体

サンプルプログラムは、以下ですべてです。

2.2.サンプル本体の解説

まず、SPIの設定を行います。

次にCPartクラスです。

これは、前回のエントリの書き方と変わりません。
使用するピンにCE0ピンを設定、かつ「OUTPUT」を指定しています。

この実装を見ると、GPIOの設定とCPartの関連が分かりにくくなってしまっています。
これは、今後の改修の課題です。
ご容赦を。

SPI/CPartの設定が完了しましたら、実際にデータの送信と受信を行います。
それが、下記です。

今回のサンプルプログラムでは、CEがLOWでSPIがアクティブになるように設定しています。
なので、データの送受信を行う前にCEをLOWに設定します。
また、送受信が完了した後で、CEをHIGHに戻します。
送受信の際には、送信するデータのサイズ、受信の際には、受信するデータのサイズを、それぞれSend/Recvの第2引数に設定しています。

3.まとめ

前回から、ライブラリの開発についてエントリを書き始めました。
今回は、新規に実装したSPI通信のインターフェースについて書いています。
その中でも基本的な使い方として、Arduinoをslaveとして通信するサンプルとその簡単な解説を行いました。

次回は、SPI通信でセンサー、センサーを搭載したチップと通信する方法について紹介する予定です。

ではっ!

関連記事

no image

自宅で電子工作(1):ブレッドボードでの配線を省略する

どもです。 突然ですが、電子工作を始めてみました。 1.背景 これまで、Raspber

記事を読む

iot_at_home_eye_catch

IoT開発(4)-ESP-WROOM-02を電池で駆動

どもです。 この記事は、以下の記事の続きです。 IoT開発(1)-ESP-WROOM-02の

記事を読む

raspberry-pi

QtでRaspberryPi/GUI開発(7):pigpioを使用したチャタリング対策の問題

どもです。 前回のエントリーで、pigpioを使用したチャタリング対策について記載しました。 今

記事を読む

think_about_utest

middle_unit
最小…よりも(ほんの)少し大きいテストフレームワーク

どもです。 今回は、単体テストのフレームワークについて書きます。 1.最小のフレームワーク

記事を読む

think_about_utest

VisualStudioで実行した単体テストの結果の出力(3)-テスト実行からレポート生成までをツールで自動化

どもです。 前々回、前回と、VisualStudio/C#での単体テストの効率化について書いて

記事を読む

image027

気圧センサを使ってみた-RaspberryPi/pigpioでMPL115A1

どもです。 前回は、DHT11をRaspberryPi/pigpioで使用、温度を測定してみました

記事を読む

MindStormControl_SprachScreen

EV3開発サポートツール(2)-C#のユーザーコントロール開発(2つ目)

どもです。 前回に引き続き、今回もC#/WPFでの独自UI(ユーザーコントロール)の作成についての

記事を読む

raspberry-pi

RaspberryPiで物体検出(2)-白線検出への挑戦(2):輪郭検出による白線検出(実機編)

どもです。 今回は、前回に引き続きOpenCvを用いて道路の白線検出について、です。 1.今

記事を読む

iot_at_home_eye_catch

IoT開発(11)
ESP-WROOM-02を長時間駆動させた

どもです。この記事は、下記の記事の続き、「測定可能な期間」の結果発表です。IoT開発(5) ESP-

記事を読む

no image

C言語でEV3開発(14)-opOUTPUT_TIME_SPEEDコマンド

どもです。 今回のエントリーは、モーターを動かすコマンドである「opOUTPUT_TIME_SPE

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

arduino_relay_switch_002_ae_g5v_drv_eye_catch
Arduinoでリレースイッチ(2)-AE-G5V-DRV

どもです。 前回の記事では、「フォトカプラリレー」を使用したLチ

tlp222af_001_eye_catch
Arduinoでリレースイッチ(1)-TLP222AF

どもです。 つい先日、やっとのことでリレースイッチを手に入れるこ

c_sharp_eye_catch
外部からMariaDbにアクセスする(2)-C#からMariaDbにアクセスする。

どもです。 前回のエントリで、外部からMariaDbにアクセスす

c_sharp_eye_catch
外部からMariaDbにアクセスする(1)-データベースの設定

どもです。 今回は、Linux上のMariaDbにWindows

think_about_utest
middle_unit
最小…よりも(ほんの)少し大きいテストフレームワーク

どもです。 今回は、単体テストのフレームワークについて書きます。

→もっと見る

PAGE TOP ↑