#topicpath ** Arduino Tips [#z60736f6] *** SPIを利用する [#m0d7f2a3] - 概要~ SPI(Serial Peripheral Interface) は、マイコンがセンサからデータを取得するための通信方法としてよく使われている。~ 同様にI2C と呼ばれる通信もある。どちらも、基本的には似た方式で通信するが、最近はSPI の方が好まれるようである。~ ~ -- 基本用語~ [[Arduino の日本語リファレンス>http://www.musashinodenpa.com/arduino/ref/index.php?f=1&pos=539]]に準拠する。 --- MISO(Master In Slave Out)~ デバイスの端子名。スレーブ(slave, 奴隷, マイコンから指令を受ける側)からマスタ(master, 主人, マイコン)へデータを送るときの端子。~ スレーブ側では、SDO(Serial Data Out)とかDO(Data Out)と書くこともある。~ ~ --- MOSI(Master Out Slave In)~ デバイスの端子名。マスタからスレーブへデータを送るときの端子。~ スレーブ側では、SDI(Serial Data In)とかDI(Data In)と書くこともある。~ ~ --- SCK(Serial ClocK)~ デバイスの端子名。データ転送を時に用いるクロックを流す端子。~ SCLK と書くこともある。~ ~ --- SS(Slave Select)~ デバイスの端子名。MISO, MOSI, SCK の3つの端子を共通にして、複数のスレーブを1つのマスターに接続することを考える。このとき、~ マスターはどのスレーブと通信しているのか区別しなければならない。そのために、マスター側では、それぞれのスレーブと、個別に SS~ として接続して、マスター側が通信したいスレーブの SS の電圧をゼロにする。スレーブ側はそれを理解して、自分が通信する番なのか、~ それとも待機する番なのかを理解する。~ マスター側にはスレーブの個数だけ SS を用意する。~ スレーブ側は、SS は一つである。スレーブ側の SS は CS(Chip Select)と書くことがある。~ ~ - 実際の接続~ ゆるい規格なので、方言が強いようである。それぞれのチップに応じて対応する。 -- 接続例~ --- [[典型的な Arduino に気圧センサSCP1000を接続する>https://www.arduino.cc/en/Tutorial/BarometricPressureSensor]] --- [[ESP32 に 気圧センサBME280を HSPI で接続する>https://www.mgo-tec.com/blog-entry-esp32-bme280-sensor-library.html]](後半です。) ~ - 参考URL -- [[Arduino の日本語リファレンス>http://www.musashinodenpa.com/arduino/ref/index.php?f=1&pos=539]] -- [[「SPI」の解説>https://synapse.kyoto/glossary/glossary.php?word=SPI]]