Arduino UNOで SPI接続のSRAM(23LC1024)を使ってみる
なぜSRAM?
足りないからです!w
ArduinoのIC、ATmega328Pは 2Kbyteしか SRAMが搭載されていません!
いろいろな変数も使うことを考慮すると、大きなバッファーが使いたいときでも、せいぜい1Kbyteくらいの配列しか使えません。
※注意!:これはSRAMではありません!!!Lambですらなくたぶんマトンです。しかし可愛い。。。。
これじゃ足りない!増設したい!
※注意!:こいつらもSRAMではありません。
こんくらいに!!!
23LC1024を選ぶまで
誠に残念ながら羊画像は終わりです。先に進みます。
というわけで、RAMを外付けする方法ないかな?と思って、探してみました。
工作ヘタなのでDIP(スルーホール)実装前提です。SMDは(ハンダ漬け技術的に)ムリなので見向きもしません!
1. スイッチサイエンス シリアルSRAMモジュール 23K256
これは、23K256という256Kbit(=32Kbyte)のSRAMモジュールです。
735円で、穴にケーブルかピン実装するだけで使えます。
使い方も、なんでも作っちゃう、かも。 Arduinoで遊ぼう - シリアルSRAMを使ってメモリを拡張するで紹介されている方法が使えそうです。
一番簡単そう。
2. 23K256を単体で
1コ使うだけなら、上記スイッチサイエンスのモジュールでいいけど、部品代で735円は高いなぁ、というわけで、上記モジュールで使ってる23K256はどう?
ということで、探してみました。
手に入れやすいのは、下記かな?
5個で746円(税込み)
3Vで使えば、これで良さそうですね。
3. 23LC1024
でも、5Vでも使いたいよね。と、23K256のメーカーのページを見てたら、5Vでも動くSRAMを発見。23LC1024。容量さらに多い128Kbyte。これなら結構使えそう。
23LC1024 2個
値段は倍。容量は4倍。5Vでも使える。
2個で593円。
23K256を5Vで使うには電圧変換用の部品も要るし、こっちの方が結果として安く上がる気が。
というわけで、23LC1024を買って使ってみることにしました。(基本はセコいからですw)
SRAMを繋ぐ
さて、23LC1024が届いたので、早速Arduinoと繋いでみたいんだけど繋ぎ方がわからない。
23LC1024の繋ぎ方をいろいろググっても、なかなか出てこないw
23K256の場合は、前述のなんでも作っちゃう、かも。さんで紹介されている。
仕方ないので、23K256と23LC1024とデータシートを見比べてみる。
23K256 データシート P.1
23LC1024 データシート P.13
2cLC1024の方はSPIだけでなく、SDIやSQIという繋ぎ方にも対応している模様。
Arduino側がSDIやSQIで使えるのか解らないので、SPIでいい。
そうなると、素人目には23K256と一緒に見える。(23K256のP.1と23LC1024のP.13)
※左が23K256、右が23LC1024
というわけで、先に紹介したなんでも作っちゃう、かも。さんの配線を参考に、外付けボードを作り、これで実験してみる作戦に。
しかし、D10のピン邪魔だなぁ。。なぜコイツだけ
ICSP側に端子出てないの?これで合ってるのか?
上記サイトを見ると、
Note about Slave Select (SS) pin on AVR based boards
All AVR based boards have an SS pin that is useful when they act as a slave controlled by an external master.
とか書いてある。
Arduinoマスターにするんなら繋がなくていいのでは?
など疑問を持ちつつも、こうしたことは、いろいろ触ってみるうちに明らかになると信じて、とりあえず作っちまったことだし、繋がなくてよいなら外せばいいだけだし、ということで実験開始することにしました。
実験開始
23LC1024 SRAM Library を使ってみる
ボードが出来たので、早速Arduinoのスケッチを書いて動かしてみようと思います。
グーグル先生に聞いたら、ライブラリを紹介して頂きましたので、ありがたく使わせていただきたいと思います。
ライブラリをインストールすると、 SpiRAM_Test.ino
というサンプルが付いてきます。
早速使ってみましょう。
そのまま何も考えず、Arduinoに書き込んで実行!
....あれ?動かない。
ソースを確認してみると、
どうやら、ピンが違ってたようですね。
SSをD9に刺し直して、Arduino再起動!(USB抜き刺し)
あっさり、サンプルが動きました。
RAMの読み書き、とりあえず出来ているようです。
まとめ
というわけで、本当の実験はこれからなのですが、とりあえずSRAM使いたいけど、どうしようか?
と悩んでる3日前の私のような人の助けになるかもしれないので、メモしときました。
私もこれから使い始めるところなので、何かあったら更新します。
他にももっと便利なライブラリあるよ〜!とか、紹介して頂けたらうれしいです。
最後に、可愛い羊画像リンクを貼っておきます。