0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

RX65N版GR-CITRUSからFRAMをアクセスする

Last updated at Posted at 2020-05-23

RX65N版GR-CITRUSとFRAMブレイクアウトボード

2020-05-23 23-05-41.jpg

RX65N-2MBに貼り替えたGR-CITRUSのArduino環境を作成しているのですが、SPI経由のSDカードの通信がうまくいかないためSPI通信の確認がしやすそうなFRAMの組み合わせで通信を試みました。

Adafruit社がリリースされているArduino向けのサンプルコードがArduiuno UNO R3で動くことをまず確認しました。

続いてGR-CITRUS(RX65N-2MB)のWebコンパイラ環境で同ライブラリをコンパイルしたのですが、二点ハマるところがありました。

SPI.hの修正点

Adafruit_FRAM_SPI.cpp/hはAdafruit社が独自に作成したAdafruit_SPIDevice.cpp/hとlib下のSPI.cpp/hを両方とも参照するのですが、GR-ROSEのArduinoライブラリのSPI.hで存在自体が消されている関数transfer(引数が2つ版)を参照しておりエラーの原因となっていました。今回はSPIのアクセスで使用しないため空の関数としましたが、他のデバイスを使用した時に具体的に関数の内容の定義が必要となりそうです。

SPI.h
# ifndef __RX600__
  inline static void transfer(void *buf, size_t count) {
  //(略)
  }
  
//Add for GR-CITRUS_D (Adafruit lib need this  200523)
# else
  inline static void transfer(void *buf, size_t count) {
    /*
    */
  }
# endif //__RX600__

Adafruit_SPIDevice.hの修正点

こちらは難しくないのですが、マイコンのdefineでMSB/LSBFIRSTの記述が切り替えられている箇所でルネサスのMCUの定義がないためエラーとなります。下記の定義を追加すればいいのですが、後発のSONYのSPRESENSEの定義が普通にあるのでこの辺は企業努力の差が出ています。

Adafruit_SPIDevice.h(記述追加)
typedef enum _BitOrder {
  SPI_BITORDER_MSBFIRST = MSBFIRST,
  SPI_BITORDER_LSBFIRST = LSBFIRST,
} BitOrder;

感想

SPIの通信が確認できたためSCI,I2C,DIO,AIO含め各端子の機能確認は残すはIntのみとなりました。
FRAMでいえば大容量(4Mb程度)のFRAMのディスクリート版が近々出るということで、RX65Dと組み合わせた活用を考えていきたいところです。

0
0
0

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?