*

ライブラリで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通信でセンサー、センサーを搭載したチップと通信する方法について紹介する予定です。

ではっ!

関連記事

toppers

C言語でEV3開発(16)-TOPPERS/HRP2 EV3 で Bluetooth割込み

どもです。 今回は、EV3 の環境をTOPPERS/HRP2 EV3RT で作成したアプリをPC上

記事を読む

MY_MFC_LOGO

MFCプログラミング(4):Enter(ESC)キーでダイアログが閉じないようにする

どもです。 今回は、キーボード入力の処理、特にEnterキー/ESCキーでダイアログが閉じられるこ

記事を読む

eclipse-juno-logo

C言語でEV3開発(1)

どもです。 2回目の投稿。 本格的な投稿としては、初めての投稿になります。 内容は、LEG

記事を読む

GitHub

Windowsでのカバレッジ測定-OpenCppCoverageを使ってみた(1)

どもです。 ここ最近、Windows上で開発を行っています。 その際に、当然単体テストを行うので

記事を読む

RasPi_Qt

QtでRaspberryPi/GUI開発(12)-gpioの状態をGUIに反映する

どもです。 今回は、gpioピンの状態(HIGH/LOW)の変化を画面上に即座に反映する方法につい

記事を読む

raspberry-pi

QtでRaspberryPi/GUI開発(1):ためしに時計を作ってみた

どもです。 また更新の間隔が空いてしまいました。 久しぶりの更新です。 前回のエントリーで

記事を読む

Qt_logo_2016

QtでRaspberryPi/GUI開発(2):ためしに時計を作ってみた(其の弐)

どもです。 前回のエントリーでは、ラジオボタンのグループ化と、選択されたボタンの特定方法まで記載し

記事を読む

toppers

C言語でEV3開発(24)-APIの実行時間を測定してみた。

どもです。 今回、以前から気になっていた、開発環境/プラットフォームであるTOPPERS HRP2

記事を読む

toppers

C言語でEV3開発(28)-EV3の移動距離を計算できるようにしてみた

どもです。 今回は、Ev3の移動距離の算出についてです。 1.算出方法について 移動距離は

記事を読む

google_test

C言語でEV3開発(6)

どもです。 今回のエントリーは、前回のエントリーの続き、google testでの単体テスト環境に

記事を読む

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="">

c_sharp_eye_catch
Windowsでのカバレッジ測定-OpenCoverageを使ってみた

どもです。 以前、OpenCppCoverageを使用してWindo

EF_GRY-OR_png
Eclipseで単体テストするときの注意点(?)

どもです。 今回のエントリは、Eclipse/cygwinで単体

cygwin_my_image
Windows10/cygwinの音を消す

どもです。 最近、Windows10/cygwinで作業をする場

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

どもです。 今回のエントリも、前回に引き続き、Raspberry

cygwin_my_image
cygwinでstartコマンド

どもです。 このエントリでは、cygwinでWindows/コマ

→もっと見る

PAGE TOP ↑