LoginSignup
34
14

More than 5 years have passed since last update.

メモ:ESP32のSPIについて混乱していることの整理

Last updated at Posted at 2018-03-04

SPIでググるといろんなものがでてくる

SPIでもSPI、VSPI、HSPIの表記があってどれがどれかわからない。

Switch Scienceさんの https://trac.switch-science.com/wiki/esp32_tips#SPI%E9%80%9A%E4%BF%A1 がわかりやすかった。SPI、VSPI、HSPIの3つのモジュールがそれぞれ実装されているとのこと。特に何もしなければVSPIのモジュールが使われるとのこと。

  • SPIは内蔵FLASHとの接続に使われている
  • HSPI - SCK,MISO,MOSI,SS = 14,12,13,15
  • VSPI - SCK,MISO,MOSI,SS = 18,19,23,5

ググると出てくるスケッチや配線図が尽く異なるピンを使ってるのはGPIOマトリックス機能で入れ替えたり、そのスケッチがドサクサに紛れてソフトウェアでSPI通信しているものが混在しているのが混乱の元になっていた。

VSPIとHSPIとはなんなのか?

Googleでいろんなワードで検索したけどズバリ説明しているドキュメントは見つけられなかった。ググって参考になった記事は少しだけあった。

SPIでTFT液晶を動かすことについて

ググって出て来た記事はこの辺り。

Demos for ILI9341-based TFT displays using the Espressif ESP32 が一番参考になった。graphicstest_mod.inoの部分でピンアサインが指定されている。

#define TFT_CS   22  // SS(Slave Select)と表記されたり、CS(Chip Select)と表記されたりするやつ
#define TFT_DC   21  // ググラビリティが悪くて何者か調べてもわからなかったやつ
#define TFT_MOSI 23  // SPIのMOSI(Master Out Slave In)
#define TFT_CLK  19  // SPIのSCLKと表記されたり、CLKを表記されるやつ
#define TFT_RST  18  // LCDのリセット用(SPI関係ない)
#define TFT_MISO 25  // SPIのMISO(Master In Slave Out)
#define TFT_LED   5  // バックライトのON/OFF(SPI関係ない)

Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_MOSI, TFT_CLK, TFT_RST, TFT_MISO);

これはデフォルトの↓のピン配置から変更されているが、繋ぎ変えてあげることはできる。
- HSPI - SCK,MISO,MOSI,SS = 14,12,13,15
- VSPI - SCK,MISO,MOSI,SS = 18,19,23,5

Adafruit_ILI9341のコンストラクタでTFT_MOSI, TFT_CLK, TFT_MISO3つを受け取らないものがあり、そちらに書き換えた場合はVSPIのものに繋ぎ変えてあげると動いた。

疲れたこと

VSPIやHSPIの一次情報にたどり着けず、SPIのDCが何の略で何者なのかが結局わからなかった。

34
14
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
34
14