RX631のデータフラッシュ導入
いままで誰の役にも立たないようなブログばかり書いてきたので、今回は真剣に誰かの役に立ちそうな話題です。
去年SH7125を使ってステッパーマウスを作っていましたが、このマイコンにはSPI,I²Cが使えないなどいろいろ不便な点がありました。
その中の1つにデータフラッシュが使えない、というものがあります。
折角探索走行完了したのにうっかり電源落としちゃって迷路データが一瞬で"ぱぁ"に、そんな経験がある人もいるのではないでしょうか?
はたまた最短などの調整中にいちいち探索して最短して~なんて時間を浪費している人もいるかもしれません。(←僕とか)
こんな時データフラッシュが使えるととても幸せになれるのです!(きっと)
データフラッシュ(E2データフラッシュ)とはデータ格納用のフラッシュメモリでRX631では32Kバイト内臓されています。
そこで今回はその設定の仕方について個人的にわかりにくかった点を中心にまとめていきたいと思います。
まず何をもとに設定していくかですが大きく分けて
- サンプルプログラムを使う
- Renesasのクイックラーニングを活用する
という2つの方法が考えられます。
ここでは2つ目のクイックラーニングを用いる方法についてまとめていきます。
サンプルプログラムを使った方法に関しては偉大な先輩がすでにまとめていますのでそちらを参考にしてしてください。
また、データフラッシュ完全に理解したマンではないので仕様の理解や使い方に間違いがあるかもしれません、ご注意ください。
では始めます
まずRenesasのクイックラーニングのサイトを開きます。
登録等が必要な気がしますがその辺は各々やってください。
ここではこの中のデータフラッシュ編を参考にしていきます。
他の編も必要があれば参考にするといいと思います。
66枚スライド・21分もありますが序盤は概要なので一度見たら飛ばしていいと思います。
基本的にはここに書いてあるように設定してあげればよく、
- FCU RAMへコピーする関数
- 周辺クロック通知関数
- (ブランクチェック関数)
- 消去関数
- 書き込み関数
- 読み出し許可関数
を作成し、あとは示されているmain関数の通り配置してあげれば基本的には勝ちです。
ただし、このスライドはRX62N用であり、RX631で使用するにはいくつか変更が必要となっています。
- クロックの設定(FCLK)←各々設定を確認
- 書き込みは2byteじゃないといけないので書き込み関数のforループが不要
- 書き込み関数内のコマンド0x04→0x01に
- (ブランクチェック関数にも問題有り?)
といった感じです。
これらはRX631のデータシートを見ながら設定しましょう。
ブラックチェック関数についてはエラーが出てしまったため使用していないのでわかりません。
エラーが出るようなら使わないか、データシートとにらめっこしてください。
何か書き漏らしがあるかもしれませんが基本的にはこれで動作するはずです。
動かないときはエラーがそこで出ているのか確認し、どんなエラーが出ているのかも確認しましょう。
ここまでがうまくいくとデータフラッシュが一応使えるようになると思います。
詳しい使い方や迷路保存の方法はまだ実装してないので、各々頑張ってください。
もしかすると今後ブログで公開するかもしれませんが...
また、この段階ではパソコンからの書き込みでデータが変更されてしまいます。
これを防ぐ方法はこちらのブログを参考に。
ではでは。
F