SSブログ

F-RAM の RAMTRON を買ってきたので FX3 に接続してみる [USB]このエントリーを含むはてなブックマーク#

FX3 DVK と F-RAM を接続

F-RAM というのを入手したので、 FX3SPI FLASH の代わりにできないかと、接続してみました。

F-RAM

F-RAM

使用した F-RAM は、 FM25V20-PG という 2Mibit (256kiByte) の製品です。 DIP パッケージがうれしいじゃないですか。 うまく使えるようだったら、 SOIC パッケージを張り替えてもいいな。

接続表

F-RAM をブレッドボードに置いて、 FX3 DVK のピンヘッダとジャンプワイヤで接続します。 F-RAM のそれぞれの端子は、以下のように接続しています。

FM25V20信号名FX3 DVK
端子番号端子名ヘッダ名ピン番号
1/SSPI-SSN_UART-CTSJ1022
2QSPI-MISO_UART-TXJ1032
3/WVIO4--
4VSSGNDJ348
5DSPI-MOSI_UART_RXJ1042
6CSPI-SCK_UART-RTSJ1012
7/HOLDVIO4--
8VDDVIO4J342

J34 (SPI HEADER) にまとめられると良かったのですが、そのためには基板上の抵抗を取り外さなければなりません。今回は、 SPI-UART 切り替えヘッダの方を使いました。

ブートに使ってみる

SPI FLASH への書き込み

FX3 に接続された SPI FLASH には、 FX3 のファームウェアを格納してブート時にダウンロードすることができます。 そこで、 FX3 Software Development Kit (SDK) に付属しているユーティリティ Control CenterSPI FLASH と同じ要領でファームウェアを書込んでみます。 テストに使用したのは、FX3 DVK直結カメラキット "FX3DVK-Cam F1"の付属ファームウェアです。

すると、難なくファームウェアを書込むことができました。 何の障害もありません。 FX3 DVK をリセットすると、 F-RAM からブートしてカメラが起動しました。

それにしても、デフォルト状態の SPI ブートで使用される SPI クロックは、 10MHz のはずなのですが、こんないい加減なジャンパ配線でも動いちゃうものなのですね。

UsbSpiDmaMode プロジェクトを使ってみる

FX3 SDK には、多くのプロジェクト例が同梱されていて、その中に UsbSpiDmaMode というものがあります。 これは、 FX3 の SPI 端子に接続された外部デバイスを操作する時に参照するように用意されたプロジェクト例で、そのまま SPI FLASH とのインターフェイスに使用することができます。

このプロジェクト例では、コントロール転送でコマンド送ることですべての操作を行っています。 詳細は、プロジェクトディレクトリの "readme.txt" に書いてあります。 まず、さきほどファームウェアを書込んだままの状態で、「USBブート」を行い、 UsbSpiDmaModeRAM にダウンロードして、実行させてみました。

F-RAM からの読み出し

そして、 READ コマンド (0xC3) で先頭の 128 バイトを読み込んでみると、確かにファームウェアイメージが書かれているのが、確認できました。 まあ、このイメージからブートできるので、当然といえば当然です。

ERASE 操作は、可能か

ERASE操作

F-RAM という素子は、不揮発な RAM という位置づけをされています。 そのため、 ERASE という概念は、そもそも存在しません。 試しにコントロール転送から ERASE コマンドを送ってみましたが、問題は発生しません。


ERASE後のSTATUS表示 また、 STATUS コマンドを送信したところ、正常に ERASE が終了したことを示す"00"が返ってきました。

ファームウェアを読んでみると、この ERASE コマンドは、単に ERASE 操作を行い、 STATUS コマンドは WRITE IN PROGRESS (WIP) を返すだけの仕様になっているので、動作そのものに間違いはなさそうです。 そもそも、 F-RAM では、 SPI からデータを送った直後に、実際にメモリ素子に消去・書き込みを行うので、待ち時間はゼロです。 そのため、この WIP ビットも実装されておらず、常に "0" を返すようになっています。 つまり、消去されたつもりになっているのです。


ERASEしたけど消えてない

では、消去されたつもりの領域はどうなっているかというと、このように元のデータが残ったままになっています。 ERASEコマンドを実行したメモリ領域が、実は、消去されていない。 ここだけは、 SPI FLASH との互換性が無いので、注意が必要です。

消去せずに書き込み

いきなり書き込み

F-RAM は、不揮発な RAM なので、消去などせず、いきなり書き込みを行うことができます。 コントロール転送で書き込みコマンドを送信して、最初の11バイトだけに書き込みを行いました。


必要なぶんだけ、書き込み

そして、書き込まれた領域を読み込んでみると、最初の11バイトだけが変更されて、残りの部分については変化していないのがわかります。 もちろん、消去もされていません。

むすび

F-RAM という素子を FX3 DVK に接続して、どんな動きをするのか確認してみました。 ERASE コマンドが実装されていないことで、従来の SPI FLASH を想定していたファームウェアがそのまま使えないのではと考えていたのですが、 ERASE コマンドは適当に無視される仕様であることがわかりました。 ERASE によってデータが消去されずに残ってしまう点だけを注意すれば、 SPI FLASH 向けのファームウェアでも、ある程度は使用可能でしょうか。

参考文献


nice!(0)  コメント(0)  トラックバック(0)  このエントリーを含むはてなブックマーク#

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

トラックバックの受付は締め切りました